永发信息网

求解释A选项为什么错了呀,什么叫固定执行8次呀,还有B选项输出的结果是, 答案是D

答案:2  悬赏:20  手机版
解决时间 2021-03-25 02:43
  • 提问者网友:沉默菋噵
  • 2021-03-24 08:55
求解释A选项为什么错了呀,什么叫固定执行8次呀,还有B选项输出的结果是, 答案是D
最佳答案
  • 五星知识达人网友:行路难
  • 2021-03-24 09:05
#include
int i, n;
for(i=0; i<8; i++)
{
n=rand() % 5;
switch(n)
{
case 1:
case 3: print("%d\n", n); break;
case 2:
case 4: printf("%d\n", n); continue;
case 0: exit(0);
}
printf("%d\n", n);
}

A) for 循环语句固定执行 8 次。
“固定执行8次”就是说这个循环肯定会循环8次的意思。
这是不对的,因为执行 n=rand() % 5; 后 n 的值的范围是 0 - 4,
如果某次循环过程中, n 为 0 时,
case 0: exit(0); 就会执行,程序会结束运行。
所以 for 循环未必能运行 8 次。
B) 当产生的随机数 n 为 4 时结束循环操作。
这是不对的,因为当 n 为 4 时,
case 4: printf("%d\n", n); continue; 会被执行。
其中的 continue; 表示立即进行下一个循环。
所以循环不会因此结束。
C) 当产生的随机数 n 为 1 和 2 时不做任何操作。
这是不对的,因为当 n 为 1 和 2 时,
程序会分别进入 case 1: 和 case 2: 分支运行,
虽然这他个分支没有内容,但由于这两个分支没有 break; 语句,
所以程序会进行它们下面的 case 3: 和 case 4: 分支运行。
D) 当产生的随机数 n 为 0 时结束程序运行。
这是对的,因为当 n 为 0 时,
程序会进入 case 0: exit(0); 分支运行,
其中的 exit(0); 表示结束程序运行。追问for语句不是不管内部是什么,for自己不是从i=0开始一直执行到i=8结束吗?那不是执行8次吗?追答有三种特殊情况可以改变 for 循环的次数


如果在 for 内部执行了 break,会提前结束整个 for 循环。
但本例中的 break 不属于这种情况,因为本例中的 break 是作用于 switch 的。
如果在 for 内部执行了 exit(0),会提前结束整个程序。
本例中的 exit(0) 可以提前结束整个程序,for 循环当前也会被提前结束。
如果在 for 循环过程中,改变了循环变量 i 的值,将会改变 for 的循环次数。
本例中,循环变量 i 的值没有被修改。
追问在循环中i的值可以改变吗?那是什么情况呀追答比如:
for(i=0; i<8; i++)
{
i++;

}
这个 for 只会循环 4 次追问for(i=0;i<8;i++)
{int i=6
}这样呢这个有影响吗?追答for(i=8; i<8; i++)
{
int i=6

}
应该写成

for(i=8; i<8; i++)
{
i=6;

}
否则应该不能通过编译吧(会提示你:变量重复定义)

for(i=8; i<8; i++)
{
i=6;

}
这个 for 将无限次地循环(死循环)追问为什么呀,不是i=6后面i++吗?然后不就退出循环了吗?追答i=6;
然后
i++
这时候 i 是 7,但 7 小于 8 循环条件还是成立,还是会循环
然后又是:1=6
……
就远循环下去。
全部回答
  • 1楼网友:我住北渡口
  • 2021-03-24 09:42
A最多执行8次。
B当n为5的倍数时,结束执行。追问n为5的倍数时,那它是怎样退出for循环的呀追答case (0):exit(0);退出程序追问当随机取的数是6时,n=1对吗?追答是的.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯