该程序非常简单,它给出了最大的公约数。我已经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);