鱼C论坛

 找回密码
 立即注册
查看: 2634|回复: 10

[已解决]请问这道for循环的题目怎么写?包含break和continue辨析的辨析。

[复制链接]
发表于 2022-7-30 15:19:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
int sum = 0;
for ( int i=0; i<10; i++ ) {
    if ( i%2 ) continue;
    sum += i;
}
printf("%d\n", sum);


int sum = 0;
for ( int i=0; i<10; i++ ) {
    if ( i%2 ) break;
    sum += i;
}
printf("%d\n", sum);

我有四个问题:
1  int i 可以写在括号里面吗?
2  i%2电脑会如何处理?if括号里面放的不是一些判断成不成立吗?我很懵。
3  为什么第一个答案是20,第二个是0?我一开始准备描述自己思路的,后来想着想着绕进去了。
4  为什么在电脑上跑,会报错?

最佳答案
2022-7-30 15:35:41
本帖最后由 tommyyu 于 2022-7-30 15:37 编辑

1.int i是可以写在括号里的,但是写在括号里的i只在这个for循环中有用,在其他地方无法被访问(除非再次定义i)

2.在编程中,默认0为false,其他数均为true。因此if(i%2)相当于if(i%2!=0)

3.代码1是如果i除以2的值是1(i是奇数),则开启下一轮循环,否则将sum += i。因此sum就是0~9中的偶数的和(0+2+4+6+8 = 20)
代码2是如果i除以2的值是1(i是技术),则直接退出循环,否则将sum+=i。因此,在i=0时,sum+=0,则sum还是0,然后i++,i的值变为1,是奇数,退出循环,所以sum=0

4.C语言需要main函数以及头文件的引入,代码应该这样写:
#include<stdio.h> //printf需要stdio头文件
int main() //定义main函数
{
        int sum = 0;
        for(int i=0; i<10; i++) {
                if(i%2) break;
                sum += i;
        } 
        return 0; //main函数的返回值,在答题中如果不写会被判为0分 
}
屏幕截图 2022-07-30 150515.png
屏幕截图 2022-07-30 151835.png
屏幕截图 2022-07-30 151925.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-30 15:35:41 | 显示全部楼层    本楼为最佳答案   
本帖最后由 tommyyu 于 2022-7-30 15:37 编辑

1.int i是可以写在括号里的,但是写在括号里的i只在这个for循环中有用,在其他地方无法被访问(除非再次定义i)

2.在编程中,默认0为false,其他数均为true。因此if(i%2)相当于if(i%2!=0)

3.代码1是如果i除以2的值是1(i是奇数),则开启下一轮循环,否则将sum += i。因此sum就是0~9中的偶数的和(0+2+4+6+8 = 20)
代码2是如果i除以2的值是1(i是技术),则直接退出循环,否则将sum+=i。因此,在i=0时,sum+=0,则sum还是0,然后i++,i的值变为1,是奇数,退出循环,所以sum=0

4.C语言需要main函数以及头文件的引入,代码应该这样写:
#include<stdio.h> //printf需要stdio头文件
int main() //定义main函数
{
        int sum = 0;
        for(int i=0; i<10; i++) {
                if(i%2) break;
                sum += i;
        } 
        return 0; //main函数的返回值,在答题中如果不写会被判为0分 
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-30 16:03:43 | 显示全部楼层
tommyyu 发表于 2022-7-30 15:35
1.int i是可以写在括号里的,但是写在括号里的i只在这个for循环中有用,在其他地方无法被访问(除非再次定 ...

第四条问的太蠢了,我竟然没有注意到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-30 16:15:12 | 显示全部楼层
tommyyu 发表于 2022-7-30 15:35
1.int i是可以写在括号里的,但是写在括号里的i只在这个for循环中有用,在其他地方无法被访问(除非再次定 ...

第一题,假设第一轮循环已经结束,i变成了1,第二次进入for循环,i%2的结果为1,continue会直接进入下一个循环,那么i不就不会变成2了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-30 16:17:44 | 显示全部楼层
追光THO 发表于 2022-7-30 16:15
第一题,假设第一轮循环已经结束,i变成了1,第二次进入for循环,i%2的结果为1,continue会直接进入下一 ...

i++相当于是放在哪里的?大括号外面还是大括号里面?
屏幕截图 2022-07-30 150516.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-30 16:23:45 | 显示全部楼层
本帖最后由 tommyyu 于 2022-7-30 16:32 编辑
追光THO 发表于 2022-7-30 16:15
第一题,假设第一轮循环已经结束,i变成了1,第二次进入for循环,i%2的结果为1,continue会直接进入下一 ...

开启下一轮循环前仍然会执行i++这条语句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-7-30 16:24:41 | 显示全部楼层
本帖最后由 tommyyu 于 2022-7-30 16:27 编辑
追光THO 发表于 2022-7-30 16:17
i++相当于是放在哪里的?大括号外面还是大括号里面?

第一张图片是C语言中for循环运行过程,下面那张是这个程序中for循环的运行过程
屏幕截图 2022-07-30 162338.jpg
屏幕截图 2022-07-30 162623.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-30 16:42:31 | 显示全部楼层
tommyyu 发表于 2022-7-30 16:24
第一张图片是C语言中for循环运行过程,下面那张是这个程序中for循环的运行过程

谢谢,我已经懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-30 16:48:14 | 显示全部楼层
tommyyu 发表于 2022-7-30 16:24
第一张图片是C语言中for循环运行过程,下面那张是这个程序中for循环的运行过程

请问你这样的代码是怎么打的?
我只会复制粘贴,

int sum = 0;
for ( int i=0; i<10; i++ ) {
    if ( i%2 ) continue;
    sum += i;
}
printf("%d\n", sum);
屏幕截图 2022-07-30 164645.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-30 16:49:38 | 显示全部楼层
点击这个"<>"
屏幕截图 2022-07-30 162623.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-7-30 19:09:26 | 显示全部楼层

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 22:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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