新手求助 大神们帮看看 open上的一道题 1.10 03 成绩排序 不知道为啥只给六分 我感觉没啥

2019-01-02 21:19发布

问题:

include <stdio.h>

include <string.h>

void z(char b[100],char a[100][100],int n,int c[100])
{
int i,j,temp;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(c[i]==c[j])
{
if(a[i][0]<a[j][0])
{
temp=c[i];
c[i]=c[j];
c[j]=temp;
strcpy(b,a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],b);
}
}
if(c[i]>c[j])
{
temp=c[i];
c[i]=c[j];
c[j]=temp;
strcpy(b,a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],b);
}
}
}
for(i=0;i<n;i++)
{
printf("%s %d\n",a[i],c[i]);
}
}
int main()
{
int i,j,n,temp;
char a[100][100],b[100];
int c[100];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s %d",b,&c[i]);
strcpy(a[i],b);
}
z(b,a,n,c);
}

回答1:

错误原因很简单,题目要求你成绩相同按照名字字典序排序,你的程序没有做到这一点。



回答2:

检查看看是不是scanf中间空格导致的



标签: