定义函数处理结构体数组,按成绩从高到低降序排列。 函数接口定义: struct stu { int num; char name[20]; int score; }; void fun ( struct stu *p, int n ); p是结构体数组的起始地址,n是结构体单元个数。 结构体成员:num是学号,name是姓名,score是成绩。 裁判测试程序样例: 在这里给出函数被调用进行测试的例子。例如: #include <stdio.h> struct stu{ int num; char name[20]; int score; }; void fun( struct stu *p, int n ); int main() { struct stu a[10]; int n, i; scanf("%d", &n); for(i = 0; i < n; i++){ scanf("%d%s%d", &a[i].num, a[i].name, &a[i].score); } fun(a,n); for(i = 0; i < n; i++) printf("%d %s %d\n", a[i].num, a[i].name, a[i].score); return 0; } /* 请在这里填写答案 */ 输入样例: 在这里给出一组输入。例如: 6 1001 anny 85 1002 boy 75 1003 car 65 1004 dan 55 1005 emm 95 1006 pa 35 输出样例: 在这里给出相应的输出。例如: 1005 emm 95 1001 anny 85 1002 boy 75 1003 car 65 1004 dan 55 1006 pa 35
时间: 2024-04-28 14:23:48 浏览: 96
void fun(struct stu *p, int n) {
int i, j;
struct stu temp;
for(i = 0; i < n - 1; i++) {
for(j = 0; j < n - i - 1; j++) {
if(p[j].score < p[j + 1].score) {
temp = p[j];
p[j] = p[j + 1];
p[j + 1] = temp;
}
}
}
}
相关问题
定义函数处理结构体数组,按成绩从高到低降序排列。 函数接口定义: struct stu { int num; char name[20]; int score; }; void fun ( struct stu *p, int n );
void fun(struct stu *p, int n) {
int i, j;
struct stu temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (p[i].score < p[j].score) {
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
}
定义一个 student 结构体如下: struct student { char name[20]; /*姓名*/ float score[4]; /*四门功课的成绩*/ float average; /*四门功课的平均成绩*/ }; 其中,name 中存放同学的姓名;score[4]数组中存放同学的英语、数学、物理、化学成绩;average中存放上述四门功课的平均成绩。 2) 编写下面5个函数。函数的具体要求: void inputFromKeyboard(struct student stu[], int num) 从键盘输入学生信息的函数。stu 为结构体数组,num 为数组中元素的个数。 void outputToScreen(struct student stu[], int num) 将学生信息输出到屏幕的函数。stu 为结构体数组,num 为数组中元素的个数。 void averageScore(struct student stu[], int num) 计算学生平均成绩的函数。stu 为结构体数组,num 为数组中元素的个数。 int compare(struct student stu1, struct student stu2) 对两个学生的平均成绩进行比较。若学生1的平均成绩高于学生2,返回值为1,否则返回值为0。stu1 和stu2为两个结构体变量,分别代表学生1和学生2。 void sortByAverageScore(struct student stu[], int num) 根据学生的平均成绩对学生信息整体排序的函数,其中两学生成绩比较要求调用函数compare。stu 为结构体数组,num 为数组中元素的个数。
1. 输入学生信息的函数 inputFromKeyboard:
```
void inputFromKeyboard(struct student stu[], int num) {
for (int i = 0; i < num; i++) {
printf("请输入第%d个学生的姓名:", i+1);
scanf("%s", stu[i].name);
printf("请输入第%d个学生的英语、数学、物理、化学成绩:", i+1);
for (int j = 0; j < 4; j++) {
scanf("%f", &stu[i].score[j]);
}
}
}
```
2. 输出学生信息的函数 outputToScreen:
```
void outputToScreen(struct student stu[], int num) {
printf("姓名\t英语\t数学\t物理\t化学\t平均成绩\n");
for (int i = 0; i < num; i++) {
printf("%s\t", stu[i].name);
for (int j = 0; j < 4; j++) {
printf("%.2f\t", stu[i].score[j]);
}
printf("%.2f\n", stu[i].average);
}
}
```
3. 计算学生平均成绩的函数 averageScore:
```
void averageScore(struct student stu[], int num) {
for (int i = 0; i < num; i++) {
float sum = 0;
for (int j = 0; j < 4; j++) {
sum += stu[i].score[j];
}
stu[i].average = sum / 4;
}
}
```
4. 对两个学生的平均成绩进行比较的函数 compare:
```
int compare(struct student stu1, struct student stu2) {
if (stu1.average > stu2.average) {
return 1;
} else {
return 0;
}
}
```
5. 根据学生的平均成绩对学生信息整体排序的函数 sortByAverageScore:
```
void sortByAverageScore(struct student stu[], int num) {
for (int i = 0; i < num - 1; i++) {
for (int j = 0; j < num - i - 1; j++) {
if (compare(stu[j], stu[j+1])) {
struct student temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
}
```
阅读全文