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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python入门:Anaconda和Pycharm的安装和配置「建议收藏」

    Python入门:Anaconda和Pycharm的安装和配置「建议收藏」子曰:“工欲善其事,必先利其器。”学习Python就需要有编译Python程序的软件,一般情况下,我们选择在Python官网下载对应版本的Python然后用记事本编写,再在终端进行编译运行即可,但是对于我这样懒的小白,我喜欢装一些方便的软件来辅助我编写程序。在学习Java时,正常情况选择安装JDK然后配置环境变量后,用记事本编写程序再在终端编译运行即可,而我一般选择安装JDK+MyEclipse。…

    2022年8月27日
  • Ubuntu Mobile Demo at IDF Shanghai (英文)

    Ubuntu Mobile Demo at IDF Shanghai (英文)

    2021年7月27日
  • WIN32 API获取窗口句柄

    WIN32 API获取窗口句柄WIN32API获取窗口句柄2008-08-1305:28P.M. 关于如何获取窗口句柄,以及有哪些函数可供使用的简单讨论!首先罗列出一些获取句柄的win32api函数,然后简单说说他们的用途!最后说说是怎么理解和应用的。可用的win32api函数: 1.HWNDFindWindow(LPCTSTRlpClassName,L

    2022年7月21日
  • 大学技术类书单

    大学技术类书单

    2021年11月23日
  • protel 99se 简单的手动画pcb

    protel 99se 简单的手动画pcb(只适合做超级简单的板子)脑子里有原理图即可直接打开protel99se新建一个pcb(PCBdocument)1.      在左侧browsepcb下的browse的下拉框中选择libraries2.      可以看到compoents中有许多元器件选择自己需要的比如单片机就用DIP40就可以了3.      sip单列直插dip双列直插一

    2022年5月30日
  • Java语言对字节数组截取指定长度

    Java语言对字节数组截取指定长度Java通过arraycopy来实现字节数组截取,类比于C语言memcpy,代码如下:System.arraycopy(src,srcPos,dest,destPos,length);参数解析:src:byte源数组srcPos:截取源byte数组起始位置(0位置有效)dest,:byte目的数组(截取后存放的数组)destPos:截取后存放的数组起始位置(0位置有效)…

    2022年6月6日

发表回复

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

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