辞树 发表于 2021-11-26 20:37:06

结构体数组

问题:定义一个结构体数组,用来存放学生的姓名、总分、名次。从键盘输入一个班(10个人)的学生姓名和总分,计算出班级名次,并按名次顺序输出学生信息。
#include<stdio.h>
struct student
{
   char name;
   int grade;      //分数
   int rank;       //排名
   
} ;

main()
{   int i,n,j;
    struct student man;
    struct student t;
    scanf("%d",&n);   //学生人数
    for(i=0;i<n;i++)
    {
           scanf("%s%d",&man.name,&man.grade);//输入名字和成绩
        }
          
    for(i=0;i<n-1;i++)                  //采用冒泡排序法
          
           for(j=1;j<n-i-1;j++)
             if(man.grade>man.grade)
              {t=man.grade;man.grade=man.grade;man.grade=t;}
       
          for(i=0;i<n;i++)
          printf("%s%d%d",man.name,man.grade,man.rank=i+1);//按名次输出学生名字和姓名
               
       
}

错误为
24        10        D:\c语言\c语言的文件\尝试.cpp        no match for 'operator=' (operand types are 'student' and 'int')
24        10        D:\c语言\c语言的文件\尝试.cpp        candidate is:
2        8        D:\c语言\c语言的文件\尝试.cpp        student& student::operator=(const student&)
2        8        D:\c语言\c语言的文件\尝试.cpp        no known conversion for argument 1 from 'int' to 'const student&'
24        66        D:\c语言\c语言的文件\尝试.cpp        cannot convert 'student' to 'int' in assignment

虽然百度搜过这些英文的意思但我还是不懂,求大佬告知,谢谢

jhq999 发表于 2021-11-26 20:37:07

{t=man.grade;man.grade=man.grade;man.grade=t;}应该是man.grade=t.grade

辞树 发表于 2021-11-26 20:44:38

jhq999 发表于 2021-11-26 20:37


谢谢你!
页: [1]
查看完整版本: 结构体数组