正在看《C程序设计语言》,关于FOR语句的循环体,里面有这样一个字符计数的程序:
#include "stdio.h"
main()
{
double nc;
for (nc=0;getchar()!=EOF;++nc)
;
printf("%.0f\n",nc);
}
该程序执行后没有输出,我百思不得其解,最后把作为空循环体的分号去掉,反而能正确执行相应的计数功能了,真是太奇怪了。
书中特地提到for语句必须有一个循环体,而例题没有循环体,所以要特地加个分号作为空的循环体,程序才能正确执行,为什么实际上缺少这个循环体(分号)的时候反而能正确执行了呢?请教一下!
我的运行环境是钟家民集成环境的TC2。
谢谢!
C语言for语句的循环体问题
答案:4 悬赏:0
解决时间 2021-04-07 09:21
- 提问者网友:先森请一心
- 2021-04-07 01:59
最佳答案
- 二级知识专家网友:青灯壁纸妹
- 2021-04-07 03:24
#include "stdio.h"
int main()
{
double nc;
for (nc=0;getchar()!='\n';++nc);
printf("%.0f\n",nc);
}
int main()
{
double nc;
for (nc=0;getchar()!='\n';++nc);
printf("%.0f\n",nc);
}
全部回答
- 1楼网友:我的任性你不懂
- 2021-04-07 05:03
是do-while语句。
它的一般形式为: do {循环体}
while (条件表达式);
do_while语句的特点是“先执行循环体,后判断循环条件”,即【至少执行一次循环体】。
- 2楼网友:统治我的世界
- 2021-04-07 04:10
空循环,你这语句貌似有问题,未定义变量,修改如下看看:
#include "stdio.h"
main()
{
int nc;
char c;
for (nc=0;(c=getchar())!=EOF;++nc)
;
printf("%d\n",nc);
}
- 3楼网友:不羁的心
- 2021-04-07 03:38
程序本身没大问题,只不过这里你定义的nc是double类型的(一般不这么用但是用也不算错)。而在程序运行的时候,你必须先输入符号串,最后输入一个ctrl+z来匹配这个EOF,否则你的程序一直在for循环里面出不来。不信你可以试一下。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯