输入某年某月某日,判断这一天是这一年的第几天?C语言。求大神找出错误

原问题:输入某年某月某日,判断这一天是这一年的第几天?C语言。求大神找出错误
分类:编程开发 > 最后更新时间:【2016-12-13 00:56:25】
问题补充:

#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);

}

最佳答案由网友  whoami1978  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
14

分享到:

其他回答

暂无其它回答!

    推荐