江苏省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 为什么会是什么非字母字符啊?为什么不会一个一个输进去啊?
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是唯一区别字符的标志。