【发布时间】:2017-02-23 13:37:18
【问题描述】:
我是一个学习 C 的菜鸟,并试图创建一个程序,提供 2 个输入数字的最大公约数。但是,编译成功后,在 scanf 提示符下输入数据后出现标题错误。我一直试图解决它,但不能。请忽略双斜线。
//Declare external libraries and function calls //
#include <stdio.h>
void gcdFunction (int *variable1, int *variable2);
// Main Program//
int main(void)
{
int firstNumber = 0, secondNumber = 0;
printf("Please enter first value \n");
scanf("%d", &firstNumber);
printf("Please enter second value \n");
scanf("%d", &secondNumber);
//Call function passing 2 address parameters //
gcdFunction(&firstNumber, &secondNumber);
}
// Call function, passing parameters as pointers //
void gcdFunction(int *variable1, int *variable2)
{
int i, z;
while (i != 0)
{
i = *variable2;
*variable2 = *variable1 % *variable2;
*variable1 = i;
}
z = *variable1;
printf("\nThe GCD of the two values entered is: %d", z);
}
【问题讨论】:
-
您的意思是标记 C# 而不是 C?
-
是的,我是菜鸟。
-
i未初始化.... -
你应该循环
while (*variable2 != 0),而不是while (i != 0)。或者,您可以在进入循环之前设置i = *variable2,并在每次迭代结束时而不是在每次迭代开始时再次设置。 -
@barakmanos *variable2 变为零,在循环条件中检查 i 是否为零,然后在下一次迭代中使用 *variable2。这与是否在循环开始或结束时检查循环条件无关。它只修复了“未初始化”问题,而不是 FPE
标签: c runtime-error