该代码在编译时显示没有错误,但不显示任何输出

该程序非常简单,它给出了最大的公约数。我已经validation了我的algorithm。编译器没有发生错误,但仍然不会产生任何输出。

#include<conio.h> #include <stdio.h> int gcd(int ,int ); int main() { int a,b,j; printf("enter two numbers"); scanf("%d\n",&a); scanf("%d\n",&b); j=gcd(a,b); printf("gcd is %d",j); getch(); return 0; } int gcd(int x, int y) { int temp,c; if(x<y) { temp=x; x=y; y=temp; } if(y<=x&&(x%y==0)) return y; else { temp=x%y; c=gcd(y,temp); return c; } } 

问题是

 scanf("%d\n",&a); scanf("%d\n",&b); 

删除\n ,只是

 scanf("%d",&a); scanf("%d",&b); 

好的

这可能是由于缓冲输出。 将\n添加到您的printfs ,看看它是否修复它:

 printf("enter two numbers\n"); printf("gcd is %d\n",j); 

或者,您可以添加对fflush(stdout)调用来刷新输出缓冲区:

 printf("enter two numbers"); fflush(stdout); printf("gcd is %d",j); fflush(stdout); 

除此之外,它(几乎)在我的设置上按预期工作:

 enter two numbers 4783780 354340 1 gcd is 20 

唯一的事情是\n强迫它读一个额外的字符。 (我选择了1

这一行:

 printf("enter two numbers"); 

不会打印换行符( \n ),因此输出不会刷新到控制台。

尝试在printf之后添加这个:

 fflush(stdout); 
 scanf("%d\n",&a); scanf("%d\n",&b); 

 scanf("%d%*c",&a); scanf("%d%*c",&b);