早教吧作业答案频道 -->其他-->
现有两个不同的char型变量,取值为年月(yyyymm),要写一个循环取出他们之间的取值,例如:char1=‘201110’;char2=‘201203’;取出for循环取值分别为201110201111201112201201201202201203用C++
题目详情
现有两个不同的char型变量,取值为年月(yyyymm),要写一个循环取出他们之间的取值,例如:char1 = ‘201110’; char2 = ‘201203’; 取出 for循环取值分别为 201110 201111 201112 201201 201202 201203
用C++
用C++
▼优质解答
答案和解析
基本上是用C写的,子函数改下try..catch那部分,就可以用C编译了.
生成的字符串是用空格分开的,单个使用的话用strtok就行了.
#include
#include
#include
using namespace std;
char* getInnerDate(char *char1,char *char2)
{
char *p1,*p2,*sRet,*pRet;
int yy1,mm1,yy2,mm2,mm,m,y;
char buff[10];
// Swap date string order.
if( strcmp(char2,char1) >= 0){
p1 = char1;
p2 = char2;
}else{
p1 = char2;
p2 = char1;
}
// Translate to year & month.
try{
strncpy(buff,p1,6);
buff[6] = 0;
mm1 = atoi(&buff[4]);
buff[4] = 0;
yy1 = atoi(buff);
strncpy(buff,p2,6);
buff[6] = 0;
mm2 = atoi(&buff[4]);
buff[4] = 0;
yy2 = atoi(buff);
}catch(...){
return NULL;
}
// Total months between 2 date strings.
mm2 += (yy2 - yy1) * 12 + 1;
sRet = (char*)malloc((mm2*7 + 1)*sizeof(char));
if(NULL != sRet){
pRet = sRet;
y = yy1;
m = mm1;
for(int mm=mm1; mm 12){
m -= 12;
y ++;
}
sprintf(pRet,"%04d%02d ",y,m);
m++;
pRet += 7;
}
}
return sRet;
}
int main(void)
{
char char1[]="201110",char2[]="201203";
char *p;
if(NULL != (p = getInnerDate(char1,char2))){
cout
生成的字符串是用空格分开的,单个使用的话用strtok就行了.
#include
#include
#include
using namespace std;
char* getInnerDate(char *char1,char *char2)
{
char *p1,*p2,*sRet,*pRet;
int yy1,mm1,yy2,mm2,mm,m,y;
char buff[10];
// Swap date string order.
if( strcmp(char2,char1) >= 0){
p1 = char1;
p2 = char2;
}else{
p1 = char2;
p2 = char1;
}
// Translate to year & month.
try{
strncpy(buff,p1,6);
buff[6] = 0;
mm1 = atoi(&buff[4]);
buff[4] = 0;
yy1 = atoi(buff);
strncpy(buff,p2,6);
buff[6] = 0;
mm2 = atoi(&buff[4]);
buff[4] = 0;
yy2 = atoi(buff);
}catch(...){
return NULL;
}
// Total months between 2 date strings.
mm2 += (yy2 - yy1) * 12 + 1;
sRet = (char*)malloc((mm2*7 + 1)*sizeof(char));
if(NULL != sRet){
pRet = sRet;
y = yy1;
m = mm1;
for(int mm=mm1; mm 12){
m -= 12;
y ++;
}
sprintf(pRet,"%04d%02d ",y,m);
m++;
pRet += 7;
}
}
return sRet;
}
int main(void)
{
char char1[]="201110",char2[]="201203";
char *p;
if(NULL != (p = getInnerDate(char1,char2))){
cout
看了 现有两个不同的char型变量...的网友还看了以下:
已知三角形ABC外接圆半径为3,a,b,c 为三边,面积为a^2-(c-b)^2,sinC+sin 2020-05-13 …
1.因为l1⊥l3,l2⊥l3,所以l1⊥l2()2.因为∠1∠2互余,所以∠1+∠2=90°() 2020-05-14 …
二重积分问题:f(x,y)=(R^2-x^2-y^2)^1/2;区域D为x^2+y^2=Rx;R为 2020-06-06 …
如图,已知椭圆C:x∧2/a∧2+y∧2/b∧2=1的离心率为√3/2,左焦点F(-c,0)到直线 2020-06-21 …
已知f(x+2)的定义域为1,2,求f(2x+1)的定义域解法:由于f(x+2)的定义域是1,2, 2020-06-25 …
已知函数f(x)的定义域为[0,2],则函数g(x)=f(x+1/2)+f(x-1/2)的定义域为 2020-06-25 …
己知椭圆C的方程为x^2/4m^2+y^2/3m^2=1(m>0),F为椭圆的左焦点,己知椭圆C的 2020-07-31 …
无穷等比数列各项之和为9/4,各项平方和为81/8,各项立方和为?而各项平方之后,所成的新数列首项 2020-07-31 …
急~实数x,y,z满足x+y+z=0且x^2+y^2+z^2=1.记m为x^2,y^2,z^2中的最 2020-11-01 …
因为f(x+2)是偶函数,所以f(x)有对称轴为x=2,为什么?(这句话一定对,不要说不对)答的对有 2021-02-02 …