用c语言数组实现某年某月某日是当年的第几天:在下列程序逻辑上有错误,请在已有程序的基础上进行修改。本题考察的数组/循环/分支结构的综合运用,请仔细分析程序的逻辑结构。 #include<stdio.h> int main(){ int month_day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int year,month,day; int i; scanf("%d%d%d",&year,&month,&day); if(month<0||month>12) printf("date error"); else{ for(i=1;i<month;i++){ day=day+month_day[i]; if (month==2&&((year%4==0 && year%100 !=0) || year%400==0)) day++; } } printf("%d",day); } 思路:将每个月的天数存入数组month_day中,例如month_day[2]的值是28,表示2月是28天。 7月13日是第几天? for(月份1~6) day=day+month_day[i]; 然后考虑平年闰年情况,确定2月的天数。
时间: 2023-11-27 21:53:32 浏览: 104
在原有程序中,计算每个月的天数时并没有判断月份是否合法,导致输入不合法的月份时仍会计算天数,因此需要在输入月份后进行判断。同时,在计算2月的天数时,应该先判断该年是否为闰年,再根据判断结果确定2月的天数。修改后的程序如下:
```
#include<stdio.h>
int main(){
int month_day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int year,month,day;
int i;
scanf("%d%d%d",&year,&month,&day);
if(month<1||month>12) { // 判断月份是否合法
printf("date error");
}
else{
for(i=1;i<month;i++){
day=day+month_day[i];
}
if (month==2){ // 判断2月的天数
if ((year%4==0 && year%100 !=0) || year%400==0) {
day++;
}
}
}
printf("%d",day);
return 0;
}
```
以7月13日为例,程序输出结果为194,即7月13日是当年的第194天。
阅读全文