繁体   English   中英

C 代码以非零状态退出

[英]C Code exits with non-zero status

我正在用 C 编写一个程序,它应该要求两个数字并找到它们的 LCM 和 GCF。 但是,在询问这两个数字后,代码只是以非零状态退出。 链接到这里的代码,任何帮助将不胜感激。

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

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

此外,您需要在 GCF 循环之后和 LCM 循环之前将i恢复到其初始值。 否则,在没有公因数的情况下,它会给出错误的值。 我建议将初始值存储在其他一些变量中。

https://repl.it/NKgR/12

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

变量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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM