问题:定义一个结构体数组,用来存放学生的姓名、总分、名次。从键盘输入一个班(10个人)的学生姓名和总分,计算出班级名次,并按名次顺序输出学生信息。#include<stdio.h>
struct student
{
char name[20];
int grade; //分数
int rank; //排名
} ;
main()
{ int i,n,j;
struct student man[10];
struct student t;
scanf("%d",&n); //学生人数
for(i=0;i<n;i++)
{
scanf("%s%d",&man[i].name,&man[i].grade); //输入名字和成绩
}
for(i=0;i<n-1;i++) //采用冒泡排序法
for(j=1;j<n-i-1;j++)
if(man[j].grade>man[j+1].grade)
{t=man[j].grade;man[j].grade=man[j+1].grade;man[j+1].grade=t;}
for(i=0;i<n;i++)
printf("%s%d%d",man[i].name,man[i].grade,man[i].rank=i+1); //按名次输出学生名字和姓名
}
错误为
24 10 D:\c语言\c语言的文件\尝试.cpp [Error] no match for 'operator=' (operand types are 'student' and 'int')
24 10 D:\c语言\c语言的文件\尝试.cpp [Note] candidate is:
2 8 D:\c语言\c语言的文件\尝试.cpp [Note] student& student::operator=(const student&)
2 8 D:\c语言\c语言的文件\尝试.cpp [Note] no known conversion for argument 1 from 'int' to 'const student&'
24 66 D:\c语言\c语言的文件\尝试.cpp [Error] cannot convert 'student' to 'int' in assignment
虽然百度搜过这些英文的意思但我还是不懂,求大佬告知,谢谢
{t=man[j].grade;man[j].grade=man[j+1].grade;man[j+1].grade=t;}应该是man[j+1].grade=t.grade
|