aa3sai3 2019-10-23 16:09 采纳率: 60%
浏览 187

在下列程序逻辑上有错误,请在已有程序的基础上进行修改。本题考察的数组/循环/分支结构的综合运用,请仔细分析程序的逻辑结构。

#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月的天数。

  • 写回答

2条回答 默认 最新

  • 木丨方 2019-10-23 23:04
    关注
    #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++)
            {
                if ((year%4==0 && year%100 !=0) || year%400==0)
                    month_day[2]=29;//是闰年时,2月份为29天
                else
                    month_day[2]=28;
                day=day+month_day[i];
            }
        }
        printf("%d\n",day); 
    }
    

    这样应该就对了
    逻辑错误,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++;
    }错误在这,你可以对比一下

    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分