中易网

C语言for语句的循环体问题

答案:4  悬赏:0  
解决时间 2021-04-07 09:21
正在看《C程序设计语言》,关于FOR语句的循环体,里面有这样一个字符计数的程序:
#include "stdio.h"
main()


{
double nc;
for (nc=0;getchar()!=EOF;++nc)
;
printf("%.0f\n",nc);
}
该程序执行后没有输出,我百思不得其解,最后把作为空循环体的分号去掉,反而能正确执行相应的计数功能了,真是太奇怪了。
书中特地提到for语句必须有一个循环体,而例题没有循环体,所以要特地加个分号作为空的循环体,程序才能正确执行,为什么实际上缺少这个循环体(分号)的时候反而能正确执行了呢?请教一下!

我的运行环境是钟家民集成环境的TC2。

谢谢!
最佳答案
#include "stdio.h"
int main()

{
double nc;
for (nc=0;getchar()!='\n';++nc);

printf("%.0f\n",nc);
}

全部回答
是do-while语句。 它的一般形式为: do {循环体} while (条件表达式); do_while语句的特点是“先执行循环体,后判断循环条件”,即【至少执行一次循环体】。
空循环,你这语句貌似有问题,未定义变量,修改如下看看: #include "stdio.h" main() { int nc; char c; for (nc=0;(c=getchar())!=EOF;++nc) ; printf("%d\n",nc); }
程序本身没大问题,只不过这里你定义的nc是double类型的(一般不这么用但是用也不算错)。而在程序运行的时候,你必须先输入符号串,最后输入一个ctrl+z来匹配这个EOF,否则你的程序一直在for循环里面出不来。不信你可以试一下。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
神器积分可以换法宝任务书吗
在什么情况下要开红字增值税发票呢?谢谢。
湖北亦顺塑胶有限公司这个地址在什么地方,我
大众速腾和本田civic哪个好?
多个值同时相等的sql怎么写
人力资源中的cf head是什么意思
石家庄什么时候草可以长出来?树什么时候可以
入门作文800字
2015年正月26号十三点十六分出生女孩姓刘 取
cad图例这个图是什么意思
和华硕飞行堡垒zx60vm的配置一样的电脑
十五W以内的中级轿车有什么,比如:桑塔纳300
盛香快餐地址在哪,我要去那里办事
大家觉的着哩是喷的好用还是抹的好用
有一部电影不知道叫什么只知道有个光头是个汉
推荐资讯
脉动,尖叫,激活。这三种运动饮料哪种好
在一等差数列中 a4=9,a9=负6 求an的值
偏光太阳镜价格,一般多少?
家晖电器我想知道这个在什么地方
腾讯会员微信登录怎么换成qq登录
笔记本右下角连接不可用
空调的室内风机一般用什么电机
皇帝龙之崛起怎么给征税员建轿子
昨晚上梦见一只狗老是在看着我,请问这是怎麼
哥哥和妹妹进行百米赛跑,当哥哥冲过终点时,
耳洞打了几天了,现在耳钉可以转动了 但有些
我是一个快满18岁的小伙,现在我很迷茫,不知
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?