慕哥1519171
管道就是把前一个程序的输出作为参数传给后一个程序,这里统计程序输出的内容就是”工资总和+逗号+人数“,而求平均值程序接收输入时就是按照顺序来判断的,逗号左边就被识别为工资总和,逗号右边就被识别为人数了。
慕粉9398731
可否附上完整代码,我这边运行了一下你的代码,是可以跳出循环的,推测可能是版本问题
qq_慕仔9282782
慕后端1351523
标准答案是4个,华为编程规范也是4个,慕课网的c讲师都说也是4个,所以就按4个来
qq_Chen_inrC28
你 sum 的输出个是和avg的输入要求不匹配。
avg 要求输入的格式是 "%d,%d" ,即 2个整数,并且用 逗号隔开。
但是你 sum 的输出格式是 :"s is value %d , geshu is value %d",即你的输出是: s is value 3, geshu is value 1, 这种,和avg的输入要求不匹配。
qq_慕设计308330
个人理解:
重定向(>> 或 > 或 <) 的作用是将内容输出到文件或者将文件输入到程序
比如之前课程将数据输出到某个txt文件中,或者通过输入重定向(<)将txt文件的内容输入到程序中。

管道(|)是将程序和程序之间形成“链接”,
比如课程中的计算input.c与avg.c通过管道链接,实现统计平均数的功能,如下图:

同样,在Linux命令操作中许多操作也是如此,比如:ls /usr/ | grep mysql 命令,利用管道将ls和grep这两个工具(应用)连接起来。
L_Carnegie
兄弟你不贴源代码,别人怎么知道?
qq_淳简拉基茨德_mnuvG5
所有代码发出来看看啊
二十三年秋丶
break没有放在if判断语句里面,所以无论输入的值是什么break都会执行,跳出while循环
慕先生4485564
这个avg.out里输入的两个数一个是和,一个是个数,所以平均数是总和除以个数,即第一个数除以第二个数。而input.out是计算所有输入数的总和和个数,通过管道把值传给avg.out.
慕桂英7038498
可以从windows系统盘或其他磁盘划出一部分空间装个双系统,要么直接装个虚拟机最省事。
慕粉4089541
已自行解决,scanf(“%d”,&i);多加了一个换行符
师惊雷
好了,原来就个逗号的问题
qq_宝宝_15
输入和输出的代码要相对应,也就是printf(%d,%d),scanf(%d,%d),这样的
风吹过的夏天0
老师你还有相关课程没,感觉讲的很好,很受用
慕粉0808371138
用心点
天高云淡念


!!!
qq_打不败的小强_03697775
这个谁知道呢--
qq_人生若如初见_5
没有加"," 输出就是6003,这个变成avg中的输入是会被看成是一个数
dharmabum
加一个%s,只接收不使用
别吵我睡觉
第一个程序的结果通过 管道 作为 输入流 输入到程序第二个程序里
励亮
是不是除了0啊。。贴代码看看啊。。
晚安
是我自己没理解好占位的意思,没注意到输入的时候也是逗号分开的
别担心_有我陪着你
............
mrhouse
./gongzi.out | ./average.out 这样 你好打反了
还有你在 gongzi.c 中建议你不要给 i 上来就赋值为0,这要会导致算到 IF 就会直接退出了!
此生流离
设计就是这样吧,如果输入流是一个文档的话,你的 <*.txt命令不是也能在屏幕上看见嘛。你看linux下输入密码的时候就不显示,不同的设计,没有为什么吧~
50贝利哦
cc.b.c输出的应该是a.out,-o后面跟的文件名意思是给编译的结果重新起一个名字。而后面那个问题,由于管道的作用是把前面程序执行的结果输入后面的程序中,所以不仅要看两个程序的正确性,还要看二者的关联。
雨芽
应该是输入的次数已经保存到了变量n中,s取的是第二个代码块中的值,所以就直接计算中来结果了
ibss
无夹心的奥利奥
while循环里面少了一句 scanf("%d",&i);