屁哥 发表于 2017-11-7 19:36:38

C语言 第17课课后题

#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;
      }

      for (i = 0; i < sizeof(days) / sizeof(days); i++)
      {
                printf("%2d月份:%d天\n", i+1, days);
      }


      return 0;
}

这里for (i = 0; i < sizeof(days) / sizeof(days); i++)
for语句里面 i < sizeof(days) / sizeof(days)这句话怎么理解 老司机带带我呗

闪电猫网络 发表于 2017-11-7 19:48:55

sizeof(days)是这个数组的大小;
sizeof(days)是单个元素的大小;
总大小/单个元素的大小=元素的个数.

屁哥 发表于 2017-11-7 19:52:35

闪电猫网络 发表于 2017-11-7 19:48
sizeof(days)是这个数组的大小;
sizeof(days)是单个元素的大小;
总大小/单个元素的大小=元素的个数 ...

为什么是days不是days或者days

闪电猫网络 发表于 2017-11-7 20:23:44

屁哥 发表于 2017-11-7 19:52
为什么是days不是days或者days

肯定不能是days啊,days是整个数组的大小,
days也可以的,

屁哥 发表于 2017-11-7 20:29:26

闪电猫网络 发表于 2017-11-7 20:23
肯定不能是days啊,days是整个数组的大小,
days也可以的,

但是daysdaysdays数值不一样啊

拖油瓶学徒 发表于 2017-11-7 20:37:13

你看错了,是sizeof(arr),而不是sizeof(arr)

闪电猫网络 发表于 2017-11-7 20:54:25

屁哥 发表于 2017-11-7 20:29
但是daysdaysdays数值不一样啊

不用考虑他的数值啊,只需要知道单个元素的大小就可以了,因为是int型数组,一般情况下都是四字节的.
你把sizeof(days)换成数字4也可以的,

屁哥 发表于 2017-11-7 20:56:17

闪电猫网络 发表于 2017-11-7 20:54
不用考虑他的数值啊,只需要知道单个元素的大小就可以了,因为是int型数组,一般情况下都是四字节的.
你把s ...

好的 我 消化消化 谢谢
页: [1]
查看完整版本: C语言 第17课课后题