早教吧作业答案频道 -->其他-->
现有两个不同的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型变量...的网友还看了以下:
英语翻译1.应该积极配合他们,主动帮助他们,尽量节省时间,提高效率,避免不必要的问题出现.2.有的 2020-05-16 …
1.学校新近一批设备共由若干个小箱组成让某班同学去运若没人8箱还余16箱,若每人9箱,还缺少32箱 2020-06-03 …
12个乒乓球,其中有一个质量不同,现在有一个天枰没砝码和刻度.问:使用天枰最少几次能找出那个质量不 2020-06-25 …
有六个外形相同的球,其中五个质量相同,一个不同,现在有一台秤,请称量3次,求出2种球的质量并找出质 2020-06-25 …
.(汗.--)某旅游点有一家招待所.有客房两层.已知底楼客房比二楼少一间,各个房间住的人数与这层楼 2020-07-20 …
在243个乒乓球中有一个废品,废品比合格品轻,其余重量相同,现在有一架无砝码的天平,最少要称几次就一 2020-11-24 …
小高考生物题,一定要慎重解答!细胞有丝分裂最重要的特征是1有方垂体出现2有染色体复制和染色体的平均分 2020-12-02 …
益智题,有兴趣请参与.有12个大小颜色相同的球,其中11个质量相同.现在,有一个天平,你可以使用它三 2020-12-19 …
一道益智的数学题(找不同思维的答案)十个物件其中有一个质量不同.现在有个天平称,你能帮我找出质量不同 2020-12-19 …
数学题~急!1.有红黄蓝三种颜色的球各10个,混在一个布袋里,一次摸出13个球,其中至少有几个球市同 2021-01-09 …