小鱼蛋~ 发表于 2021-4-18 01:40:03

希望有详细的解答过程


以下程序的输出结果是n=4

#include<stdio.h>

void main()

{

int i,n=0;

for(i=2;i<5;i++)

{

do {

if(i%3) continue;

         n++;

      } while(!i);

      n++;

   } printf("n=%d",n);

}



A对
B错这道题怎么做,希望有详细的解答过程,被这道题搞蒙了

wp231957 发表于 2021-4-18 08:21:11

这有啥可解答的,我都怀疑这代码跑不动

yuxijian2020 发表于 2021-4-18 09:42:08

#include<stdio.h>

void main()

{

int i,n=0;

for(i=2;i<5;i++)   //这里限定 i 取值为 2 3 4

{

do {

if(i%3) continue;   //这里在上面 i 的取值范围内只有3不执行continue

         n++;

      } while(!i);      //这里i 非0则不进行下次循环,在上面的 i 取值范围内, 这个do while循环只可能循环一次

      n++;

   } printf("n=%d",n);   //只有3种 i 的取值就好好算一下每个取值 n 加了多少次

}

i = 2 时:
             n += 1--> 因为do while循环内continue了,do while又只执行一次,所以只有for循环内的 n++ 执行了
i = 3 时:
             n += 2--> 上面分析了,i = 3 时,没有执行continue,所以do while 内 n 加了一次,for循环内 n 加了一次
i = 4 时:
             n += 1--> i = 4 的情况和 i = 2完全相同
页: [1]
查看完整版本: 希望有详细的解答过程