给定某年某月某日,将其转换成这一年的第几天并输出(系统没有报错就是结果是个很大的负值)
你的输入是逗号分割么?一个很大的负数明显是有变量没有初始化。
另外代码有两个bug
(1)闰年的判断算法错了
(2)pd1的return num如果是循环内,循环忘记打上括号,否则不要缩进。
贴子的图片补充。。。。。。。。
#include <stdio.h>
#include <process.h>
void main()
{
int y,m,d,days,flag;
flag=0;
scanf("%d%d%d",&y,&m,&d);
if(y%400==0||y%4==0&&y%100!=0)
flag=1;
if (m<1||m>12)
{
printf("输入月份有错\n");
exit(0);
}
else
{
if (!flag&&m==2&&(d<1||d>28))
{
printf("输入日期有错\n");exit(0);}
if (flag&&m==2&&(d<1||d>29))
{
printf("输入日期有错\n");exit(0);}
if ((m==4||m==9||m==11)&&(d<1||d>30))
{
printf("输入日期有错\n");exit(0);}
if ((m==1||m==3||m==5||m==7||m==8||m==10)&&(d<1||d>31))
{
printf("输入日期有错\n");exit(0);}
switch(m)
{
case 1:days=0;break;
case 2:days=31;break;
case 3:days=31+28;break;
case 4:days=31+28+31;break;
case 5:days=31+28+31+30;break;
case 6:days=31+28+31+30+31;break;
case 7:days=31+28+31+30+31+30;break;
case 8:days=31+28+31+30+31+30+31;break;
case 9:days=31+28+31+30+31+30+31+31;break;
case 10:days=31+28+31+30+31+30+31+31+30;break;
case 11:days=31+28+31+30+31+30+31+31+30+31;break;
case 12:days=31+28+31+30+31+30+31+31+30+31+30;break;
};
days=days+d;
if (m>2)
days=days+flag;
printf("%d%d%d%d,y,m,d,days");
}
}
为啥图片看不到?。。。。。
没时间仔细看,就提一点,逻辑有错误,闰年的判定方式是,整除4并且不能整除100,或者整除400,你这就整除4是不行的