程序非常简单,它提供了最大的公约数作为输出。我已经验证了我的算法。编译器没有发出错误,但它仍然不会产生任何输出。
#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;
}
}
答案 0 :(得分:2)
这可能是由于输出缓冲造成的。将\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
)
答案 1 :(得分:1)
问题是
scanf("%d\n",&a);
scanf("%d\n",&b);
删除\n
,只需
scanf("%d",&a);
scanf("%d",&b);
没问题
答案 2 :(得分:0)
这一行:
printf("enter two numbers");
不会打印换行符(\n
),因此输出不会刷新到控制台。
尝试在printf
:
fflush(stdout);
答案 3 :(得分:0)
scanf("%d\n",&a);
scanf("%d\n",&b);
到
scanf("%d%*c",&a);
scanf("%d%*c",&b);