gpt4 book ai didi

C 浮点异常(核心转储)

转载 作者:太空宇宙 更新时间:2023-11-04 01:21:01 25 4
gpt4 key购买 nike

我是一个学习 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);
}

最佳答案

问题出在这个循环中:

while (i !=0){
i = *variable2;
*variable2 = *variable1 % *variable2;
*variable1 = i;
}

在这里,如果*variable2变为 0 它在下一次迭代中用作模右侧,因为 i 检查循环条件后设置。改成

while (*variable2 !=0){
i = *variable2;
*variable2 = *variable1 % *variable2;
*variable1 = i;
}

那么错误就不会再发生了。

关于C 浮点异常(核心转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42417321/

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