辉打才子 发表于 2021-4-18 12:23:20

好懵逼

#include <stdio.h>



int main()

{

      int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

       int i, year;



      printf("请输入一个年份:");

      scanf("%d", &year);



      if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))

      {

                days = 29;    // 这个是什么意思啊 days【1】不是28嘛

      }



      for (i = 0; i < sizeof(days) / sizeof(days); i++)

      {

                printf("%2d月份:%d天\n", i+1, days);   //这里的i+1 days【i】啥意思 days上面不是已经初始化值了嘛 i选用里面的某个值嘛

      }





      return 0;

}



这些课后作业我都做不出来{:10_266:}

XiaoPaiShen 发表于 2021-4-18 12:31:03

数组的下标从0开始,月份却是从1开始。
i+1 就可以使打印出来的下标和月份对应起来。

肖-肖 发表于 2021-4-18 13:59:04

本帖最后由 肖-肖 于 2021-4-18 14:04 编辑

没事,慢慢来呗

1. days = 29;    // 这个是什么意思啊 days【1】不是28嘛

对days确实原先赋值的是28但是你的这个if判断是判断的假如这个year是闰年的话,那么就重新赋值days的
值,也就是重新给2月赋值为29.因为闰年的2月就是有29天嘛。

2. printf("%2d月份:%d天\n", i+1, days);   //这里的i+1 days【i】啥意思 days上面不是已经初始化值了嘛 i选用里面的某个值嘛

首先你要明白i是数组的下标。它是从0开始的所以你不能说从0月份开始,所以要:i+1
days是已经赋值了,但是现在是要将他取出来并打印。它给的是%d
i不是选用的某个值,是下标,它和数组联合就是选用的某个值了-> days [ i ] 是

OK 希望对你有帮助

辉打才子 发表于 2021-4-18 14:35:10

肖-肖 发表于 2021-4-18 13:59
没事,慢慢来呗

1. days = 29;    // 这个是什么意思啊 days【1】不是28嘛


蟹蟹大佬
页: [1]
查看完整版本: 好懵逼