C++ 定義學生資訊結構體,按照學號順序排序
阿新 • • 發佈:2018-12-04
定義學生資訊結構體,錄入學生資訊,根據學生的學號順序進行排序。
struct student 定義學生資訊,學生資訊中Score sc 為一個結構體型別的變數,存放學生的成績資訊;
input(),disp()函式輸入輸出學生資訊;sort()通過學號的大小進行排序;程式中運用了選擇法排序;若想對其他資訊排序均可以類似的方法進行。
#include<iostream>
using namespace std;
struct Score //存成績
{
int math;
int English;
int computer;
};
struct student
{
int num;
char name[10];
Score sc;
};
void input(student *stu, int n);
void disp(student *p, int n);
void sort(student *sarr, int n);
int main()
{
student stu[4];
input(stu, 4);
sort(stu, 4);
disp(stu, 4);
return 0;
}
void input(student *stu, int n)
{
cout << "input the student's imformations:" << endl;
for (int i = 0; i < n; i++)
{
cin >> stu[i].num >> stu[i].name >> stu[i].sc.math >> stu[i].sc.English >> stu[i].sc.computer;
}
}
void disp(student *stu, int n)
{
cout << "output the student's informations" << endl;
for (int i = 0; i < n;i++)
{
cout << stu[i].num << ' ' << stu[i].name << ' ' << stu[i].sc.math << ' '
<< stu[i].sc.English << ' ' << stu[i].sc.computer << ' ' << endl;
}
}
void sort(student *stu, int n)
{
int k;
student tmp; //student型別的tmp變數
for (int i = 0; i < n;i++)
{
k = i;
for (int j = i + 1; j < n; j++)
{
if (stu[j].num<stu[i].num)
{
k = j;
}
if (k != i)
{
tmp = stu[k];
stu[k] = stu[i];
stu[i] = tmp;
}
}
}
}
程式結果測試成功,可直接執行。