#include"stdio.h"
#include"stdlib.h"
typedef struct
{
int ranking;
int sum; //学生的总成绩
}Student;
int main()
{
int i,j;
Student stu[7];
stu[0].sum=25;stu[1].sum=85;stu[2].sum=90;stu[3].sum=60;stu[4].sum=80;stu[5].sum=40;
stu[0].ranking=1;
for(i=0;i<6;i++)
{
if(i>0)
{
stu[i].ranking=stu[i-1].ranking+1;
}
}
for(i=0;i<6;i++)
{
for(j=0;j<5-1;j++)
{
if(stu[j].sum<stu[j+1].sum)
{
stu[6].ranking = stu[j].ranking;
stu[j].ranking = stu[j+1].ranking;
stu[j+1].ranking=stu[6].ranking;
}
}
}
for(i=0;i<6;i++)
{
printf("%d名的分数为%d\n",stu[i].ranking,stu[i].sum);
}
}输出结果不对,是不是冒泡排序出错了
2 回答
qq_愿时光安好_04050009
TA贡献2条经验 获得超0个赞
应该是
int i, j;
int n; // n代表要排序的个数
for (i = n-1; i > 0; i--) // 也可以都从i, j都从0开始 那么i就代表排序趟数
for (j = 0; j < i; j++)
{
if(arr[j] > arr[j+1])
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
不过我觉得这么写更直观 第一次两两交换 浮出一个最大数到n-1的位置上 n-1上已有序, i--
如果有不同意见欢迎指正
建立一个临时结构体, 再套里面
- 2 回答
- 0 关注
- 1814 浏览
添加回答
举报
0/150
提交
取消