2. 输入年月日,求它是该年的第几天。注:闰年的2月有29天,平年的2月有28天。(C语言编程题)

要编程的结果,以及思路,还要在Visual C++6.0中能运行。

分析如下:求它是第几天,首先应了解1、3、5、7、8、10、12月为31天;4、6、9、11月为30天;关键是2月份的天数要根据这一年是平年还是闰年(通过if语句来判断);设年year、月month、日day.通过输入年月日,根据switch语句来判断这一月之前有多少天再加上日就是这一年的第几天。
编程如下:
# include <stdio.h>
int main ( )
{
int year,month,day,days=0,i,d;
printf("请输入年、月、日:\n");
scanf("%d,%d,%d",&year,&month,&day);
for(i=1;i<month;i++)
{
switch(i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: d=31;break;
case 4:
case 6:
case 9:
case 11: d=30;break;
case 2: if(year%4==0&&year%100==!0||year%400==0)
d=29;
else d=28;
}
days+=d;
}
printf("%d年%d月%d日是这一年的第%d天.\n",year,month,day,days+day);
printf("\n");
return 0;
}
谢谢了!希望对你又帮助。追问

你学的也是清华大学出版的书吧?谭教授主编的?

追答

是啊

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-03
//输入年月日,输出该天在该年是第几天
#include<iostream.h>
#include<windows.h>
#include<conio.h>
int main()
{
int year,month,day,value=0,array[11]={31,28,31,30,31,30,31,31,30,31,30};
//控制输入年月日的代码部分(考虑输入有误情况)
cout<<"请输入年: "<<endl;
cin>>year;
while(year<=0)
{
cout<<"\t\t你所输入的年份有误!请重新输入: ";
cin>>year;
}
cout<<"请输入月: "<<endl;
cin>>month;
while((month>12)||(month<1))
{
cout<<"\t\t你所输入的月份有误!请重新输入: ";
cin>>month;
}
cout<<"请输入日: "<<endl;
cin>>day;
while((day>31)||(day<1))
{
cout<<"\t\t你所输入的日期有误!请重新输入: ";
cin>>day;
}
system("cls");
//判断该年份是否为闰年,若为闰年则二月为29天。
if((year@0==0)||((year%4==0)&&(year0!=0)))
array[1]=29;
//求天数代码
for(int i=0;i<month-1;i++)
value=array[i]+value;
value=value+day;
//控制输出代码部分
cout<<"\t\t结果为: "<<year<<"-"<<month<<"-"<<day<<""<<"是该年的第"<<value<<"天"<<endl;
getch();
return 0;

}追问

大哥你这答案有问题啊,你试了没?我一运行你那答案就又errors!不好意思了,而且你这答案耶太复杂了吧

追答

...有更简单的吗?

追问

你下面的回答就比你简单,而且和我学的非常相似!而且你那里有一些部分看不懂。

追答

..sorry我这是C++的

追问

我学的是C语言,不好意思了,拜拜

第2个回答  2011-08-03
#include<stdio.h>
int main()
{
int year,month,day,i;
int s=0,a[13]; //s用于记录是第几天。
a[1]=a[3]=a[5]=a[7]=a[8]=a[10]=a[12]=31;
a[4]=a[6]=a[9]=a[11]=30;
printf("please input year month day(2008 3 1):");
scanf("%d%d%d",&year,&month,&day);
if((year%4==0&&year%100!=0)||year%400==0) a[2]=29;
else a[2]=28;
for(i=1;i<month;i++)
s+=a[i];
s+=day;
printf("No %d day.\n",s);
return 0;
}

运行情况如下:
please input year month day(2008 3 1):2008 3 1 --->2008 3 1表示2008年3月1日
No 61 day. --->表示2008年3月1日是这年的第61天。
第3个回答  2011-08-03
直接要代码的,忽略
相似回答