首页 > 试题广场 >

设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回

[单选题]
设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是
  • n=0;while(ch=getchar()!='\n')n++;
  • n=0;while(getchar()!='\n')n++;
  • for(n=0;getchar()!='\n';n++);
  • n=0;for(ch=getchar();ch!='\n';n++);
对于for循环,其初始条件只执行一次,因此ch只从输入流中取一个字符,之后就再不会取字符,因此会死循环
发表于 2016-07-19 11:14:27 回复(0)
D只获取了一次字符。
发表于 2015-09-25 17:05:14 回复(0)
D进入死循环,除非初始值是\n
发表于 2015-09-27 12:08:43 回复(3)
主要要明白for循环中的各部分功能没和循环次数。
for(①;②;③)
其中①只是给出初始化的条件,用过一次就不用啦。这里不能用于获取字符。不然就会只取一次。
②是判断语句,判断是否还接着循环;
③就是步长调节,步子太大扯到蛋就不好了,控制迭代步长了。
发表于 2017-03-01 10:35:34 回复(0)
我说一下A:当while循环的条件表达式是赋值语句的时候,其含义为:先执行赋值语句,然后对左值进行判断。如果左值为0则expr为假,while退出;否则expr为真,while继续循环,所以不会出现死循环,当然这种写法是不标准的编译器会给出警告
发表于 2017-07-29 13:17:17 回复(2)
对于for循环,其初始条件只执行一次,因此ch只从输入流中取一个字符,之后就再不会取字符,因此会死循环
发表于 2021-12-02 09:40:30 回复(0)
A也不对吧。!=的优先级比=要高
ch = getchar()!='\n' is equal to ch = (getchar()!='\n')
while 不会一直循环下去么
发表于 2016-11-27 19:46:46 回复(1)
D中for循环的getchar只会执行一次,初始化
发表于 2016-02-22 15:35:22 回复(0)
for循环,初始条件只执行一次。
发表于 2020-08-22 14:30:49 回复(0)
来自@飞翔海先生0107
主要要明白for循环中的各部分功能没和循环次数。
for(①;②;③)
其中①只是给出初始化的条件,用过一次就不用啦。这里不能用于获取字符。不然就会只取一次。
②是判断语句,判断是否还接着循环;
③就是步长调节,步子太大扯到蛋就不好了,控制迭代步长了。
发表于 2017-05-04 20:20:35 回复(0)
D 只获得了一次字符
发表于 2016-07-21 07:31:18 回复(0)
ch=getchar();是初始化语句,只执行一次。
for循环开头的是初始化语句,在循环中只做一次
发表于 2021-12-14 18:26:38 回复(0)
A选项。先运行getchar()!='\n';再将这个表达式的结果(0或1)赋值给ch,而ch=0;或ch=1;这两个表达式的结果是ch的值(0或1),所以可以给while判断,不是死循环。
发表于 2018-11-13 16:31:45 回复(0)
注意for循环的使用,D中只获取了一次字符,不能获取整行字符。
发表于 2016-05-19 15:57:33 回复(0)
A应该也是错的,少了一个括号,变成先判断,后赋值了
发表于 2015-10-12 12:49:07 回复(5)
D选项错误,由于for循环的初始化部分只能执行一次,所以该选项只能获取一次字符,不可能遍历每个字符并统计
发表于 2022-09-10 11:01:09 回复(0)
getchar()一次接收一个字符,当接收到的不是'\n'(换行符),一直循环继续。
直接说D选项,初始条件为ch=第一个字符,然后n++,接着无限循环判断(因为ch永远是第一个字符)。

发表于 2022-01-22 21:51:48 回复(0)

表达式1支执行一次



发表于 2019-10-27 16:29:44 回复(0)
for循环赋值只执行一次
发表于 2019-04-07 06:48:31 回复(0)
  • n=0;while(ch=getchar()!='\n')n++;
    没有读到回车,ch = 1,循环继续,读到循环结束
    n=0;while(getchar()!='\n')n++;
    读取到的字符与'\n'相比,不相等继续读取,读到回车结束
    for(n=0;getchar()!='\n';n++);
    和while循环一样
    n=0;for(ch=getchar();ch!='\n';n++);
    这个循环只能读取一次

  • 发表于 2018-12-09 18:00:17 回复(0)