📄 c++学生系统代码.txt
字号:
student.h
#ifndef STUDENT_H
#define STUDENT_H
#include<stdio.h>
struct student
{
int number;
char name[20];
int age;
char sex;
union score
{
char grade;
int point;
}s;
struct student* next;
};
class students
{
private:
struct student* ss;
int num; //学生人数
public:
students()
{
int n;
printf("请输入学生人数\n");
scanf("%d",&n);
num=n;
ss=(struct student*)malloc(sizeof(struct student)*n);
printf("请输入学生信息\n");
}
void Input()
{
for(int i=0;i<num;i++)
{
printf("%d个学生的学号 ",i+1);
scanf("%d",&((ss+i)->number));
printf("%d个学生的姓名 ",i+1);
scanf("%s",(ss+i)->name);
printf("%d个学生的年龄 ",i+1);
scanf("%d",&((ss+i)->age));
printf("%d个学生的性别 ",i+1);
scanf(" %c",&((ss+i)->sex));
printf("%d个学生的分数 ",i+1);
scanf("%d",&(ss->s.point));
printf("\n");
}
}
void display()
{
for(int i=0;i<num;i++)
{
printf("%d个学生的学号 ",i+1);
printf("%d",(ss+i)->number);
printf("%d个学生的姓名 ",i+1);
printf("%s",(ss+i)->name);
printf("%d个学生的年龄 ",i+1);
printf("%d",(ss+i)->age);
printf("%d个学生的性别 ",i+1);
printf("%c",(ss+i)->sex);
printf("%d个学生的分数 ",i+1);
printf("%d",ss->s.point);
printf("\n");
}
}
void sort() //按成绩给学生排序
{
struct student* temp;
for(int i=0;i<num;i++)
{
for(int j=0;j<num-1;j++)
{
if((ss+j)->s.point>(ss+j+1)->s.point)
{
temp=ss+j;
ss+j=ss+j+1;
ss+j+1=temp;
}
}
}
}
};
#endif
student.cpp
#include<iostream>
#include"student.h"
using namespace std;
void main()
{
students aaa;
aaa.Input();
aaa.display();
}
怎样实现调用sort()这个函数,对整个结构体排序后输出
这样交换结构体地址难道不对吗?
编译抱错是:学生成绩系统 error C2106: “=” : 左操作数必须为 l 值
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -