c语言编程:编写程序,输入某年某月某日,判断这一天是这一年的第几天?麻烦帮忙解解呗

如题所述

#include <stdio.h>
#include<Windows.h>
void main()
{
int y,m,d,sum1=0,sum2=0,i=0,sumok1=0,sumok2=0;
int a1[]={31,29,31,30,31,30,31,31,30,31,30,31};
int a2[]={31,28,31,30,31,30,31,31,30,31,30,31};

printf("输入年月日(用逗号隔开):\n");
scanf("%d,%d,%d",&y,&m,&d);

if (y%4==0&&y%100!=0||y%400==0) /*闰年,2月29天*/
{
while (i<m-1)
{
sum1=a1[i]+sum1;
i++;
}
sumok1=sum1+d;
printf("这是该年的第%d天\n",sumok1);

}
else
{
while (i<m-1)
{
sum2=a2[i]+sum2;
i++;
}
sumok2=sum2+d;
printf("这是该年的第%d天\n",sumok2);

}
system("pause");
}vs2010下运行成功,如图。 我的另一个回答。

参考资料:http://zhidao.baidu.com/question/422692355.html?oldq=1

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-13
很简单
1.首先计算本月之前一共有多少天
2.计算本月至今有多少天
3.如果是闰年,且计算的月份超过了2月,则再多加1天

我没有判断输入的合法性,比如2012 2 30这些数据没有进行判断。你可以自己进行一下合法性的判断。

#include<stdio.h>
#include<stdlib.h>

int main()
{
int mon[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30,31, 30, 31};
int i, year, month, day, sum;

while(scanf("%d %d %d", &year, &month, &day)==3)
{
sum=0;

//计算本月之前一共有多少天
for(i=0; i<month-1; i++)
{
sum += mon[i];
}

//加上本月到今天的天数
sum += day;

//如果是闰年,且计算的月份大于等于3,则多加1天
if(((year%4==0)||(year%100==0 && year%400!=0)) && month>=3)
{
sum++;
}
printf("%d\n", sum);
}

return 0;

}本回答被网友采纳
第2个回答  2012-05-23
#include <stdio.h>//c language
int LeapYear(int year)
{
if(year%400==0)
return 29;
else
if(year%4==0)
return 29;
else
return 28;
}
void main()
{
int year=2011,month=5,day=12,n=0;
scanf("%d%d%d",&year,&month,&day);
switch(month-1)
{
case 11:n+=30;
case 10:n+=31;
case 9:n+=30;
case 8:n+=31;
case 7:n+=31;
case 6:n+=30;
case 5:n+=31;
case 4:n+=30;
case 3:n+=31;
case 2:n+=LeapYear(year);
case 1:n+=31;
}
n+=day;
printf("%d\n",n);
}
相似回答