新手C语言求助一道题。

2025-03-02 09:07:02
推荐回答(5个)
回答1:

for(c=getchar(); getchar()!=’#’; c=getchar())

 

输入12345#后,首先进入for循环要执行第一个c=getchar()给c赋初始值,即为第一个字符'1',c=‘1’,而后进行第二个表达式getchar()!='#'的判断,此时getchar()得到的字符是'2'满足条件但没给c赋值,c还是等于'1',后执行putchar(c),后执行下一次循环,先执行第三个表达式c=getchar(),给c赋值,此时c='3',然后再进行第二个表达式getchar()!='#'的判断,此时getchar()得到的是'4',满足循环执行条件执行putchar(c),后再执行第三个表达式c=getchar(),此时c='5', 再执行第二个表达式getchar()!='#',这时的getchar()已经为'#'号,所以不满足循环执行条件了,不再执行putchar(c),尽管此时c中的值是'5'也不会输出了

回答2:

确实是13 第一次for c=1,这个没问题,判断条件从缓冲区中取2,判断后丢弃,然后输出c=1
c再从缓冲区中取c=3 第一次for结束
第二次 取4判断然后丢弃 输出C=3 再从缓冲区中取c=5 第二次结束
第三次 取#判断 for结束
所以输出13
over

回答3:

135
getchar每次只接收一个字符,放在缓存中。如果再用getchar接收一次,原来的就会被覆盖掉。
for(c=getchar(); getchar()!=’#’; c=getchar())我们把第一个c=getchar()称为1getchar,第二个c=getchar()称为2getchar。

第一次进入循环,1getchar接收1,然后判断,getchar()!=’#’成立,然后进入循环,输出c;然后再进行2getchar,接收2,然后再判断getchar()!=’#’成立,然后继续1getchar,接收3,判断getchar()!=’#’成立,输出3;然后再进行2getchar,接收4,然后再判断getchar()!=’#’成立,然后继续1getchar,接收5,然后再判断getchar()!=’#’成立,输出5,然后再进行2getchar,接收#,判断getchar()!=’#不成立,循环结束!
够详细了吧

回答4:

看是for循环。
c=getchar(); //读入1,c='1'

getchar()!=’#’; //读入2

putchar(c); //输出c,即1

c=getchar() //读入3,c='3'

getchar()!=’#’; //读入4
putchar(c); //输出c,即3
c=getchar(); //读入5,c='5'
getchar()!=’#’; //读入#,不等式不成立
跳出循环。

回答5:

应该是135,那个"#"应该改成在英文状态下。