已知char ch;执行语句 while(ch=getchar()!='\n'); 时输入:abcd<回车>后,变量ch的值是?

作者&投稿:石洁 (若有异议请与网页底部的电邮联系)
已知char ch;执行语句“while(ch=getchar()!='\n');”时输入“abcde<回车>”后,变量ch的值是~

while(ch=getchar()!='
');
因为"!="的优先级高于"=",所以while(ch=getchar()!='
');等价于while(ch=(getchar()!='
'));
就是先进行getchar()!='
'的判断,然后把判断结果赋值给ch,ch不是0就是1,因为最后输入回车于是getchar()!='
'就为假,ch就等于0了,而NULL这个宏值就是0
如果写成while((ch=getchar())!='
'); 那么最后ch就是'
'(就是10)

当输入不是ctrl+enter,就将字符赋给ch,进入循环,循环体为空语句,所以没有做任何事,直到输入的为ctrl+enter为止,才跳出循环,ch的值就是之前的那个字符,也就是换行字符。
调试平台:vs2010.

单引号表明是字符
语句意思是 只要输入的字符不是换行符 就执行while循环的循环体 直到输入换行符 循环结束
变量ch的值是'\n' 因为每次输入一个字符以后都会先赋给ch,最后输入换行符以后会先赋给ch然后跟'\n'进行比较

'\n' 这就是回车字符。getchar(), 是从键盘接收一个字符。所以最后 ch = '\n' .具体是多少,查一下ASCII码表。

'\n' -- new line 新行 符号
语句写得对吗,漏括号了吧:
char ch;
while( (ch=getchar()) !='\n') {
printf("%c %x %d\n",ch,ch,ch);
};
printf("%c %x %d\n",ch,ch,ch);
输出:
a 61 97
b 62 98
c 63 99
d 64 100
循环完输出 '\n',


兴国县17867934922: 编程题: 输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数.(分别使用wh -
何皆脑血: 1 while语句:#include<stdio.h> int main(void) {//输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数.char ch;int char_num=0,kongge_num=0,int_num=0,other_num=0;while((ch=getchar())!='\n')//回车键结束输入,并且...

兴国县17867934922: 已知char ch;执行语句“while(ch=getchar()!='\n');”时输入“abcde<回车>”后,变量ch的值是 -
何皆脑血: while(ch=getchar()!='\n'); 因为"!="的优先级高于"=",所以while(ch=getchar()!='\n');等价于while(ch=(getchar()!='\n'));就是先进行getchar()!='\n'的判断,然后把判断结果赋值给ch,ch不是0就是1,因为最后输入回车于是getchar()!='\n'就为假,ch就等于0了,而NULL这个宏值就是0如果写成while((ch=getchar())!='\n'); 那么最后ch就是'\n'(就是10)

兴国县17867934922: 已知有声明"char ch;int a;"执行语句"scanf("%c%d",&ch,&a);"时从 -
何皆脑血: %c的格式符获取任意一个字符,这里...

兴国县17867934922: 已知char ch;执行语句“while((ch=getch())!='\n');”时输入“abcde<回车>”后, -
何皆脑血: 题目有点怪,程序的输出是 ①printf ("%d",ch)还是②printf ("%c",ch)?如果是 ①的话是输出ASCII编码,a的ASCII编码是97,则输出979899100.如果是②的话是输出字符,即输出abcd.希望能帮到你!

兴国县17867934922: 已知有声明"char ch;int a;"执行语句"scanf("%c%d",&ch,&a);"时从 -
何皆脑血: 在scanf("%c%d",&ch,&a);中需要两个回车,你只输入123,那么scanf不会退出,直到接受到你的下一个输出.但是此时ch从输入缓冲区中接受到一个char类型的大小的字符1,a接受到从1之后的内容.如果你的输入是:1234567(回车)5(还需要输入一个字母) 显示的是:a = 234567.

兴国县17867934922: 已知char ch;执行语句 while(ch=getchar()!='\n'); 时输入:abcd<回车>后,变量ch的值是? -
何皆脑血: 单引号表明是字符语句意思是 只要输入的字符不是换行符 就执行while循环的循环体 直到输入换行符 循环结束变量ch的值是'\n' 因为每次输入一个字符以后都会先赋给ch,最后输入换行符以后会先赋给ch然后跟'\n'进行比较

兴国县17867934922: C语言中, 已知char ch; 则错误的赋值语句是( ) A.ch='\0'; B.ch='1'+'2'; C.ch='a+b'; D.ch=10+5; WHY -
何皆脑血: 您好,这道题考察的是char数据类型的存储方式. char字符按照ascii码进行存储,类似b中,是将1的ascii码和2的ascii码相加后存储,然后按照字符来输出.在我的编译器上,都可以通过,其实个人对c这个选项还是比较疑惑的. c选项中,按照从右往左的存储顺序来说,是只能将b存储的,所以ch=b; 这道题其实没有正确答案,选择的话就选c吧//if any question ,call me back!!!

兴国县17867934922: C语言中, 已知char ch; 则错误的赋值语句是( ) A.ch='\0'; B.ch='1'+'2'; C.ch='a+b'; D.ch=10+5; WHY -
何皆脑血: 您好,这道题考察的是char数据类型的存储方式.char字符按照ascii码进行...

兴国县17867934922: 已知char ch; 则错误的赋值语句是( ) A.ch='\0'; B.ch='1'+'2'; C.ch='a+b'; D.ch=10+5; -
何皆脑血: 答案选: C.ch='a+b';char 只是一个字符....而a+b已经包括三个字符了哦.....希望能帮到你...我用程序验证过的...

兴国县17867934922: c++中while的用法 -
何皆脑血: 先说while((ch=getchar())!='\n'):可以把它分成 ch=getchar();while(ch!='\n').前者是调用getchar函数,即ch为从键盘键入的字符.后者括号里指:当键入的不是'\n'(即回车),所以循环结束的条件是输入回车键. 然后,这是一个小写字母转化成大写的程序, if(ch>='a'&&ch<='z') //当输入的字符在a和z之间时 ch=ch-32; //这个字符的ASCII码减32,即实现小写转换为大写.(因为一个字母的ASCII码,小写比大写大32. 其他没什么难懂的了吧

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网