|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
//假定已知年月日,计算出这是该年的第几天
int main(){
int year;
int month;
int day;
printf("请输入年月日:");
scanf("%d%d%d",&year,&month,&day);
if((year%4==0&&year%100!=0)||year%400==0)
printf("%d是闰年",year);
else
printf("%d不是闰年",year);//此前为判断闰否年
int sum=0;
int i=month;
int j=day;
while(!(month==i&&day==j)){
while(month==1||month==3||month==5||month==7||month==8||month==10||month==12){//这些月份为31天
sum++;
if(day==31)
break;
}
while(month==4||month==6||month==9||month==11){
sum++;
if(day==30)
break;
}
}
printf("这是%d年的第%d天",year,sum);
return 0;
}
你的代码存在一些问题。首先,你需要确定计算每个月份的总天数,而不是仅仅增加天数。其次,在循环中使用 while 似乎并不适当。此外,你还需要考虑闰年二月的情况。我已经修改了你的代码,修复了这些问题:
#include <stdio.h>
int main() {
int year, month, day;
printf("请输入年月日:");
scanf("%d%d%d", &year, &month, &day);
int is_leap_year = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
int days_in_month[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (is_leap_year) {
days_in_month[2] = 29;
}
int days_passed = 0;
for (int i = 1; i < month; i++) {
days_passed += days_in_month[i];
}
days_passed += day;
printf("这是%d年的第%d天\n", year, days_passed);
return 0;
}
这个修改后的代码应该可以正确地计算给定年月日是该年的第几天。
请注意,我使用了一个数组 days_in_month 来存储每个月的天数,如果是闰年,就更新二月的天数。
最后,使用一个 for 循环累加已过去的天数。
|
|