poj提示Segmentation fault:段错误,检查是否有数组越界,指针异常,访问到不应该访问的内存区域

Input只有一组测试数据,输入一个数T(0<T<=20),代表本局游戏水果出现的批次,接下来是一个整数(0<n<=10),代表这一批次的水果总数。接下来一行有n个整数代... Input只有一组测试数据,输入一个数T(0<T<=20),代表本局游戏水果出现的批次,接下来是一个整数(0<n<=10),代表这一批次的水果总数。接下来一行有n个整数代表不同水果的分数(保证每个分数都不同,分数最高是50,最低是0)。
Output
输出一个整数,表示佳姐这局游戏的得分。
#include<stdio.h>
#include<stdlib.h>
int compare(const void *a,const void*b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int pi,len,much[20][10];
int i,j,sum=0;
scanf("%d",&pi);
for(i=0;i<pi;i++)
{
scanf("%d",&len);
for(j=0;j<len;j++)
{
scanf("%d",&much[i][j]);
getchar();
}
qsort(much,len,sizeof(much[0][0]),compare);
sum=sum+much[i][len-1];
}
printf("%d",sum);
return 0;
}
展开
 我来答
4443248866c59
推荐于2018-03-08 · 知道合伙人数码行家
4443248866c59
知道合伙人数码行家
采纳数:4064 获赞数:87690
本人热心公益,喜欢帮助他人解决问题。

向TA提问 私信TA
展开全部
1:一般都是非法内存操作,例如数组越界,例如申请a[5],却访问到a[5]或者a[6],这也会有很多情况,可能是循环操作时循环变量控制有问题,可能是字符串拷贝时长度发生溢出;
2:指针指向了非法内存,例如申明一个指针,但是没有对指针进行初始化,直接就引用,或者引用里面的元素或者函数,或者没有分配内存就进行释放等,另外,申请内存还要检查是否申请成功,如果没有申请成功也会出现这种情况;
3:单步调试或者加打印信息,细心一点总可以找到错误的,注意编译成调试版本;
4:如果是linux,可以产生core文件,从core文件查看出错的地方。
porker2008
2014-05-10 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部

qsort用错了


改成这样

qsort(much[i], len, sizeof(much[0][0]), compare);
追问
改了后poj还是出现runtime error
追答
题号是哪个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式