void Sort() { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - 1 - i; j++) { if (stu[j].total < stu[j + 1].total) { struct student temp = stu[j]; stu[j] = stu[j + 1]; stu[j + 1] = temp; } } } printf(“已按照总分降序排序:\n”); }void Output() { printf(“学号\t姓名”); for (int i = 0; i < m; i++) { printf(“\t课程%d”, i + 1); } printf(“\t总分\n”); for (int i = 0; i < n; i++) { printf(“%d\t%s”, stu[i].id, stu[i].name); for (int j = 0; j < m; j++) { printf(“\t%d”, stu[i].score[j]); } printf(“\t%d\n”, stu[i].total); } } 这是一个学生系统的按总分排序,请让它输出排序后的结果
时间: 2024-03-10 18:49:38 浏览: 20
在主函数中调用Sort()函数进行排序,然后再调用Output()函数输出排序后的结果。
示例代码如下:
```c
int main() {
// 先输入学生信息并计算总分
Input();
CalculateTotal();
// 排序并输出结果
Sort();
Output();
return 0;
}
```
输出结果如下格式:
```
学号 姓名 课程1 课程2 课程3 总分
1001 张三 80 90 85 255
1002 李四 70 65 80 215
1003 王五 90 85 95 270
...
```
相关问题
#include<stdio.h> void sort(int **pp,int n) { int *temp; for(int i=0;i<n;i++) { for(int j=0;j<n-1-i;j++) { if(*(pp+j)>*(pp+j+1)) { temp=*(pp+j); *(pp+j)=*(pp+j+1); *(pp+j+1)=temp; } } } } int main() { int n; scanf("%d",&n); int *p[n]; for(int i=0;i<n;i++) { scanf("%d",p[i]); } sort(p,n); for(int i=0;i<n;i++) { printf("%d ",p[i]); } return 0; }
这段代码有一些问题。首先是在主函数中定义了一个指针数组p,但没有为每个指针分配内存。其次,在读入p数组的值时,需要使用&运算符获取每个指针的地址。最后,在sort函数中,需要使用*运算符来获取指针所指向的值。
以下是修改后的代码:
```c
#include <stdio.h>
void sort(int **pp, int n) {
int *temp;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n - 1 - i; j++) {
if(*pp[j] > *pp[j + 1]) {
temp = pp[j];
pp[j] = pp[j + 1];
pp[j + 1] = temp;
}
}
}
}
int main() {
int n;
scanf("%d", &n);
int *p[n];
for(int i = 0; i < n; i++) {
p[i] = (int *)malloc(sizeof(int)); // 为每个指针分配内存
scanf("%d", p[i]);
}
sort(p, n);
for(int i = 0; i < n; i++) {
printf("%d ", *p[i]); // 输出指针所指向的值
free(p[i]); // 释放内存
}
return 0;
}
```
注意,在使用动态内存分配函数malloc分配内存时,需要在程序结束前使用free函数释放内存。
void selectsort(int *a, int size) { for (int i = 0; i < size; i++) { int minfoot = 0; for (int j = 0; j < size - i - 1; i++) { minfoot = a[j] > a[j + 1] ? j : j + 1; } int temp = a[size - 1 - i]; a[size - 1 - i] = a[minfoot]; a[minfoot] = temp; } }
这段代码是选择排序的实现,但是其中有一个小错误,就是第二个for循环中的 i 应该改成 j,否则会导致死循环。正确的代码如下:
```c++
void selectsort(int *a, int size) {
for (int i = 0; i < size; i++) {
int minfoot = 0;
for (int j = 0; j < size - i - 1; j++) {
minfoot = a[j] > a[j + 1] ? j + 1 : j;
}
int temp = a[size - 1 - i];
a[size - 1 - i] = a[minfoot];
a[minfoot] = temp;
}
}
```
这样就可以正确地进行选择排序了。
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)