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;
} 展开
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;
} 展开
2个回答
推荐于2018-03-08 · 知道合伙人数码行家
关注
展开全部
1:一般都是非法内存操作,例如数组越界,例如申请a[5],却访问到a[5]或者a[6],这也会有很多情况,可能是循环操作时循环变量控制有问题,可能是字符串拷贝时长度发生溢出;
2:指针指向了非法内存,例如申明一个指针,但是没有对指针进行初始化,直接就引用,或者引用里面的元素或者函数,或者没有分配内存就进行释放等,另外,申请内存还要检查是否申请成功,如果没有申请成功也会出现这种情况;
3:单步调试或者加打印信息,细心一点总可以找到错误的,注意编译成调试版本;
4:如果是linux,可以产生core文件,从core文件查看出错的地方。
2:指针指向了非法内存,例如申明一个指针,但是没有对指针进行初始化,直接就引用,或者引用里面的元素或者函数,或者没有分配内存就进行释放等,另外,申请内存还要检查是否申请成功,如果没有申请成功也会出现这种情况;
3:单步调试或者加打印信息,细心一点总可以找到错误的,注意编译成调试版本;
4:如果是linux,可以产生core文件,从core文件查看出错的地方。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询