.定义一个结构体数组,拟实现下面的表格,表头的属性名字自拟,如姓名可以起名为name、xm、姓名等等,数据内容自拟(不得雷同),请按总分进行排序,以降序的顺序显示出所有的信息。(人数不得少于十人)。C语言程序
时间: 2023-08-31 10:28:06 浏览: 176
### 回答1:
struct student{
char name[20];
int age;
int score;
};
int main(){
struct student stu[10] = {{"张三", 18, 95}, {"李四", 19, 85}, {"王五", 20, 98}, {"赵六", 18, 92}, {"孙七", 21, 93}, {"小八", 19, 76}, {"许九", 20, 80}, {"马十", 21, 99}, {"周十一", 18, 91}, {"吴十二", 19, 97}};
int i,j;
struct student t;
for(i=0;i<9;i++){
for(j=0;j<9-i;j++){
if(stu[j].score<stu[j+1].score){
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
}
}
printf("姓名\t年龄\t总分\n");
for(i=0;i<10;i++){
printf("%s\t%d\t%d\n",stu[i].name,stu[i].age,stu[i].score);
}
return 0;
}
### 回答2:
请看下面的C语言代码实现:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义结构体Student
typedef struct {
char name[10]; // 姓名
int age; // 年龄
float score; // 分数
} Student;
// 按总分进行降序排序
void sortByTotalScore(Student students[], int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
// 比较总分,如果前面的总分小于后面的总分,则交换两个学生的位置
if ((students[j].score) < (students[j + 1].score)) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
int main() {
int n = 10; // 学生人数
Student students[n]; // 定义结构体数组
// 初始化学生信息
strcpy(students[0].name, "张三");
students[0].age = 18;
students[0].score = 89.5;
strcpy(students[1].name, "李四");
students[1].age = 19;
students[1].score = 92.0;
// 定义更多的学生信息...
// 按总分进行排序
sortByTotalScore(students, n);
// 打印排序后的学生信息
for (int i = 0; i < n; i++) {
printf("姓名:%s,年龄:%d,总分:%.2f\n", students[i].name, students[i].age, students[i].score);
}
return 0;
}
以上代码定义了一个结构体Student,包含姓名、年龄和分数三个属性。定义了一个sortByTotalScore函数,用来按总分进行降序排序。在main函数中定义一个包含十个学生的结构体数组,并初始化学生信息。然后调用sortByTotalScore函数对学生进行排序,并打印排序后的学生信息。根据需要可以更改学生的数量和信息内容。
阅读全文