未来925 2021-12-15 02:40 采纳率: 92.3%
浏览 29
已结题

答案错误33到底错在哪了

img


输入N个学生的姓名和语文成绩,排出名次,并且输出每个学生的姓名。
#include<stdio.h>
typedef struct student
{
char name[30];
int score;

}STUDENT;
void m(STUDENT stu[],int n)
{
STUDENT stu1;
int i,j,m[60];
for(i=0;i<n;i++)
m[i]=stu[i].score;
for(i=0;i<n-1;i++)
for (j = 1; j < n; j++)
if (m[i] < m[j])
{
stu1 = stu[i];
stu[i] = stu[j];
stu[j] = stu1;
}
}
int main()
{
STUDENT stu[60];
int i,j,n;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%s", stu[i].name);
scanf("%d", &stu[i].score);
}
m(stu,n);
for (i = 0; i < n; i++)
printf("%d %s %d\n", i + 1, stu[i].name, stu[i].score);

return 0;

}

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-12-15 08:43
    关注

    修改如下,供参考:

    #include<stdio.h>
    typedef struct student
    {
        char name[30];
        int score;
    }STUDENT;
    void m2(STUDENT stu[], int n)//修改2
    {
        STUDENT stu1;
        int i, j, m[60];
        //for (i = 0; i < n; i++)
          //    m[i] = stu[i].score;
        for (i = 0; i < n - 1; i++)
            for (j = i + 1; j < n; j++)   //for (j = 1; j < n; j++)
                if (stu[i].score < stu[j].score) //if (m[i] < m[j])
                {
                    stu1 = stu[i];
                    stu[i] = stu[j];
                    stu[j] = stu1;
                }
    }
    void m(STUDENT stu[], int n)//修改1
    {
        STUDENT stu1;
        int i, j, m[60],t;
        for (i = 0; i < n; i++)
            m[i] = stu[i].score;
        for (i = 0; i < n - 1; i++)
            for (j = i + 1; j < n; j++) //for (j = 1; j < n; j++)
                if (m[i] < m[j])
                {
                    stu1 = stu[i];
                    stu[i] = stu[j];
                    stu[j] = stu1;
                    t = m[i];       //修改
                    m[i] = m[j];    //修改
                    m[j] = t;       //修改
                }
    }
    int main()
    {
        STUDENT stu[60];
        int i, j, n;
        scanf("%d", &n);
        for (i = 0; i < n; i++)
        {
            scanf("%s", stu[i].name);
            scanf("%d", &stu[i].score);
        }
        m(stu, n);
        for (i = 0; i < n; i++)
            printf("%d %s %d\n", i + 1, stu[i].name, stu[i].score);
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月5日
  • 已采纳回答 3月28日
  • 创建了问题 12月15日