赤昂DS 2022-03-07 14: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 14:10
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    赤昂DS 2022-03-07 14:27

    改成101还是不行,从是存在3个测试点的错误

    回复
    CSDN专家-link 回复 赤昂DS 2022-03-07 14:31

    case 1:{if(i!=11)
    printf("%dst",i);
    else
    printf("%dth",i);
    这里为啥要对11特殊处理呢?

    回复
    赤昂DS 回复 CSDN专家-link 2022-03-07 14:41

    第11名不应该是11th么eleventh

    回复
    展开全部5条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月8日
  • 已采纳回答 3月7日
  • 创建了问题 3月7日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部