在循环里再加一个str[1]=28;(如下)就对了。这个东西有时候确实很郁闷,看对了,就是不知道错在哪里。所以还是要细心一点。。。
#include
int main(void)
{
int a,b,c,i,sum;
int str[]={31,28,31,30,31,30,31,31,30,31,30,31};
while(scanf("%d/%d/%d",&a,&b,&c)!=EOF)
{
sum=0;
str[1]=28;
if((a%4==0&&a%100!=0)||(a%400==0))
str[1]=29;
for(i=0;i
sum+=c;
printf("%d\n",sum);
}
return 0;
}
你这个程序就功能来说没有一点错误,只是唯一的问题就是你的循环没有给它一个结束的条件,虽然你这里设定了scanf错误的时候会退出,可是即使你只输入一个0,scanf依然执行正确的,所以也就是说while循环永远持续,我把你的程序做了一个改动,当输入的年月日其中有一个为0的时候推出循环。
#include
int main(void)
{
int a,b,c,i,sum;
int str[]={31,28,31,30,31,30,31,31,30,31,30,31};
do
{
scanf("%d/%d/%d",&a,&b,&c);
sum=0;
if((a%4==0&&a%100!=0)||(a%400==0))
str[1]=29;
for(i=0;i
sum+=c;
printf("%d\n",sum);
}while((a!=0)&&(b!=0)&&(c!=0));
return 0;
}
if((a%4==0&&a%100!=0)||(a%400==0))
str[1]=29;
这个有问题的,你要加上
else
str[1] = 28;
就可以了