2008秋-计算机软件基础-多关键字排序

2008秋-计算机软件基础-多关键字排序

/*
 多关键字排序:
  先按总分由高到低排序,若总分相同则按数学成绩由高到低排序
,若总分和数学成绩都相同,则按英语成绩由高到低排序。
 

*/

#include 

<
stdio.h
>


struct
 student
{

  

int
 xuehao;
  

char
 xingming[
10
];
  

int
 shuxue;
  

int
 yingyu;
  

int
 yuwen;
  

int
 zongfen;
};
typedef 

struct
 student S;


void
 shuruchengji(S a[], 
int
 L)
{

   

/*
elements are stored in a[1] to a[L]
*/

   a[

1
].xuehao
=
101
;
   strcpy(a[

1
].xingming,

a1

);
   a[

1
].shuxue
=
80
;
   a[

1
].yingyu
=
80
;
   a[

1
].yuwen
=
80
;
   a[

1
].zongfen
=
240
;

   a[
2
].xuehao
=
102
;
   strcpy(a[

2
].xingming,

a2

);
   a[

2
].shuxue
=
70
;
   a[

2
].yingyu
=
70
;
   a[

2
].yuwen
=
70
;
   a[

2
].zongfen
=
210
;
   
   a[

3
].xuehao
=
103
;
   strcpy(a[

3
].xingming,

a3

);
   a[

3
].shuxue
=
90
;
   a[

3
].yingyu
=
80
;
   a[

3
].yuwen
=
70
;
   a[

3
].zongfen
=
240
;

   a[
4
].xuehao
=
104
;
   strcpy(a[

4
].xingming,

a4

);
   a[

4
].shuxue
=
90
;
   a[

4
].yingyu
=
70
;
   a[

4
].yuwen
=
80
;
   a[

4
].zongfen
=
240
;
}


void
 bubblesortYingYu(S r[],
int
 n)
 { 

/*
elements are stored in r[1] to r[n]
*/

  

int
 i,j,flag;
  S temp;
  flag

=
1
;
  i

=
1
;
  

while
((i
<
n)) 
/*
外循环控制排序的总趟数
*/

   { 
      

for
(j
=
n;j
>
i;j


/*
内循环控制一趟排序的进行
*/
 
          

if
(r[j].yingyu
>
r[j

1
].yingyu)  
/*
相邻元素进行比较,若逆序就交换
*/

           {         
              temp

=
r[j];
              r[j]

=
r[j

1
];
              r[j


1
]
=
temp;
           }
      i

++
;
    }
}


void
 bubblesortShuXue(S r[],
int
 n)
 { 

/*
elements are stored in r[1] to r[n]
*/

  

int
 i,j,flag;
  S temp;
  flag

=
1
;
  i

=
1
;
  

while
((i
<
n)) 
/*
外循环控制排序的总趟数
*/

   { 
      

for
(j
=
n;j
>
i;j


/*
内循环控制一趟排序的进行
*/
 
          

if
(r[j].shuxue
>
r[j

1
].shuxue)  
/*
相邻元素进行比较,若逆序就交换
*/

           {         
              temp

=
r[j];
              r[j]

=
r[j

1
];
              r[j


1
]
=
temp;
           }
      i

++
;
    }
}


void
 bubblesortZongFen(S r[],
int
 n)
 { 

/*
elements are stored in r[1] to r[n]
*/

  

int
 i,j,flag;
  S temp;
  flag

=
1
;
  i

=
1
;
  

while
((i
<
n)) 
/*
外循环控制排序的总趟数
*/

   { 
      

for
(j
=
n;j
>
i;j


/*
内循环控制一趟排序的进行
*/
 
          

if
(r[j].zongfen
>
r[j

1
].zongfen)  
/*
相邻元素进行比较,若逆序就交换
*/

           {         
              temp

=
r[j];
              r[j]

=
r[j

1
];
              r[j


1
]
=
temp;
           }
      i

++
;
    }
}


void
 xianshi(S a[], 
int
 L)
{

  

int
 i;
  

for
(i
=
1
;i
<=
L;i
++
)
      printf(


 %d %s %d %d %d %d \n

,
      a[i].xuehao,a[i].xingming,a[i].shuxue,
      a[i].yingyu, a[i].yuwen, a[i].zongfen);
}


void
 main()
{

  S a[
5
];
  shuruchengji(a,

4
);
  bubblesortYingYu(a,

4
);
  bubblesortShuXue(a,

4
);
  bubblesortZongFen(a,

4
);
  xianshi(a,

4
);
  getchar();
}

结构体数组排序,作者:EmanLee。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110979.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 推荐 21 款博主常用 Windows 软件「建议收藏」

    经常会有朋友让我推荐一些好用的软件,因此我打算写一篇博客来介绍一下这些我认为爱不释手的软件

    2022年4月13日
    72
  • ip addr add配置ip_ip helper-address

    ip addr add配置ip_ip helper-addressbroadcastADDRESS—-协议广播地址,可以简写成brd,此外可以简单的在后面加上”+”表示广播地址由协议地址加主机位全置1组成,”-“则表示主机位全置0。例如你的配置:ipaddradd127.0.0.1/8devlobrd+则表示广播地址为127.255.255.255,网络地址(前8位)为127,主机地址(后面的24位)全为1,加起来为广播地址。扩展:ipad…

    2022年7月27日
    281
  • BD和DVD区域划分

    BD和DVD区域划分BD和DVD区域划分BD:A区:只能是在美国、日本以及香港、台湾等东南亚地区正常播放;B区:只能在欧洲和澳洲等国家正常播放;C区:是在中国大陆、俄罗斯和印度三国才能正常播放。DVD:第一区为:美国、加拿大;第二区为:日本、欧洲、埃及、南非、中东;第三区为:中国台湾、中国香港特别行政区、南韩、东南亚;第四区为:澳洲、新西兰、中南美洲、南太平洋岛屿;第五区为:俄罗斯、蒙古、印度

    2022年7月11日
    32
  • anaconda和pycharm安装教程_超详细mac新手教程

    anaconda和pycharm安装教程_超详细mac新手教程本文简要概述Anaconda,详细记录Anaconda和Pycharm的安装过程,跟着做下来一定能成功。

    2022年8月28日
    1
  • 深入浅出TCP三次握手 (多图详解)[通俗易懂]

    深入浅出TCP三次握手 (多图详解)[通俗易懂]文章目录前言1、TCP是什么?2、TCP首部格式3、TCP的连接建立4、三次握手图文详解5、三次握手文字总结5、是否可以使用“两报文握手”建立连接?6、两次握手文字总结前言TCP三次握手和四次挥手是面试题的热门考点,它们分别对应TCP的连接和释放过程,今天我们先来认识一下TCP三次握手过程,以及是否可以使用“两报文握手”建立连接?。1、TCP是什么?TCP是面向连接的协议,它基于运输连接来传送TCP报文段,TCP运输连接的建立和释放,是每一次面向连接的通信中必不可少的过程。TCP运输连接有以下

    2022年10月4日
    0
  • Pycharm Debug调试使用+代码调试理解

    Pycharm Debug调试使用+代码调试理解Pycharm使用教程03pycharm的Debug调试使用+代码调试理解。横着的七个按钮的功能:依次从左到右。ShowExecutionPoint:鼠标光标跳到程序运行到的位置StepOver:单步运行程序,不进入函数。在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。在不存在子函数的情况下是和stepinto效果一样的。简单的说就是,程序代码越过子函数,但子函数会执行,且不进入。StepInto:在单步执行时,遇到子函数

    2025年6月17日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号