江苏省2级C选择题

来源:百度知道 编辑:UC知道 时间:2024/06/08 04:15:35
设有变量声明“ char c; ”,for( ;c=( getchar( )!='\n' ) ; ) printf( "%c",c) ;"时,从键盘上输入“ABCDEFG<ENTER>”后,输出的结果是( )
A.ABCDEFG B. AABBCCDDEEFFGG C,非字母数字字符 D.语句不能执行
答案是C 为什么会是什么非字母字符啊?为什么不会一个一个输进去啊?

for(;c=(getchar()!='\n');)
printf( "%c",c);

输入ABCDEFG后 这句话 执行了 7次

因为(getchar()!='\n')是个条件语句,返回的只可能是1(true)或者0(false)

又每次读入的字符都不是'\n'所以每次返回值都是1,即7次循环中c都等于1

输出函数中格式化字符串用的是"%c"即按字符型输出,所以输出的内容是ASCII值为c即1的符号,当然不会是字母数字了。

(ASCII里面,0-9的ASCII值为48-57,A-Z为65-90,a-z为97-122)

真正输出出来的内容好像是7个娃娃脸...

可以用VC++编写进去试试:

#include<stdio.h>
void main()
{
char c;
for(;c=(getchar()!='\n');)
printf( "%c",c);
}

支持楼上的说法,这里涉及到字符和数字之间的转换。其实数字本质上都是字符,只有ascll是唯一区别字符的标志。