gpt4 book ai didi

c - 浮点异常: 8

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

为什么我收到错误:浮点异常:8

#include<stdio.h>
//grid problem
int fact(int n)
{

int i,f=1;
if(n==0)
return 1;
for(i=1;i<=n;i++)
f*=i;
return f;
}

int uniquePaths(int A, int B) {
float m;
m=fact(A+B-2)/(fact(A-1)*fact(B-1));
return m;
}

int main(int argc, char const *argv[])
{
int a,b;
//aXb grid
scanf("%d%d",&a,&b);
printf("%d\n",uniquePaths(a,b) );
return 0;
}

最佳答案

如果使用函数断言添加前置条件和后置条件,则可以确保参数和函数结果具有合理的值:

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

//grid problem
int fact(int n)
{
assert(n >= 0);
int i, f = 1;
if (n == 0) {
return 1;
}
for (i = 1; i <= n; i++) {
f *= i;
}
assert(f >= 1);
return f;
}


int uniquePaths(int A, int B)
{
assert(A >= 1);
assert(B >= 1);
int q = fact(A - 1) * fact(B - 1);
assert(q > 0);
int m = fact(A + B - 2) / q;
assert(m >= 1);
return m;
}


int main(int argc, char const *argv[])
{
int a, b;
//aXb grid
int n = scanf("%d%d", &a, &b);
if (n == 2) {
printf("%d\n", uniquePaths(a, b));
} else {
fprintf(stderr, "invalid input\n");
exit(1);
}
return 0;
}

例如,在我的机器上,使用输入 10 10 运行上面的程序将导致

t: t.c:16: int fact(int): Assertion `f >= 1' failed.
Aborted

(但是我不知道为什么会出现浮点异常。)

关于c - 浮点异常: 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44403942/

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