c语言问题(急)

一,intk=0;do{++k;}while(k>=0);这个程序为什么不是死循环二,switch语句中的continue是什么作用三,“在循环中break语句不能独立出... 一,
int k=0;
do{++k;} while(k>=0);
这个程序为什么不是死循环
二,switch语句中的continue是什么作用
三,“在循环中break语句不能独立出现”这句话对不对?为什么?
四,
t=o
while(printf("*"))
{
t++;
if(t<3) break;
}
为什么说这个程序循环控制表达式与'0'等价
展开
 我来答
陈宗权8d804
2011-01-10 · TA获得超过3766个赞
知道小有建树答主
回答量:1159
采纳率:0%
帮助的人:924万
展开全部
一、当k达到最大值后,再++k就溢出,回到最小(负值),所以不会死循环。
二、switch结构中的continue跟switch无关,它控制的是包含这个continue的最近的循环。
三、这句话不对,语法上允许它独立出现,但应该说在循环中break独立出现没有意义。因为如果不跟if配合,break就成了无条件跳出循环,就让循环失去了“循环”的意义。
四、这个问题似乎本身就有问题。这段程序会打印一个*,然后因为满足if(t<3)而跳出循环,也就是循环只会执行一次。
MarsCode
2024-08-21 广告
```c#include int main() { int a, b; printf("请输入两个整数: "); scanf("%d %d", &a, &b); int sum = a + b; printf(... 点击进入详情页
本回答由MarsCode提供
neulinux
2011-01-10 · TA获得超过906个赞
知道小有建树答主
回答量:627
采纳率:0%
帮助的人:299万
展开全部
一必然死循环啊!
只要k>=0都会执行k++
二在switch语句中continue跟break效果相当,因为switch本身不是循环。
三对,因为循环的本质是对逻辑相同的代码段的多次重入执行,break的语义是放弃后续部分的执行,那么就要对break指明一个退出的条件,这就是为什么break不能独立出现的原因。
四可以查一下printf的api手册,这个函数在成功执行的时候,返回值是0。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-01-10 · TA获得超过877个赞
知道小有建树答主
回答量:337
采纳率:0%
帮助的人:336万
展开全部
++k表示使用k之前使k自加1,当然是死循环了。进去时k为0,出来时k=1>0,然后又继续执行
continue表示结束当前本次循环(本次可能未执行完),继续执行下一次循环
beak语句可以单独使用,表示跳出循环
printf(“*”)逻辑上和“假”等价
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夜游神小翠
2011-01-11 · TA获得超过1794个赞
知道小有建树答主
回答量:416
采纳率:0%
帮助的人:162万
展开全部
楼上的几位回答欠妥吧…………
一:do{}while()循环,是当while中的条件为真是,继续循环,k的初值是0,越加越大,while中的条件一直为真,所以是死循环。
二:continue的作用是结束当前一次循环,进入下一个循环,但是switch不是循环,所以continue在switch中是非法的,我刚刚用编译器试了!!一定注意!!
三:这句话对,break语句的作用是用于结束一个循环,所以一般要和if语句配合使用,在某一特定情况下结束循环。
四:print("*")这条语句作为循环控制,其值为真,因为打印成功了,print语句的值就为真,所以只要星号打印出来,print的值就是真。'0’的ASCII码值非0,所以逻辑值也是真,所以用print和'0'做循环控制等价。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
c9amel
2011-01-11 · TA获得超过618个赞
知道小有建树答主
回答量:408
采纳率:0%
帮助的人:348万
展开全部
【其实楼主用代码试一下就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,所以逻辑也为真~所以等效~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式