追光THO 发表于 2022-7-30 15:19:45

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

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);

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

tommyyu 发表于 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分
}

追光THO 发表于 2022-7-30 16:03:43

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

第四条问的太蠢了,我竟然没有注意到

追光THO 发表于 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了吗?

追光THO 发表于 2022-7-30 16:17:44

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

i++相当于是放在哪里的?大括号外面还是大括号里面?

tommyyu 发表于 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++这条语句

tommyyu 发表于 2022-7-30 16:24:41

本帖最后由 tommyyu 于 2022-7-30 16:27 编辑

追光THO 发表于 2022-7-30 16:17
i++相当于是放在哪里的?大括号外面还是大括号里面?
第一张图片是C语言中for循环运行过程,下面那张是这个程序中for循环的运行过程

追光THO 发表于 2022-7-30 16:42:31

tommyyu 发表于 2022-7-30 16:24
第一张图片是C语言中for循环运行过程,下面那张是这个程序中for循环的运行过程

谢谢,我已经懂了

追光THO 发表于 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);

tommyyu 发表于 2022-7-30 16:49:38

点击这个"<>"

追光THO 发表于 2022-7-30 19:09:26

tommyyu 发表于 2022-7-30 16:49
点击这个""

谢谢
页: [1]
查看完整版本: 请问这道for循环的题目怎么写?包含break和continue辨析的辨析。