《C语言-《二维数组和选择排序》.ppt》由会员分享,可在线阅读,更多相关《C语言-《二维数组和选择排序》.ppt(15页珍藏版)》请在金锄头文库上搜索。
1、二维数组二维数组上次课程回顾1.一维数组的定义一维数组的定义,初始化初始化 2.冒泡排序算法冒泡排序算法本次课内容本次课内容掌握二维数组的定义、初始化掌握二维数组的定义、初始化掌握二维数组的定义、初始化掌握二维数组的定义、初始化掌握二维数组的存储及应用掌握二维数组的存储及应用掌握二维数组的存储及应用掌握二维数组的存储及应用掌握掌握掌握掌握选择排序的算法选择排序的算法选择排序的算法选择排序的算法教材对应:教材对应:教材对应:教材对应:P106113P1061134二维数组二维数组 一、定义格式一、定义格式一、定义格式一、定义格式 类型标识符类型标识符类型标识符类型标识符 数组名数组名数组名数组名
2、 行下标行下标行下标行下标 列下标列下标列下标列下标 9898676787879090 S00 S01 S02 S03 int s34; int s34; 二、二、二、二、 二维数组在内存中存储形式二维数组在内存中存储形式二维数组在内存中存储形式二维数组在内存中存储形式 98 67 87 90 98 67 87 90 66 78 56 79 66 78 56 79 68 68 89 78 68 68 89 78 S10 S11 S12 S13 S10 S11 S12 S13 6666787856567979二维数组定义二维数组定义初始化intbooks32=11,1294,22,450,33,
3、4000; intarr3=1,2,3,4,5,6;intarr2=1,2,3,4,5,6;错误错误错误错误练习 2 2、通过键盘给二维数组赋值、通过键盘给二维数组赋值、通过键盘给二维数组赋值、通过键盘给二维数组赋值 98 67 87 90 98 67 87 90 66 78 56 79 66 78 56 79 68 68 89 78 68 68 89 78二维数组存储 int s34 行下标行下标 列下标列下标 main() int s34, i, j; for(i=0;i3;i+) for(j=0;j4;j+) printf(“%2d”, sij); printf(“n”); for(i=
4、0;i3;i+)for(j=0;j4;j+)scanf(%d,&sij); main() int a23=1,2,3,4,5,6, b32; for( i=0; i2; i+ ) for(j=0; j3; j+) for( i=0; i 3 3; i+ ) for(j=0; j 2 2; j+) printf(“%4d”, bij); printf(“n”); 1 2 3 1 2 3 4 5 6 4 5 6a=a=1 41 4 2 5 2 5 3 6 3 6b=b=矩阵转置演示代码示例演示代码示例11_1 设某学校学生为设某学校学生为 5000 人,其年龄在人,其年龄在 17岁岁 26岁,请编
5、程序实现统计各年龄岁,请编程序实现统计各年龄 的人数。的人数。 main()main() int s10=0, age, i; int s10=0, age, i; for(i=0; i5000; i+) for(i=0; i5000; i+) scanf(“%dn”, &age); scanf(“%dn”, &age); switch(age) switch(age) case 17: s0+;break; case 17: s0+;break; case 18: s1+;break; case 18: s1+;break; case 26: s9+;break; case 26: s9+;
6、break; default: printf(“ default: printf(“数据错数据错数据错数据错” ”); ); for(i=0; i10; i+)for(i=0; i10; i+) printf(“%2d”, si ); printf(“%2d”, si ); 代码分析代码分析inti,j,student32;for(i=0;i3;i+)printf(n输入学号 %d 两个学期的成绩:,i+1);for(j=0;j2;j+)scanf(%d,&studentij);printf(n学员的学号及其两个学期的成绩为:n);printf(nt学号t第一学期t第二学期);for(i=0;
7、i3;i+)printf(nt);printf(%dt,i+1);for(j=0;j2;j+)printf(%dtt,studentij);printf(n);i=0i=1 i=2j=0 657889j=1 568066内层循环执行 6 次,读入6个值输出数组元素的值输入学号 1 两个学期的成绩:6556输入学号 2两个学期的成绩:7880输入学号 3 两个学期的成绩:8966学员的学号及其两个学期的成绩为: 学号 第一学期 第二学期165562788038966Pressanykeytocontinue选择排序算法 选择排序算法是通过若干次循环,每次循环都把数组中未选择排序算法是通过若干次循
8、环,每次循环都把数组中未排序部分的最小(大)元素放到未排序部分的第一位。排序部分的最小(大)元素放到未排序部分的第一位。44335522111133552244第一趟比较112255334411223355441122334455第二趟比较第三趟比较第四趟比较从选择排序过程可以看出,选择排序算法也需要两重循环,从选择排序过程可以看出,选择排序算法也需要两重循环,内部循环用于从未排序部分找出最小(大)元素。而外部循环用内部循环用于从未排序部分找出最小(大)元素。而外部循环用于控制内部循环的次数,于控制内部循环的次数,外部循环次数为数组个数减外部循环次数为数组个数减1.1.现假设数组元现假设数组元素个数为素个数为N N。演示代码示例演示代码示例11_2本次课课程总结1二维数组的定二维数组的定义、初始化义、初始化2二维数组的存二维数组的存储及应用储及应用3选择排序算法选择排序算法作业布置与要求 1、用二维数组打印出空心菱形。 2、输入n个学生的数学,英语成绩,然后统计每门课程的总成绩,平均分,最高分和最低分,最后输出新的成绩单,成绩单对齐。下次课内容数组测试题2数组总结3 1