新手C语言求助一道题。
输入12345#后,写出下列程序的输出结果。voidmain(){charc;for(c=getchar();getchar()!=’#’;c=getchar())put...
输入12345#后,写出下列程序的输出结果。
void main()
{ char c;
for(c=getchar(); getchar()!=’#’; c=getchar())
putchar(c);
} 展开
void main()
{ char c;
for(c=getchar(); getchar()!=’#’; c=getchar())
putchar(c);
} 展开
6个回答
展开全部
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'也不会输出了
展开全部
确实是13 第一次for c=1,这个没问题,判断条件从缓冲区中取2,判断后丢弃,然后输出c=1
c再从缓冲区中取c=3 第一次for结束
第二次 取4判断然后丢弃 输出C=3 再从缓冲区中取c=5 第二次结束
第三次 取#判断 for结束
所以输出13
over
c再从缓冲区中取c=3 第一次for结束
第二次 取4判断然后丢弃 输出C=3 再从缓冲区中取c=5 第二次结束
第三次 取#判断 for结束
所以输出13
over
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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()!=’#不成立,循环结束!
够详细了吧
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()!=’#不成立,循环结束!
够详细了吧
更多追问追答
追问
大神太感谢了。。我觉得你的答案是对的,但为撒老师给的答案是1,3
追答
不好意思,发现我的思路有问题。请误采纳。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看是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()!=’#’; //读入#,不等式不成立
跳出循环。
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()!=’#’; //读入#,不等式不成立
跳出循环。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是135,那个"#"应该改成在英文状态下。
追问
答案是1,3.不会做。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询