c语言问题(急)

2024-11-17 06:35:31
推荐回答(5个)
回答1:

一、当k达到最大值后,再++k就溢出,回到最小(负值),所以不会死循环。
二、switch结构中的continue跟switch无关,它控制的是包含这个continue的最近的循环。
三、这句话不对,语法上允许它独立出现,但应该说在循环中break独立出现没有意义。因为如果不跟if配合,break就成了无条件跳出循环,就让循环失去了“循环”的意义。
四、这个问题似乎本身就有问题。这段程序会打印一个*,然后因为满足if(t<3)而跳出循环,也就是循环只会执行一次。

回答2:

一必然死循环啊!
只要k>=0都会执行k++
二在switch语句中continue跟break效果相当,因为switch本身不是循环。
三对,因为循环的本质是对逻辑相同的代码段的多次重入执行,break的语义是放弃后续部分的执行,那么就要对break指明一个退出的条件,这就是为什么break不能独立出现的原因。
四可以查一下printf的api手册,这个函数在成功执行的时候,返回值是0。

回答3:

++k表示使用k之前使k自加1,当然是死循环了。进去时k为0,出来时k=1>0,然后又继续执行
continue表示结束当前本次循环(本次可能未执行完),继续执行下一次循环
beak语句可以单独使用,表示跳出循环
printf(“*”)逻辑上和“假”等价

回答4:

楼上的几位回答欠妥吧…………
一:do{}while()循环,是当while中的条件为真是,继续循环,k的初值是0,越加越大,while中的条件一直为真,所以是死循环。
二:continue的作用是结束当前一次循环,进入下一个循环,但是switch不是循环,所以continue在switch中是非法的,我刚刚用编译器试了!!一定注意!!
三:这句话对,break语句的作用是用于结束一个循环,所以一般要和if语句配合使用,在某一特定情况下结束循环。
四:print("*")这条语句作为循环控制,其值为真,因为打印成功了,print语句的值就为真,所以只要星号打印出来,print的值就是真。'0’的ASCII码值非0,所以逻辑值也是真,所以用print和'0'做循环控制等价。

回答5:

【其实楼主用代码试一下就ok了~】
【一 】
必然 不是 死循环啊!
++k,下去的话,会越界的~~越界后就变负数了~~
不信的话跑一下~一会就跳出来
【二 】
因为switch本身不是循环,编译器不允许用continue~可以试一试,VC6.0不允许~
【三 】
可以认为是对的,因为一旦独立出现,直接跳出循环了,那么循环就不是循环了~
【四】
printf函数的一般形式为: int printf(const char *format,[argument]);
其返回的是输出的字符数,这里printf("*")相当于1。
你可以 int t=printf("*");printf("%d\n",t);看一看。
然后'0'不是0,'0'是字符~asc值是48,大于0,所以逻辑也为真~所以等效~