为何这个实现三整数求和的C程序无法正常运行?
问题排查:三个整数求和程序无法正常工作
你的程序核心问题出在scanf的格式字符串上,另外还有两处不规范写法,具体如下:
scanf格式字符串的换行符导致输入阻塞
你写的scanf("%d %d %d\n", &a,&b,&c);里,格式字符串末尾的\n是多余的。scanf处理格式字符串时,会把\n当成空白字符处理,它会一直等待你输入非空白字符才会结束读取操作。这就导致你输入三个整数后,无论按多少次回车,程序都会卡在输入阶段,没法执行后续的输出代码。printf字符串的换行写法不规范
原代码里printf的字符串直接换行,虽然部分编译器能识别,但标准写法应该用转义字符\n来表示换行,这样代码的可移植性更好。main函数缺少返回值
按照C语言标准,main函数需要返回一个int类型的值,通常用return 0;表示程序正常结束。
修正后的完整代码:
#include <stdio.h> #include <stdlib.h> int t7(int i,int j,int k){ return (i+j+k); } int main(){ int a,b,c; printf("This program adds three integer values.\nPlease enter three integers separated by a space:\n"); scanf("%d %d %d", &a,&b,&c); printf("The result of %d+%d+%d is %d\n",a,b,c,t7(a,b,c)); return 0; }
现在运行程序,输入三个整数(不管是同一行用空格分隔,还是分多行输入),按下回车后就能正常输出求和结果了。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

