请问大神为什么这个C语言程序运行结果是13?我怎么觉得是12345?求大神解释,这是怎么运行的?

#include
#include

int main(void)
{
char c;
for(c=getchar();getchar()!='#';c=getchar())
putchar(c);
}图片说明

c
0

8个回答

执行情况是这样的:
首先执行getchar()得到'1';
然后执行getchar()得到'2',判断不等于'#',执行putchar(c),输出‘1’;
然后执行c=getchar()得到'3';
然后执行getchar()得到'4',判断不等于'#',执行putchar(c),输出‘4’;
然后执行c=getchar()得到'5'
然后执行getchar()得到'#',判断等于'#',结束循环。

2
qq_31429225
EveryLink 回复weixin_41461554: 还有个问题,请问printf("%d,%o,%x",'a'/4,0x14,014);的输出结果为什么是24,24,c
一年多之前 回复
weixin_41461554
weixin_41461554 一步一步分析 如图所示
一年多之前 回复
treewutong
treewutong 写错了,第二次输出的是‘3’
一年多之前 回复

c=getchar();读取1
getchar()读取2,判断不等于#
打印1
然后读取3
在读取4判断不等于#
打印3
在读取5
读取#判断循环结束

整个过程捋了下,大概是这样
改成for(c=getchar();c!='#';c=getchar())就没问题

2

getchar()读取键入数据
for里面就有三个
第一个赋值给c
中间判断!+"#"的那个getchar()已经不是1了,而是读取的新键入得值
然后第三个getchar()重新赋值给c,此时对应键入的值是3了已经。

依次推类
for循环第一个是初始化,中间的是判断条件,每次都会执行。后面的是执行完循环体后执行的表达式。
就是说除了第一次c=getcher()后

假设你的输入为1234567........#
第一次执行for
c=getcher() //1
getcher()!="#" //2!="#"
putchar(c); //输出c,此时c为1
c=getcher() //3

第二次执行
getcher()!="#" //4!="#
putchar(c); //此时c=3
c=getcher() //5

第三次执行
getcher()!="#" //6!="#"
putchar(c); //5,因为此时c为5,在上一次for结束时执行表达式赋值的
c=getcher() //7

.....
当读取到#
这一步判断"#"!="#"不成立,这时不执行循环体了,就是说此时的putchar(c);不会执行

以后就是这样

2

答案给的是135,不明白为什么?

0

在for循环的条件表达式中做循环判断是指针就移位

0

getchar()用重复了

0

char c;实际对应的数字啊 几个数字之和就是13了。

0

关键代码如下:
for(c=getchar();c!='#';c=getchar())
putchar(c);

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!

相似问题

1
c语言链表排序问题(非交换成员)
1
Xcoad编译成功但是输入数字后运行不出来是怎么回事
2
各位大神能看一下吗,为什么运行无法输出字符串啊,这么短可是看了好久一直不知道错在哪,拜托了!
1
大佬们帮我看一下 简单点 我是萌新
0
请各位大神看看,为什么输出不了迷宫通路呀,拜托了!
0
这是我写的迷宫问题的代码,请问各位大神为什么最后输出不了迷宫通路呀
2
c语言简单题求解三角形问题
3
帮帮可怜热情的孩子吧 我做了半天总不行 可以微信红包(A1426237670) 谢谢你们啊 要哭了......
0
请问我这个程序为什么内存超限
0
c语言敲得飞机大战出现问题,怎么解决?
1
求关于c语言的简单项目,求推荐
0
王浩算法问题 能帮我分析下这段程序吗,需要一个大体的程序框架分析,这个王浩算法有点儿类似于编译原理。
0
PTA中提交后,0出现最多时错误!我这个代码哪里应该修改一下?
2
void函数怎么调用scanf
3
大佬们,怎么把这个程序算非常大的数时 计算用的时间更短 ?
1
uint32_t在C语言里起什么作用,他是怎么定义使用的?
1
这个题我不太懂,好心的大佬们帮我解答一下
1
数据结构题目(c语言),把只能实现带小括号的表达式计算改为可以带小中大括号的表达式计算
2
C语言,如何按值查找,然后返回这个值在链表中的位置?
2
C语言文件操作问题!!