如何解决浮点异常核心已弃用-非平方数查找器
我有问题。我已经花了好几个小时了,我终于以为我有了草稿,我解决了我犯的一些错误,但是现在当我运行它时,它会键入“ Floating point exception(core dumped)”。我能够解决其他一些问题,但我认为我必须从头开始才能克服这个问题,我不知道是什么原因造成的,我想知道这里是否还有更多知识渊博的人可以看看并尝试找出可能的错误。我的程序应该找到非平方数-不能被整数平方整除的数字。它首先找到要除以的平方,然后将非平方数候选数除以指定的整数。然后输入找到的所有数字。我认为我很可能在使用指针时犯了一个错误,我还没有完全掌握这些指针,并且很可能仍然无法解决相关问题。
#include <stdio.h>
#include <limits.h>
#include <math.h>
#include <stdlib.h>
int isNonSq (int a,int sqr) {
int b=0.75*a;
for (int i=2;i<b;i++) {
if (a%sqr[i]==0) return 0;
}
return 1;
}
int main ( void ) {
int a;
int * resNum;
int * sqr;
while (!feof(stdin)) {
if (scanf(" %d",&a)!=1||a<=0) {
printf("Nespravny vstup.\n");
return 0;
} else {
int b,c=1;
b=0.75*a;
resNum=(int)malloc(a*sizeof(resNum));
sqr=(int)malloc(a*sizeof(*sqr));
for (int i=2;i<sqrt(a);i++)
sqr[i]=pow(i,2);
for (int i=1;i<b;i++) {
if (isNonSq(i,sqr)) {
resNum[c]=i;
c++;
}
}
}
}
for (int i=1;i<a;i++) {
printf(" %d",resNum[i]);
}
printf("\n");
free(resNum);
free(sqr);
return 0;
}
解决方法
这可能是由于NaN或无穷大而发生的,我建议您使用gdb来了解运行已编译的c代码时发生的情况。 https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_gdb.php
祝你好运!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。