gpt4 book ai didi

c - 我练习的浮点异常(C语言)

转载 作者:行者123 更新时间:2023-11-30 15:31:37 24 4
gpt4 key购买 nike

我刚刚编写了一个实现二项式函数的程序(n!/k!*(n-k)!)

我可以毫无问题地编译我的程序,但是当我扫描 2 个 int(n 和 k)时,它显示“浮点异常”。

我尝试了很多方法来解决它,但我找不到问题,因为我不擅长 C 编程:(我正在学习。有人可以帮助我吗?非常感谢。

#include <stdio.h>
#include <stdlib.h>

int factorial( int n ){
int result;
if( n == 0 ){
result = 0;
} else {
result = n * factorial((n - 1));
}
return result;
}

char *stringa_binomiale(int n, int k){

char *s;
s=malloc(sizeof(char)*20);

int b;

b = factorial(n)/(factorial(k)*factorial(n-k));

sprintf(s,"%i su %i fa %i",n ,k ,b);

return s;
}

int main (void){

int n;
int k;
char *s;
s=malloc(sizeof(char)*20);

printf("n:");
scanf("%i",&n);
printf("k:");
scanf("%i",&k);

s= stringa_binomiale(n,k);
printf("%s \n", stringa_binomiale(n, k));

free(s);
return 0;
}

最佳答案

对于任何输入,您的 factorial 函数始终返回 0,因为基本情况是错误的。您的基本情况返回 0,当您乘以它时,您将得到 0

因此,您在 stringa_binomiale 中除以 0,这会导致浮点异常。

基本情况应该是n == 1并且它应该返回1

关于c - 我练习的浮点异常(C语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24651285/

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