永发信息网

求一小段C语言程序

答案:5  悬赏:0  手机版
解决时间 2021-04-15 18:28
求一小段C语言程序
最佳答案
我编好了
#include

int limit[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}};
long date[3]={2009,3,27};

void showmenu();
void inputdate();
void adddate();
void minusdate();
void showdate();
int runnian();

void main()
{
showmenu();
}

void showmenu()
{
int t;
do
{
t=0;
printf("按数字键选择相应功能:\n");
printf("1.输入日期\n2.天数加一\n3.天数减一\n4.查看日期\n");
char select;
scanf("%s",&select);
switch(select)
{
case '1':inputdate();break;
case '2':adddate();break;
case '3':minusdate();break;
case '4':showdate();break;
default:t=1;break;
}
}while(t);
}

void inputdate()
{
printf("请输入年、月、日:\n");
for(int i=0;i<3;i++)
scanf("%ld",&date[i]);
showmenu();
}

void adddate()
{
date[2]++;
int t=runnian();
switch(t)
{
case 1:

if(date[2]>limit[1][date[1]])
{
date[2]=1;
date[1]++;
if(date[1]>12)
{
date[1]=1;
date[0]++;
}
}
break;
case 0:
if(date[2]>limit[0][date[1]])
{
date[2]=1;
date[1]++;
if(date[1]>12)
{
date[1]=1;
date[0]++;
}
}
break;
}
printf("日期成功加一天\n");
showmenu();
}

void minusdate()
{
date[2]--;
int t=runnian();
switch(t)
{
case 1:
if(date[2]==0)
{
date[1]--;
date[2]=limit[1][date[1]];
if(date[1]==0)
{
date[2]=31;
date[1]=12;
date[0]--;

}
}
break;
case 0:
if(date[2]==0)
{
date[1]--;
date[2]=limit[0][date[1]];
if(date[1]==0)
{
date[2]=31;
date[1]=12;
date[0]--;
}
}
break;
}
printf("日期成功减一天\n");
showmenu();
}

void showdate()
{
printf("当前的日期是:\n");
printf("%ld年%ld月%ld日.\n",date[0],date[1],date[2]);
showmenu();
}

int runnian()
{
switch(date[0]%100)//先检查要判断的年份是否为整百数
{
case 0: //如果是整百数的话
if(date[0]%400)//就检查能否被400整除
return 0; //不能就不是闰年
else
return 1; //能则是闰年
break;
default: //不是整百数的话
if(date[0]%4) //就检查能否被4整除
return 0; //不能就不是闰年
else
return 1; //能则是闰年
}
}

他已经正确解答 你就把分给他吧

你上面的日期定义有问题不能这么定义的 字符变量不能接受你的整数变量的
全部回答
不知道这样行不行:
#include
long conversion(char *p)
{
long value=0;
while(*p!='\0')
{
if(*p=='-')
p++;
else
{
value=value*10+*p-'0';
p++;
}
}
return value;
}
void main()
{
unsigned char tableDate[]="2009-03-27";
unsigned char i,j,ch;
long year,month,day;
long date;
date=conversion(tableDate);
year=date/10000;
month=(date/100)%100;
day=date%100;
ch=getchar();
while(ch!='\n')
{
if(ch=='i')
day++;
if(ch=='j')
day--;
if(day>31)
{
day=1;
month++;
}
if(month>12)
{
month=1;
year++;
}
printf("%ld-%ld-%ld\n",year,month,day);
getchar();
ch=getchar();
}
}
我编好了
#include
int limit[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}};
long date[3]={2009,3,27};
void showmenu();
void inputdate();
void adddate();
void minusdate();
void showdate();
int runnian();
void main()
{
showmenu();
}
void showmenu()
{
int t;
do
{
t=0;
printf("按数字键选择相应功能:\n");
printf("1.输入日期\n2.天数加一\n3.天数减一\n4.查看日期\n");
char select;
scanf("%s",&select);
switch(select)
{
case '1':inputdate();break;
case '2':adddate();break;
case '3':minusdate();break;
case '4':showdate();break;
default:t=1;break;
}
}while(t);
}
void inputdate()
{
printf("请输入年、月、日:\n");
for(int i=0;i<3;i++)
scanf("%ld",&date[i]);
showmenu();
}
void adddate()
{
date[2]++;
int t=runnian();
switch(t)
{
case 1:

if(date[2]>limit[1][date[1]])
{
date[2]=1;
date[1]++;
if(date[1]>12)
{
date[1]=1;
date[0]++;
}
}
break;
case 0:
if(date[2]>limit[0][date[1]])
{
date[2]=1;
date[1]++;
if(date[1]>12)
{
date[1]=1;
date[0]++;
}
}
break;
}
printf("日期成功加一天\n");
showmenu();
}
void minusdate()
{
date[2]--;
int t=runnian();
switch(t)
{
case 1:
if(date[2]==0)
{
date[1]--;
date[2]=limit[1][date[1]];
if(date[1]==0)
{
date[2]=31;
date[1]=12;
date[0]--;
}
}
break;
case 0:
if(date[2]==0)
{
date[1]--;
date[2]=limit[0][date[1]];
if(date[1]==0)
{
date[2]=31;
date[1]=12;
date[0]--;
}
}
break;
}
printf("日期成功减一天\n");
showmenu();
}
void showdate()
{
printf("当前的日期是:\n");
printf("%ld年%ld月%ld日.\n",date[0],date[1],date[2]);
showmenu();
}
int runnian()
{
switch(date[0]%100)//先检查要判断的年份是否为整百数
{
case 0: //如果是整百数的话
if(date[0]%400)//就检查能否被400整除
return 0; //不能就不是闰年
else
return 1; //能则是闰年
break;
default: //不是整百数的话
if(date[0]%4) //就检查能否被4整除
return 0; //不能就不是闰年
else
return 1; //能则是闰年
}
}
编译通过,有不明白的地方可以发消息问我
1.i,j 是字符型变量,只能接受单个字符,你输入的是什么字符,请给一个例子
2.单独利用 i++ ,j-- 控制时日期是不可行的,你是不是没有说请楚,i,j 到底是用来干什么的?
时间没你想的那么简单,一年有12个月,月的天数是不同的,有28,29,30,31,在相应的月到达最后一天时,下一天归1,相应的返回去的话,归到相应的28,29,30,31.首先要判断这年是平年还是闰年,然后根据不同的月判断该月的天数.程序可以做到条目清晰,要做到简练的话,可能达不到上面的效果.本人不会单片机,但专业是软件工程,仅在程序设计上给你一点建议.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
09年10月17日中午12时07分出生的男孩取名:张
求《生化危机1》pc单机游戏
轮胎被钉了一个小眼,慢慢的漏,补过了,但还
第一次见男方家长该做些什么说些什么?
问问怎样点辆?
贷款超市有哪些比较好的?
两个美女赤身裸体去大海洗澡猜成语
小岛酒吧地址有知道的么?有点事想过去
订婚戒指怎样挑选好啊?
我属哪种鼻炎?该用什么药治?
你们上网最先做的是什么呢?
求个没病毒的用迅雷下载的qq旋舞 要完整的
内乡同性恋去哪里找
如何在电脑端玩fgo日服
我的显卡本来是512 的为什么现在成了256的了
推荐资讯
求问坯布做成成品,门幅和经纬密变了多少?
为什么我下的梦幻西游不能安装?
为什么我跟对象在一起半年,却像过了一辈子?
逻辑推理是化学学习常用的思维方法,下列逻辑
粗粮都有那些
中文翻译梵文 藏文字体 第一百三十四
阿怎么组词,扰的多音字组词
记者如何抢先采访
基范和强仁会在二巡come back吗?
君子如兰什么意思,君子如兰是比喻什么
不上网怎么架一个单机的传奇出来自己玩?
诗翁彼豆故事集适合什么年龄段
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?