?? 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 + -