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

时间:2012-01-01 23:10:02

标签: c windows

程序非常简单,它提供了最大的公约数作为输出。我已经验证了我的算法。编译器没有发出错误,但它仍然不会产生任何输出。

#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;

        }
}

4 个答案:

答案 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);