永发信息网

求一小段C语言程序

答案:5  悬赏:0  手机版
解决时间 2021-04-15 18:28
  • 提问者网友:暮烟疏雨之际
  • 2021-04-15 01:43
求一小段C语言程序
最佳答案
  • 五星知识达人网友:神的生死簿
  • 2021-04-15 03:17
我编好了
#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楼网友:佘樂
  • 2021-04-15 06:47
不知道这样行不行:
#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();
}
}
  • 2楼网友:三千妖杀
  • 2021-04-15 06:23
我编好了
#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; //能则是闰年
}
}
编译通过,有不明白的地方可以发消息问我
  • 3楼网友:洎扰庸人
  • 2021-04-15 05:59
1.i,j 是字符型变量,只能接受单个字符,你输入的是什么字符,请给一个例子
2.单独利用 i++ ,j-- 控制时日期是不可行的,你是不是没有说请楚,i,j 到底是用来干什么的?
  • 4楼网友:野慌
  • 2021-04-15 04:38
时间没你想的那么简单,一年有12个月,月的天数是不同的,有28,29,30,31,在相应的月到达最后一天时,下一天归1,相应的返回去的话,归到相应的28,29,30,31.首先要判断这年是平年还是闰年,然后根据不同的月判断该月的天数.程序可以做到条目清晰,要做到简练的话,可能达不到上面的效果.本人不会单片机,但专业是软件工程,仅在程序设计上给你一点建议.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯