为什么模数操作数不能用于我的C代码中的输入变量?

时间:2014-02-16 16:19:40

标签: c

我不是C或其他新手,我只是做了几次练习......

    for (i=0;i<no_1;i++)
    {
        if (no_1%i==0)
        {
            number_1=i;
        }

此程序旨在显示两个输入数字的最高公因数。问题是,我的代码在用户输入第二个数字后不断停止,我得到此选项以向Microsoft发送错误报告(我正在使用Windows XP)

我已经删除了所有代码,并意识到导致程序停止的是模数运算符,但老实说我不明白为什么。我尝试在程序中单独使用模运算符,我测试10%2==0。这工作得很好。因此,通过演绎,我的问题必须是因为我使用的数字是用户输入的变量。但那为什么它仍然不起作用?我错过了一些黄金法则吗?

2 个答案:

答案 0 :(得分:4)

问题如下:

for (i=0;i<no_1;i++)

1启动计数器:

for (i=1;i<no_1;i++)

您目前正在导致divide-by-zero错误。

答案 1 :(得分:0)

将您的代码更改为:

int main()
{
    int no_1,no_2,number_1=0,number_2=0,i,j;

    printf("Enter a number: ");
    scanf("%d",&no_1);

    printf("\nEnter another number: ");
    scanf("%d",&no_2);

    for (i=1;i<no_1;i++)
    {
        if (no_1%i==0)
        {
            number_1=i;
        }
    }

    for ( j=1;j<no_2;j++)
    {
        if (no_2%j==0)
        {
            number_2=j;
        }
    }

    if (number_1==number_2)
        printf("The HCF is %d",number_1);

    else
        printf("The HCF is 1");

        return 0;
}

这种情况正在发生,因为您从0启动了计数器,导致除以零错误。对1

两个loop.启动计数器