结构体
#include <stdio.h>struct Comp //结构体定义
{
char name;
double grade;
}comp;
double calc(int num[]) //最后成绩计算函数
{
int i,mins,maxs,max=0,min=100;
for(i=0;i<10;i++)
{
if(num<min) //如果小于最小值,则更新最小值
{
mins=i;
min=num;
}
if(num>max) //如果大于最大值,则更新最大值
{
maxs=i;
max=num;
}
}
num=0;
num=0; //将一个最大值与最小值的数据置为 0
double sum_ave=0;
for(i=0;i<10;i++)
{
sum_ave=sum_ave+num;
}
return sum_ave/8.0;
}
void input() //数据输入函数
{
int i,j;
int grade;
for(i=0;i<20;i++)
{
printf("请输入%d 号选手姓名:",i+1);
scanf("%s",comp.name);
printf("请输入%d 号选手的 10 位评委成绩:\n",i+1);
for(j=0;j<10;j++)
scanf("%d",&grade);
comp.grade=calc(grade); //处理选手的最后得分
}
}
void DDubbleSort() //向下冒泡排序函数
{
struct Comp temp;
int i,j;
for(i=0;i<20;i++)
for(j=0;j<20-i;j++)
if(comp.grade>comp.grade)
{
temp=comp;
comp=comp;
comp=temp;
}
}
int main()
{
int order;
input(); //数据输入
printf("数据输入完毕,正在排序……\n");
DDubbleSort(); //成绩排序
printf("排序完毕,请输入名次:");
scanf("%d",&order);
if(order<=0||order>20)
printf("数据输入错误!\n");
else
printf("第%d 名选手姓名是:%s\n",order,comp.name); //结果输出
return 0;
}
为什么并没有排序成功,还是按照输入形式排序的?是冒泡排序哪里错了吗 void DDubbleSort() //向下冒泡排序函数
{
struct Comp temp ;
int i , j ;
for(i = 0 ; i < 20 ; i ++) {
for(j = i ; j < 20 - 1 ; j ++) {
if(comp . grade > comp . grade) {
temp = comp ;
comp = comp ;
comp = temp ;
}
}
}
} 本帖最后由 h-b-z-d-j-s-m 于 2022-10-25 15:04 编辑
jackz007 发表于 2022-10-25 14:38
请问我那个哪里错了啊,那个也是冒泡排序的一种吧 h-b-z-d-j-s-m 发表于 2022-10-25 15:01
请问我那个哪里错了啊,那个也是冒泡排序的一种吧
for(i=0;i<20;i++)
for(j=0;j<20-i;j++)
if(comp.grade>comp.grade)
{
temp=comp;
comp=comp; // 当 j = 19 的时候,这里会越界
comp=temp; // 当 j = 19 的时候,这里会越界 h-b-z-d-j-s-m 发表于 2022-10-25 15:01
请问我那个哪里错了啊,那个也是冒泡排序的一种吧
这个我试了下排序不对 h-b-z-d-j-s-m 发表于 2022-10-25 15:04
这个我试了下排序不对
贴出你的样例(输入数据) h-b-z-d-j-s-m 发表于 2022-10-25 15:04
这个我试了下排序不对
void DDubbleSort() //向下冒泡排序函数
{
struct Comp temp ;
int i , j ;
for(i = 0 ; i < 19 ; i ++) {
for(j = i + 1 ; j < 20 ; j ++) {
if(comp . grade > comp . grade) {
temp = comp ;
comp = comp ;
comp = temp ;
}
}
}
} 看看
页:
[1]