} void zongpaixu(){ int i,j,t; char a[20],b[20]; for(i=0;i<length-1;i++){ //冒泡法排序 for(j=i+1;j<length;j++){ if(stu[i].score>stu[j].score){ t=stu[i].score; //交换成绩 stu[i].score=stu[j].score; stu[j].score=t; strcpy(a,stu[i].name); //交换姓名 strcpy(b,stu[j].name); strcpy(stu[j].name,a); strcpy(stu[i].name,b); } } } printf("name score\n");
时间: 2024-01-19 11:02:10 浏览: 61
串数组习题:实现下面函数的功能。函数void insert(char*s,char*t,int pos)将字符串t插入到字符串s中,插入位置为pos。假设分配给字符串s的空间足够让字符串t插入。
这段代码是一个C语言函数,用于对学生的成绩进行排序并输出排名结果。该函数使用了冒泡排序算法,通过比较相邻两个学生的成绩大小,将较大的成绩向后移动,从而实现对成绩的排序。在交换成绩的同时,还会交换对应学生的姓名,以确保成绩和姓名的对应关系不变。最后,函数打印出按成绩排名后的学生列表,其中包括学生的姓名和成绩。
需要注意的是,该函数的代码片段中缺少了一些语句,需要将其补充完整才能正常运行。补充完整后的代码如下:
```c
void zongpaixu() {
int i, j, t;
char a[20], b[20];
for (i = 0; i < length - 1; i++) { // 冒泡法排序
for (j = i + 1; j < length; j++) {
if (stu[i].score > stu[j].score) {
t = stu[i].score;
stu[i].score = stu[j].score;
stu[j].score = t;
strcpy(a, stu[i].name);
strcpy(b, stu[j].name);
strcpy(stu[j].name, a);
strcpy(stu[i].name, b);
}
}
}
printf("name score\n");
for (i = 0; i < length; i++) {
printf("%-10s%d\n", stu[i].name, stu[i].score);
}
}
```
在上述代码中,我们首先定义了一个名为`zongpaixu`的函数。函数中定义了三个变量`i`、`j`和`t`,其中`i`和`j`用于循环遍历学生数组`stu`,`t`用于交换成绩信息。接下来,我们使用两层循环实现冒泡排序算法,将学生按照成绩从小到大排序。在交换成绩信息的同时,还会交换对应学生的姓名信息。最后,函数通过`printf`语句打印出按成绩排名后的学生列表,其中包括学生的姓名和成绩。为了排版美观,我们使用了`%-10s`和`%d`格式控制符来对齐输出结果。
阅读全文