鱼C论坛

 找回密码
 立即注册
查看: 3237|回复: 22

[已解决]17~18 课后题 求注释 求讲解

[复制链接]
发表于 2017-11-7 20:55:33 | 显示全部楼层 |阅读模式
10鱼币
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  5.         int i, year;

  6.         printf("请输入一个年份:");
  7.         scanf("%d", &year);

  8.         if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
  9.         {
  10.                 days[1] = 29;
  11.         }

  12.         for (i = 0; i < sizeof(days) / sizeof(days[0]); i++)
  13.         {
  14.                 printf("%2d月份:%d天\n", i+1, days[i]);
  15.         }


  16.         return 0;
  17. }
复制代码


这里for (i = 0; i < sizeof(days) / sizeof(days[0]); i++)
for语句里面 i < sizeof(days) / sizeof(days)[0]  这句  求注释 求 讲解  没理解明白
最佳答案
2017-11-7 20:55:34
sizeof(days) / sizeof(days[0])
sizeof(days)  //求 数组 里面每个元素的int 总合;数组有12个元素,也就是sizeof(int) * 12
sizeof(days[0]) //单个元素的长度 也就是sizeof(int)
sizeof(days) / sizeof(days[0]) //也就是算有多少个元素


2017-11-07_210102.png

最佳答案

查看完整内容

sizeof(days) / sizeof(days[0]) sizeof(days) //求 数组 里面每个元素的int 总合;数组有12个元素,也就是sizeof(int) * 12 sizeof(days[0]) //单个元素的长度 也就是sizeof(int) sizeof(days) / sizeof(days[0]) //也就是算有多少个元素
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-7 20:55:34 | 显示全部楼层    本楼为最佳答案   
sizeof(days) / sizeof(days[0])
sizeof(days)  //求 数组 里面每个元素的int 总合;数组有12个元素,也就是sizeof(int) * 12
sizeof(days[0]) //单个元素的长度 也就是sizeof(int)
sizeof(days) / sizeof(days[0]) //也就是算有多少个元素


2017-11-07_210102.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-7 21:01:27 | 显示全部楼层
sizeof(int)这个能理解吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-7 21:08:50 | 显示全部楼层
闪电猫网络 发表于 2017-11-7 21:01
sizeof(int)这个能理解吗?

sizeof(int)
求 int 占空间大小  
sizeof  是运算符
打印尺寸
那个 strlen  打印长度  
1.png
2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-7 21:22:04 | 显示全部楼层
这就是求数组的元素个数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-7 21:22:39 | 显示全部楼层
ba21 发表于 2017-11-7 21:03
sizeof(days) / sizeof(days[0])
sizeof(days)  //求 数组 里面每个元素的int 总合;数组有12个元素,也就 ...

sizeof(days) / sizeof(days[0]) //也就是算有多少个元素
这句  就是定义12个啊  能看到为什么还要求一下呢?
i < sizeof(days) / sizeof(days)[0]
直接写 for (i = 0; i < 12; i++)  得了呗 这样不是更容易看点?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-7 21:25:56 | 显示全部楼层
3-3 发表于 2017-11-7 21:22
这就是求数组的元素个数。

是 求 数组里面元素的个事 ?
县城的 12个 为什么要求一下  不是都写出来了么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-7 21:28:20 | 显示全部楼层
程序里是这样定义的:
int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

里面并没有明确。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-7 21:28:48 | 显示全部楼层
为了程序的灵活性,假设你这个时候要往数组加几个数字,然后一行一行的看一下哪里要改一下个数,这个太麻烦,你这个程序是少一点,改也就for这个地方,要是写到后面几百行甚至更多,就很麻烦了。
而且这种想法也可以用宏定义个数,要是改变数据就该一下宏定义的个数就可以了,很方便。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-7 21:37:10 | 显示全部楼层
屁哥 发表于 2017-11-7 21:22
sizeof(days) / sizeof(days[0]) //也就是算有多少个元素
这句  就是定义12个啊  能看到为什么还要求一 ...

求注释 求 讲解  没理解明白

你爱用什么就用什么好吧。没求你用sizeof(days) / sizeof(days[0])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-7 21:42:08 | 显示全部楼层
3-3 发表于 2017-11-7 21:28
程序里是这样定义的:
int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

哦  知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-7 21:42:52 | 显示全部楼层
丶忘却的年少o 发表于 2017-11-7 21:28
为了程序的灵活性,假设你这个时候要往数组加几个数字,然后一行一行的看一下哪里要改一下个数,这个太麻烦 ...

老司机  改一下  看看呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-7 21:43:42 | 显示全部楼层
ba21 发表于 2017-11-7 21:37
求注释 求 讲解  没理解明白

你爱用什么就用什么好吧。没求你用sizeof(days) / sizeof(days[0])

。。。。。。。。。。。。。。。。。。。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-7 21:52:05 | 显示全部楼层
上面有人说了,就是计算有多少个元素,      用数组在内存中的总长度除以一个元素的长度  

小学教过的,金额除以单价等于数量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-7 22:22:24 | 显示全部楼层
屁哥 发表于 2017-11-7 21:42
老司机  改一下  看看呗

我给你个范本,你理解就行了,没必要去该这个程序,我觉得sizeof比较好,因为很多时候宏定义的空间往往是大于需要的数据量,防止溢出的,当然也有刚好的。
  1. #include <stdio.h>

  2. #define MAX 5        // 这里定义了最大只能是5个,要是你要往数组里加几个数据,就把这个5改成你要的数就可以了

  3. int main()
  4. {
  5.         int array[MAX] = {1, 2, 3, 4, 5};
  6.         int i;

  7.         for (i = 0; i < MAX; i++)        // 这里直接就定好了要多少个,综合下来你就改一个地方,增加一个地方
  8.         {
  9.                 printf("%d ", array[i]);
  10.         }
  11.         printf("\n");

  12.         return 0;
  13. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-7 23:08:32 From FishC Mobile | 显示全部楼层
丶忘却的年少o 发表于 2017-11-7 22:22
我给你个范本,你理解就行了,没必要去该这个程序,我觉得sizeof比较好,因为很多时候宏定义的空间往往是 ...

这个宏定义  MAX  是不是要写6  还一个  结束符  /0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-7 23:09:09 From FishC Mobile | 显示全部楼层
丶忘却的年少o 发表于 2017-11-7 22:22
我给你个范本,你理解就行了,没必要去该这个程序,我觉得sizeof比较好,因为很多时候宏定义的空间往往是 ...

这个宏定义  MAX  是不是要写6  还一个  结束符  /0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-7 23:41:05 From FishC Mobile | 显示全部楼层
屁哥 发表于 2017-11-7 23:09
这个宏定义  MAX  是不是要写6  还一个  结束符  /0

额……12345总共5个,而且这个是数组,不是字符串,不用加。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-8 20:54:48 From FishC Mobile | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-8 21:08:30 From FishC Mobile | 显示全部楼层
丶忘却的年少o 发表于 2017-11-7 23:41
额……12345总共5个,而且这个是数组,不是字符串,不用加。

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 16:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表