C代码以非零状态退出

时间:2017-10-28 18:53:19

标签: c

我正在用C编写一个程序,该程序应该要求两个数字并找到他们的LCM和GCF。但是,在询问这两个数字后,代码才会以非零状态退出。 Link to code here,我们将不胜感激。

#include <stdio.h>

int main()
{
    //Declare things
    int i;
    int num1,num2 = 0;
    int foundLCM = 0;
    int foundGCF = 0;
    //Ask for input
    printf("\nEnter a positive integer: ");
    scanf("%i", &num1);

    printf("\nEnter another positive integer: ");
    scanf("%i", &num2);
    //Set i to the bigger number
    if(num1 >= num2)
    {
        int i = num1;
    }
    else
    {
        int i = num2;
    }

    //find the GCF
    while(foundGCF == 0)
    {
        if(num1%i == 0 && num2%i == 0)
        {
            printf("\nGreatest Common Factor: %i\n", i);
            foundGCF = 1;
        }

        i--;
    }

    //Find the LCM
    while(foundLCM == 0)
    {
        if(i%num1 == 0 && i%num2 == 0)
        {
            printf("Lowest Common Multiple: %i", i);
            foundLCM = 1;
        } 

        i++;
    }

    //Kill
    return 0;
}

2 个答案:

答案 0 :(得分:1)

您需要删除第21行和第27行的i重新声明,并分别将num1的值分配给num2i。就目前而言,i在递增/递减中使用时不会被初始化,这会导致程序崩溃。

此外,您需要在GCF循环之后和LCM循环之前将sched_getcpu()恢复为其初始值。否则,在没有共同因素的情况下,它会给出错误的价值。我建议将初始值存储在其他变量中。

请参阅question

请注意,这不是计算GCF和LCM的最佳方法。您可以查看Euclid算法和实现以获取更多信息。

答案 1 :(得分:0)

变量i未初始化。

t.c: In function 'main':
t.c:21:7: warning: unused variable 'i' [-Wunused-variable]
int i = num1;
    ^
t.c:27:7: warning: unused variable 'i' [-Wunused-variable]
int i = num2;
    ^
t.c:37:7: warning: 'i' may be used uninitialized in this function [-Wmaybe-uninitialized]
    printf("\nGreatest Common Factor: %i\n", i);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

您应该int i = num1;替换i = num1; int i = num2;