写一个程序,提示用户输入年、月、日,程序计算并输出该日是该年的第几天.(提示:如

写一个程序,提示用户输入年、月、日,程序计算并输出该日是该年的第几天.(提示:如果用户输入2006,3,11,程序则输出70)

关键在于判断年份是否是闰年,闰年要加一天。月份天数用数组保存,将已过去的月份的天数加起来,加上本月的天数就得到了答案。
#include<stdio.h>
using namespace std;
int months[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
bool IsRunNian(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
//(1)不是世纪年,能被4整除并且不能被100整除;(2)世纪年,能被400整除
return true;
else
return false;
}
int main() {
int year = 0, month = 0, day = 0;
int howmanydays = 0;
scanf("%d,%d,%d", &year, &month, &day);
if (month < 3)//月份小于2
printf("%d\n", 31 + day);
else { //月份大于2时
for (int i = 0; i < month - 1; i++) howmanydays += months[i];
if (IsRunNian(year)) {//是闰年
printf("%d\n", howmanydays + day + 1);
} else {//不是闰年
printf("%d\n", howmanydays + day);
}
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-04
#include<stdio.h>
int days[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
void main()
{
int sum=0,a,b,c,i;
char ags='y';
while(ags=='y'||ags=='Y')
{
sum = 0;
printf("请输入年/月/日:");
scanf("%d%d%d",&a,&b,&c);
for(b--;b>0;b--)
{
i = days[b];
if((a%4==0&&a%100!=0)||(a%400==0)) i++;
sum+=i;
}
sum+=c;
printf("是这一年的%d天\n",sum);
printf("是否继续输入日期(y/n)?");
fflush(stdin);
ags=getchar();
}
printf("结束输入!\n");
}
------------
运行结果:
请输入年/月/日:2006 3 11
是这一年的70天
是否继续输入日期(y/n)?n
第2个回答  2010-08-04
#include<stdio.h>
void main()
{
int month[12]={30,28,31,30,31,30,31,31,30,31,30,31};
int days,i,j;
int mon,day,sum=0,year;
printf("输入日期,XXXX年XX月XX日\n");
scanf("%d%d%d",&year,&mon,&day);
i=mon;
for(j=0;j<mon-1;j++)
{
sum+=month[i];
}
if((year%4==0&&year%100!=0)||year%400==0)
sum=sum+1;
days=sum+day;
printf("%d",days);
}
相似回答