输入某年某月某日,判断这一天是这一年的第几天?C语言。求大神找出错误
#include<stdio.h>
int main()
{
int a,b,c,d,x,y;
scanf("%d",&a);
scanf("%d",&b);
scanf("%d",&c);
if(b==1);
d=c;
if(b==2);
d=31+c;
if(b==3);
d=31+28+c;
if(b==4);
d=31+28+31+c;
if(b==5);
d=31+28+31+30+c;
if(b==6);
d=31+28+31+30+31+c;
if(b==7)
d=31+28+31+30+31+30+c;
if(b==8)
d=31+28+31+30+31+30+31+c;
if(b==9)
d=31+28+31+30+31+30+31+31+c;
if(b==10)
d=31+28+31+30+31+30+31+31+30+c;
if(b==11)
d=31+28+31+30+31+30+31+31+30+31+c;
if(b==12)
d=31+28+31+30+31+30+31+31+30+31+30+c;
if(a>0)
x=a/4;
y=a%4;
x=x%10000000;
x=x%1000000;
x=x%100000;
x=x%10000;
x=x%1000;
x=x%100;
if(y==0)
d=d+1;
if(y==0,x==25)
d=d-1;
if(y==0,x!=25,b<3,c!=29)
d=d-1;
printf("%d",&d);
return 0;
}
最佳答案
1.你的程序过于复杂(C本身有日期函数,可简单的计算你的问题)
2.你完全可以用switch...case代替if
3.你的程序中没有考虑闰年
4.x=x%100;完全可以忽略前面所有的x%
给你一个简单的参考:
#include <stdio.h>
int main()
{
int y,m,d,i,sum;
int md[]={ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
sum=0;
scanf("%d%d%d",&y,&m,&d);
for(i=1;i<m;i++)
sum+=md[i-1];
if (m>2)
if((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) //闰年
sum++;
sum+=d;
printf("%4d-%02d-%02d为本年第%d天\n",y,m,d,sum);
}
其他回答
暂无其它回答!