赤昂DS 2022-03-07 22:04 采纳率: 100%
浏览 31
已结题

总有三个测试点过不了

img

img

#include<stdio.h>
int main()
{
int member,n[100],i,j,temp,grade_1;
scanf("%d",&member);
for(i=1;i<=member;i++)
{
scanf("%d",&n[i]);
}
grade_1=n[1];
for(i=1;i<=member;i++){
for(j=1;j<=member-i;j++){
if(n[j+1]>n[j]){
temp=n[j+1];
n[j+1]=n[j];
n[j]=temp;
}
}
} for(i=1;i<=member;i++)
{
if(n[i]==grade_1)
break;
}
switch(i%10){
case 1:{if(i!=11)
printf("%dst",i);
else
printf("%dth",i);
break;}
case 2:{if(i!=12)
printf("%dnd",i);
else
printf("%dth",i);
break;}
case 3:{if(i!=13)
printf("%drd",i);
else
printf("%dth",i);
break;}
default:printf("%dth",i);break;
}
return 0;
}

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-03-07 22:10
    关注

    for(i=1;i<=member;i++)
    {
    scanf("%d",&n[i]);
    }
    这是错误的。member允许值是1-100,你数组大小也定义成100,那么n[100]就越界了
    既然你想放弃掉数组的第0个元素,那么你必须定义数组大小至少为101,才能存放最大值为100个的学生信息

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月8日
  • 已采纳回答 3月8日
  • 创建了问题 3月7日