首页 > 其他分享 >2008秋-计算机软件基础-多关键字排序

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

时间:2023-11-08 12:06:13浏览次数:26  
标签:shuxue 计算机软件 temp int zongfen 关键字 2008 排序 yingyu

/* 多关键字排序:

  先按总分由高到低排序,若总分相同则按数学成绩由高到低排序

,若总分和数学成绩都相同,则按英语成绩由高到低排序。

 */

#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。



标签:shuxue,计算机软件,temp,int,zongfen,关键字,2008,排序,yingyu
From: https://blog.51cto.com/emanlee/8247631

相关文章

  • 2008秋季-计算机软件基础-有序表合并 教材 P79, ex3
    /*Author:EmanLee*//*计算机软件基础教材P79,ex3*/#include<stdio.h>#include<stdlib.h>intinsert(inta[],intarrayLength,int*listLength,intx){inti,j;if(*listLength+1==arrayLength)return0;/*fail*/for(i=0;i<*list......
  • 2008秋季-计算机软件基础- 线性表顺序存储 - 菜单
    /*2008-10-27*//*tod:删除,修改,参考:教材P63-67*/#include<stdio.h>#defineN1typedefstructstudent{charxuehao[10];charxingming[10];intchengji;}S;voidxianshicaidan(){printf("\n1-Initialization.\n");......
  • 2008秋季-计算机软件基础-0901课堂用例
    #include<stdio.h>voidupdate(intxiabiao,intb[],intxinshu);voidcharu(intweizhi,intb[],intcharushu,intshuzuchang);voidmain(){/*顺序存储的线性表-顺序表*/inta[5]={1,2,4,5};inti;intweizhi=2;/*for(i=......
  • 2008秋季-计算机软件基础-0903课堂用例(1)
    #include<stdio.h>voidupdate(intxiabiao,intb[],intxinshu);voidcharu(intweizhi,intb[],intcharushu,intshuzuchang);voidshanchu(intweizhi,intb[],int*changdu);voidshuchu(intaa[],intbiaochang);voidchazhao(int......
  • C语言程序设计 回答同学提出的几个疑问 2008
    1,例4.11中的K=1时什麽意思?K用来表示是否是空格字符(注:不是空字符,而是空格字符)0表示空格字符1表示非空格字符  2,例3.17看不懂呀?这一题不难。如果看不懂需要加把劲了。=12时就是按第三个式子算得呀。是有逻辑错误的。1<=x<10就有明显的错误,因为这是数学中的写法,不是C语言中的写法。......
  • 2008秋-计算机软件基础-实验三 参考源程序
    实验三参考源程序//软件基础教材79页习题6答案//EmanLee#include<stdio.h>#include<stdlib.h>#definem5//队列容量//定义队列的结构structqueue{intseq[m];//队列元素intquelen;//队列中元素个数intrear;//队列尾指针};//初始化队列......
  • 2008秋-计算机软件基础- 实验二 参考源程序
    实验二参考源程序/*Author:EmanLee,计算机软件基础教材P79,ex4设有一头为head的带头结点的单链表,其数据域为整形数据且递增有序。试写一算法,将元素插入链表适当的位置,以保持链表的有序性。*/#include<stdio.h>#include<stdlib.h>typedefintDataType;struc......
  • 2008秋-计算机软件基础-冒泡排序
    /*Title:冒泡排序Author:emanlee算法功能:冒泡排序算法实现将一个长度为n的线性表r上的所有元素按关键字升序排列。*/#include<stdio.h>voidbubblesort(intr[],intn){/*elementsarestoredinr[1]tor[n]*/inti,j,flag;inttemp;flag=1;i......
  • 2008秋-计算机软件基础-第四章习题参考答案 P131 ,习题4,5
    Author:EmanLee 计算机软件基础,教材P131,第4题参考答案(1)查找e的过程abcdefghLow=1Mid=4High=8abcdefghLow=5Mid=6High=8abcdefghLow=5Mid=5High=5查找成功(2)查找f的过程abcdefghLow=1Mid=4High=8abcdefghLow=5Mid=6High=8查找成功(3)查找h的过程abcdefghLow=1Mid=4High=8abcdefghLo......
  • 2008秋-计算机软件基础-第四章习题参考答案 P131 ,习题6之一
    Author:EmanLee P131,第6题之一参考答案(1)      直接插入排序初始状态第一趟第二趟第三趟第四趟第五趟第六趟第七趟第八趟第九趟(2)      冒泡排序初始状态第一趟 第二趟第三趟第四趟第五趟 第六趟 第七趟第八趟第九趟53       12    12 ......