C语言程序设计
项目三 成绩排排坐 任务2:成绩排名及统计 —— 第6章 数组 章节主要内容 6.1 一维数组 6.2 二维数组 6.3 字符数组和字符串
引例1:冒泡法排序。随机输入10个整数,将它们按由小到大的顺序输出。 排序思路: 将相邻两个数比较,将小的调到前头。 排序过程: ⑴比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止——第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上 ⑵对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置 ⑶重复上述过程,共经过n-1趟冒泡排序后,排序结束
例: 49 38 65 97 76 13 27 30 初始化 n=8 38 38 49 65 76 13 27 30 97 第一趟 38 49 65 13 27 30 76 第二趟 38 49 13 27 30 65 第三趟 13 27 30 第六趟 13 27 第七趟 13 38 13 27 30 49 第四趟 13 27 30 38 第五趟 49 13 27 38 13 27 49 38 30 76 13 65 27 49 30 38 97 13 76 27 30 65 49 27 97 76 30 65 97 30 76 97
#include <stdio.h> void main() { int a[10],i,j,t; printf("请输入10个数字:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(j=0;j<=8;j++) for(i=0;i<=9-j;i++) if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } printf("排序后结果是:\n"); printf("%5d ",a[i]); } 按以上思路,给出如下程序代码
引例2:选择法排序。随机输入10个整数,将它们按由小到大的顺序输出。 排序思路: 先在n个数中找出最小值放在第1个位置上,再在剩下的n-1个数中找出最小值放在第2个位置上,这样不断地重复下去,直到剩下最后一个数为止。 排序过程: ⑴首先通过n-1次比较,从n个数中找出最小的, 将它与第一个数交换—第一趟选择排序,结果最小的数被安置在第一个元素位置上 ⑵再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换—第二趟选择排序 ⑶重复上述过程,共经过n-1趟排序后,排序结束
k k 例:7个数 k i=0一趟开始 初始: [ 49 38 65 97 76 13 27 ] 13 49 j j j j j j k k i=1二趟开始 一趟结束: 13 [38 65 97 76 49 27 ] 27 38 j j j j j i=2三趟开始 二趟结束: 13 27 [65 97 76 49 38 ] i=3四趟开始 三趟结束: 13 27 38 [97 76 49 65 ] i=4五趟开始 四趟结束: 13 27 38 49 [76 97 65 ] i=5六趟开始 五趟结束: 13 27 38 49 65 [97 76 ] i=6七趟开始 六趟结束: 13 27 38 49 65 76 [97 ]
for(i=0;i<SIZE;i++) #include <stdio.h> #define SIZE 10 void main() { int a[SIZE],i,j,k,t; printf("请输入10个数字: \n"); for(i=0;i< SIZE;i++) scanf("%d",&a[i]); printf(“数组a为 :\n"); for(i=0;i<SIZE;i++) printf("%d ",a[i]); printf("\n"); for(i=0;i<SIZE;i++) { k=i; for(j=i+1;j<=SIZE;j++) if(a[j]<a[k]) k=j; if(i!=k) { t=a[i]; a[i]=a[k]; a[k]=t; } } printf("排序后的结果为 :\n"); printf("%d ",a[i]);
第6章 数组——总结 内 容 总 结 一维数组(一维数组的定义、初始化、引用);二维 数组(二维数组的定义、初始化、引用) ;数组的应 用;字符数组与字符串(字符数组的定义、初始化、 引用)。 内 容 总 结 知 识 点 一维数组(一维数组的定义、初始化、引用);二维 数组(二维数组的定义、初始化、引用) ;数组的应 用(数据排序:冒泡法排序、选择法排序)。 重 难 点