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。

posted @   emanlee  阅读(848)  评论(0编辑  收藏  举报
编辑推荐:
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 分享4款.NET开源、免费、实用的商城系统
点击右上角即可分享
微信分享提示