gpt4 book ai didi

C 代码以非零状态退出

转载 作者:行者123 更新时间:2023-11-30 20:59:35 26 4
gpt4 key购买 nike

我正在用 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;
}

最佳答案

您需要删除 i 的重新声明在第 21 行和第 27 行,只需分配 i 的值至num1num2分别。就目前情况而言,i使用自增/自减时未初始化,导致程序崩溃。

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

参见https://repl.it/NKgR/12

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

关于C 代码以非零状态退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46993303/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com