请大家帮我看一下这个c语言程序

本题要求输入一个日期,输出第二天日期,用"月/日/年"格式。本人程序无法答对,请大家帮忙修改,程序如下:#include<stdio.h>intpr(intn){if(n... 本题要求输入一个日期,输出第二天日期,用"月/日/年"格式。本人程序无法答对,请大家帮忙修改,程序如下:
#include<stdio.h>
int pr(int n)
{
if(n%4==0&&(n%100!=0||n%400==0))
return 1;
else return 0;
}
int main()
{
int n,y,r,n1,y1,r1;
scanf("%d/%d/%d",&y,&r,&n);
if(pr(n)==1){if(y==2&&r==29){y1=3;r1=1;n1=n;}
else{y1=y;r1=r+1;n1=n;}}
if(pr(n)==0){if(y==2&&r==28){y1=3;r1=1;n1=n;}
else{y1=y;r1=r+1;n1=n;}}
if(y==1){if(r==31){y1=2;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==3){if(r==31){y1=4;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==4){if(r==30){y1=5;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==5){if(r==31){y1=6;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==6){if(r==30){y1=7;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==7){if(r==31){y1=8;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==8){if(r==31){y1=9;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==9){if(r==30){y1=10;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==10){if(r==31){y1=11;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==11){if(r==30){y1=12;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==12){if(r==31){y1=1;r1=1;n1=n+1;}else{y1=y;r1=r+1;n1=n;}}
printf("%d/%d/%d",y1,r1,n1);
}
能给出源代码更好
展开
 我来答
zubyzuby
2008-07-08 · TA获得超过1539个赞
知道小有建树答主
回答量:1118
采纳率:100%
帮助的人:1204万
展开全部
#include <stdio.h>

int judge(int y,int m,int d)
{
int flag; /*用来返回判断结果,flag=0表示输入的日期不对,flag=1表示输入的日期正确*/

if(m<1 || m >12) /*月份当然只能是1-12*/
return 0;

switch(m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(d<1 || d >31) /*大月有31天*/
flag=0;
else flag=1;
break;
case 4:
case 6:
case 9:
case 11:
if(d<1 || d >30) /*小月只有30天*/
flag=0;
else flag=1;
break;
case 2: /*2月平年28天,闰年29天*/
if(y%4==0&&y%100!=0||y%400==0) /*能被4整除并且不能被100整除或者能被400整除就是闰年*/
{
if(d<1 || d>29) /*闰年29天*/
flag=0;
else
flag=1;}
else
{if(d<1||d>28) /*平年28天*/
flag=0;
else
flag=1;}
break;

}
return flag;
}

main()
{
int y,m,d;
scanf("%d %d %d",&y,&m,&d);
if(judge(y,m,d))
{
switch(m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(d<31) /*没到月底,日加一天*/
{d=d+1;}
else if(m<12) /*到了月底,小于12月只改月和日,比如2007年10月31日->2007年11月1日*/
{m=m+1;d=1;}
else /*12月底,改年,月和日,比如2007年12月31日->2008年1月1日*/
{y++;m=1;d=1;}

break;
case 4:
case 6:
case 9:
case 11:
if(d<30) /*没到月底,日加一天*/
d++;
else /*到了月底,改月和日*/
{d=1;m++;}
break;
case 2:
if(y%4==0&&y%100!=0||y%400==0)
{
/*闰年29天*/
if(d<29) /*没到月底,日加一天*/
d++;
else /*到了月底,改月和日*/
{d=1;m++;}
}
else
/*平年28天,不是29天*/
{if(d<28)/*没到月底,日加一天*/
d++;
else /*到了月底,改月和日*/
{d=1;m++;}
break; }}

printf("next day is %d %d %d\n",y,m,d);}
else
printf("not valid date");
getch();
}
老二闪
2008-07-08
知道答主
回答量:44
采纳率:0%
帮助的人:26.2万
展开全部
#include<stdio.h>
int pr(int n)
{
if((n%4==0&&n%100!=0)||n%400==0)
return 1;
else return 0;
}
int main()
{
int n,y,r,n1,y1,r1;
scanf("%d/%d/%d",&y,&r,&n);
if(pr(n)==1)
{
if(y==2)
{
if (r=29)
y1=3;r1=1;n1=n;
else
y1=2;r1=r+1;n1=n
}
if(y==1){if(r==31){y1=2;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==3){if(r==31){y1=4;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==4){if(r==30){y1=5;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==5){if(r==31){y1=6;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==6){if(r==30){y1=7;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==7){if(r==31){y1=8;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==8){if(r==31){y1=9;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==9){if(r==30){y1=10;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==10){if(r==31){y1=11;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==11){if(r==30){y1=12;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==12){if(r==31){y1=1;r1=1;n1=n+1;}else{y1=y;r1=r+1;n1=n;}}

if(pr(n)==0){if(y==2&&r==28){y1=3;r1=1;n1=n;}
else{y1=y;r1=r+1;n1=n;}}
if(y==1){if(r==31){y1=2;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==3){if(r==31){y1=4;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==4){if(r==30){y1=5;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==5){if(r==31){y1=6;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==6){if(r==30){y1=7;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==7){if(r==31){y1=8;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==8){if(r==31){y1=9;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==9){if(r==30){y1=10;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==10){if(r==31){y1=11;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==11){if(r==30){y1=12;r1=1;n1=n;}else{y1=y;r1=r+1;n1=n;}}
if(y==12){if(r==31){y1=1;r1=1;n1=n+1;}else{y1=y;r1=r+1;n1=n;}}
printf("%d/%d/%d",y1,r1,n1);
}
这种方法太复杂了,其实用switch语句可能会更简单些,闰年的计算方式你算错了,还有就是想的不全面
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式