创建一个结构体st,成员有num(学号),name(姓名),score(成绩),从键盘输入n个人员信息,按score(成绩)降序输出每个学生的记录,在main函数中输入数据,在另一个函数中排序并输出。
时间: 2023-05-31 09:17:58 浏览: 322
### 回答1:
题目要求创建一个结构体st,其中成员包括num(学号)、name(姓名)、score(成绩)。从键盘输入n个人员信息,按照score(成绩)降序输出每个学生的记录。在main函数中输入数据,在另一个函数中排序并输出。
### 回答2:
题目要求我们创建一个结构体st,并在其内定义三个成员num(学号),name(姓名),score(成绩)。接着从键盘输入n个人员信息,按照成绩score的降序输出每个学生的记录。在main函数中输入数据,在另一个函数中排序并输出。
那么我们首先来定义结构体和输入数据:
```
#include <stdio.h>
struct st{
int num; // 学号
char name[20]; // 姓名
float score; // 成绩
};
void input(struct st a[], int n){ // 输入数据
for(int i = 0; i < n; i++){
printf("请输入第%d个学生的信息(学号,姓名,成绩):\n", i+1);
scanf("%d %s %f", &a[i].num, a[i].name, &a[i].score);
}
}
```
接着我们需要在另一个函数中对数据进行排序并输出。由题目可知,需要按成绩score进行降序排序。我们可以采用冒泡排序的方法:
```
void sort(struct st a[], int n){ // 排序并输出
for(int i = 0; i < n-1; i++){
for(int j = 0; j < n-i-1; j++){
if(a[j].score < a[j+1].score){ // 按成绩score进行降序排序
struct st temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
printf("排名\t学号\t姓名\t成绩\n"); // 输出排序后的结果
for(int i = 0; i < n; i++){
printf("%d\t%d\t%s\t%.2f\n", i+1, a[i].num, a[i].name, a[i].score);
}
}
```
最后在main函数中调用input和sort函数即可完成程序:
```
int main(){
int n;
printf("请输入学生的数量:\n");
scanf("%d", &n);
struct st a[n];
input(a, n);
sort(a, n);
return 0;
}
```
完整代码如下:
### 回答3:
题目要求我们创建一个结构体st,包含num(学号)、name(姓名)、score(成绩)三个成员。然后从键盘输入n个人员信息,并按照成绩降序的方式输出每个学生的记录。我们可以通过定义结构体数组来存储这些人员信息,然后利用快速排序算法对结构体数组按照score成绩降序排序,最后输出每个学生的信息。具体步骤如下:
1.首先,定义结构体st,包含num、name、score三个成员。
struct St {
int num;
char name[20];
int score;
};
2.然后,在main函数中输入每个学生的信息,存储到结构体数组中。
int main() {
int n;
printf("请输入学生人数:");
scanf("%d", &n);
struct St st[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
printf("学号:");
scanf("%d", &st[i].num);
printf("姓名:");
scanf("%s", st[i].name);
printf("成绩:");
scanf("%d", &st[i].score);
}
}
3.接着,我们可以编写一个排序函数,对结构体数组按照score成绩降序排序。
void QuickSort(struct St* st, int left, int right) {
if (left >= right) {
return;
}
int i = left;
int j = right;
int k = st[left].score;
while (i < j) {
while (i < j && st[j].score <= k) {
j--;
}
st[i].score = st[j].score;
while (i < j && st[i].score >= k) {
i++;
}
st[j].score = st[i].score;
}
st[i].score = k;
QuickSort(st, left, i - 1);
QuickSort(st, i + 1, right);
}
4.最后,在main函数中调用排序函数,将结构体数组按照score成绩降序排列,并输出每个学生的信息。
int main() {
int n;
printf("请输入学生人数:");
scanf("%d", &n);
struct St st[n];
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
printf("学号:");
scanf("%d", &st[i].num);
printf("姓名:");
scanf("%s", st[i].name);
printf("成绩:");
scanf("%d", &st[i].score);
}
QuickSort(st, 0, n - 1);
printf("按成绩降序排序的学生记录如下:\n");
for (int i = 0; i < n; i++) {
printf("%d %s %d\n", st[i].num, st[i].name, st[i].score);
}
return 0;
}
通过以上的步骤,我们就可以按照题目要求创建结构体st,从键盘输入n个人员信息,并按照成绩降序输出每个学生的记录,完成了本题的要求。
阅读全文