字符输入输出问题
char c;for(c=getchar();getchar()!='#';c=getchar()){
putchar(c);
}
输入的字符为:12345#
请问各路大神结果是多少,并且为什么会这样输出 本帖最后由 临时号 于 2022-6-9 13:23 编辑
执行结果是13
首先,for循环进入初始化,c=getchar()读到了1,并将1赋值给了c
然后,for循环进入了条件’判断,getchar()!='#'又读到了2,因为不等于#,所以进了循环,输出了c,也就是1
然后,for循环执行了循环后需要执行的c=getchar()又读到了3,并将3赋值给了c
然后,for循环又进入了条件判断,getchar()!='#'又读到了4,因为不等yu#,所以进了循环,输出了c,也就是3
然后,for循环执行了循环后需要执行的c=getchar()又读到了5,并将5赋值给了c
最后,for循环进入了条件’判断,getchar()!='#'又读到了#,因为#等于#,条件不符合,所以退出了循环,程序结束
如果你想要输出12345的话,需将程序写成
char c;
for(c=getchar();c!='#';c=getchar()){
putchar(c);
}
如果还没看懂可以回复我追问 执行结果是在屏幕上输出12345.
程序运行时候,首先一个getchar()读入了1,比较一下,不是#,于是进入循环,输出了一个1.
然后读入了2,比较一下,不是#,于是进入循环,输出了一个2.
继续循环读入3、4、5,不是#,于是输出。这时在屏幕上输出了12345.
第6圈循环,读入了#,比较是#,于是跳出循环,不输出#。
临时号大哥给出的执行结果13,我也不认同。
char c;
for(c=getchar();getchar()!='#';c=getchar()){
putchar(c);
}
输入的字符为:12345#
c='1' getchar()=‘2’
输出1
c='3' getchar()=‘4’
输出3
c='5' getchar()=‘#’退出
char c;
for(c=getchar();c!='#';c=getchar()){
putchar(c);
}
顶级太阳 发表于 2022-6-9 08:14
执行结果是在屏幕上输出12345.
程序运行时候,首先一个getchar()读入了1,比较一下,不是#,于是进入循 ...
getchar()是读一个字符
而在初始化内,c=getchar(),这个时候读了一个字符
在条件判断内,getchar()!='#',这个时候又读了一个字符
为什么?因为程序很傻,你不能以人的思维去看待,getchar这个函数你调用了两次,那你接收到的返回值也是两次
所以,当你getchar()!='#'时,程序会重新给你读一个输入进来
你如果不想再重新读一个输入进来需把条件写成c=getchar()
你不信你去执行一下楼主的程序,我的每一次回答都会把楼主的程序执行一遍 临时号 发表于 2022-6-9 13:21
getchar()是读一个字符
而在初始化内,c=getchar(),这个时候读了一个字符
在条件判断内,getchar()!='#', ...
明白了,谢谢。看起来我对于for的循环理解还是有误解的。你这一句程序很傻,提醒了我。谢谢。 临时号 发表于 2022-6-9 00:04
执行结果是13
首先,for循环进入初始化,c=getchar()读到了1,并将1赋值给了c
然后,for循环进入了条件’判断 ...
谢谢了 顶级太阳 发表于 2022-6-9 08:14
执行结果是在屏幕上输出12345.
程序运行时候,首先一个getchar()读入了1,比较一下,不是#,于是进入循 ...
答案确实是13,我刚开始也和你想的一样
页:
[1]