为了账号安全,请及时绑定邮箱和手机立即绑定

解析中的C选项的解释看不懂,不是应该是碰到exit0所以for循环才不一定是执行8次么?

解析中的C选项的解释看不懂,不是应该是碰到exit0所以for循环才不一定是执行8次么?

C
吃鸡游戏 2022-12-15 15:11:15
有以下程序段:#include <stdio.h>int i, n;for( i=0; i<8; i++ ){  n = rand() % 5;  switch (n)  { case 1:case 3: printf("%d \n", n); break;case 2:case 4: printf("%d \n", n); continue;case 0: exit(0);  }  printf("%d \n",n);}以下关于程序段执行情况的叙述,正确的是(  )。A) for循环语句固定执行8次B) 当产生的随机数n为4时结束循环操作C) 当产生的随机数n为1和2时不做任何操作D) 当产生的随机数n为0时结束程序运行参考答案:D【解析】case常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从此case子句执行下去,不再进行判断,直到碰到break或函数结束为止。简单的说break是结束整个循环体,而continue是结束单次循环。B)选项中当产生的随机数n为4时要执行打印操作。【C选项的解释看不懂】C)选项中当产生的随机数为1和2时分别执行case3与case4后面语句的内容。由于存在break语句所以for循环不是固定执行8次,执行次数与产生的随机数n有关系。
查看完整描述

3 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

首先要理解switch语句的执行流程:首先判断n值,然后在case语句中找与n值相同的来执行。switch语句中的case语句是顺序执行的,也就是说执行完case 1,就执行case 2,知道全部执行完毕。当case语句中存在break等时,就会结束跳出,不执行下面的语句。
语言组织的不是太好,凑合看吧,亲,不懂可以继续提问!

查看完整回答
反对 回复 2022-12-18
?
catspeake

TA贡献1111条经验 获得超0个赞

exit(0):正常运行程序并退出程序。
exit(1):非正常运行导致退出程序;
return():返回函数,若在主函数中,则会退出函数并返回一值。
拓展知识:
1. return返回函数值,是关键字; exit 是一个函数。
2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。

3. return是函数的退出(返回);exit是进程的退出。
4. return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。

5. return用于结束一个函数的执行,将函数的执行信息传出个其他调用函数使用;exit函数是退出应用程序,删除进程使用的内存空间,并将应用程序的一个状态返回给OS(操作系统),这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关,一般是 0 为正常退出,非0 为非正常退出。

6. 非主函数中调用return和exit效果很明显,但是在main函数中调用return和exit的现象就很模糊,多数情况下现象都是一致的。

 


查看完整回答
反对 回复 2022-12-18
?
森栏

TA贡献1810条经验 获得超5个赞

exit ( 0);是结束程序的意思,所以执行这句后整个程序就结束了,自然不用再执行for语句了;
而break则只是跳出for循环,执行这个语句后,后面的语句代码还是有执行的。

查看完整回答
反对 回复 2022-12-18
  • 3 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信