内容正文:
沈阳职业技术学院教案用纸
第 5 周 总第 14 次 学时:2
教学班级: 课程:C语言程序设计 授课教师:
课题:数组的上机操作
教学方法:多媒体演示、启发
教具:计算机
教学目标:通过上机操作使同学们熟练掌握数组相关知识
教学重点:数组在习题中的应用
教学难点:数组的灵活运用
主要教学内容:
数组的上机操作
1、用起泡法对6个整数进行升序排列。
2、将一个矩阵A(2×3)转换成为其转置矩阵A'(3×2)输出。
3、设计一个程序,将一个字符串逆序存放并显示。
课后回顾:
沈阳职业技术学院教案用纸
四个一:
提问:数组的定义、赋值以及数据元素的输入、输出。
导入:我们已经学习了数组的相关知识,数组包括一维数组、二维数组以及字符数组与字符串,这节课我们通过习题来巩固数组的相关知识。
正文:
数组的上机操作
1、用起泡法对6个整数进行升序排列。
解:起泡法排序的思路是,首先对n个数的每相邻两个数进行比较,小数放在前面,大数放在后面,经过第一遍扫描后,数列的最后一个数就是最大数;接着对前n-1个数进行同样的比较,将次大数放在倒数第二位置上,依此类推,直到排序结束为止。在这个过程中,大数不断往下沉,小数不断往上冒,故称为起泡法排序。
本例中对10,6,3,9,1,7这6个数排序,则要进行5轮次的比较。排序过程如图4-1所示(括号内为已排好序的序列)。在第一轮次比较中要进行5次两两比较,在第二轮次比较中要进行4次两两比较。若有n个数,在每轮次比较中要进行n-1次两两比较,在第二轮次比较中要进行n-2次两两比较,在第i轮次比较中要进行n-i次两两比较。
(
初始状态: 10 6 3 9 1 7
第一趟排序结果: 6 3 9 1 7 (10)
第二趟排序结果: 3 6 1 7 (9 10)
第三趟排序结果: 3 1 6 (7 9 10)
第四趟排序结果: 1 3 (6 7 9 10)
第五趟排序结果: 1 (3 6 7 9 10)
)
图4-1 起泡排序法的排序过程
源程序如下:
#include "stdio.h"
main()
{ int i,j,temp,a[6];
printf("please input 6 numbers:
");
for(i=0;i<6;i++)
scanf("%d",&a[i]);
printf("
");
for(j=1;j<=5;j++) /*比较5轮次*/
for(i=0;i<6-j;i++) /*第j轮次比较10-j次*/
if(a[i]>a[i+1]) /*比较相邻两数大小*/
{ temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
printf("the sorted numbers:
");
for(i=0;i<6;i++)
printf("%d ",a[i]);
}
程序运行结果如下:
2、将一个矩阵A(2×3)转换成为其转置矩阵A'(3×2)输出。
解:矩阵A的转置矩阵A'是指矩阵A的第0、第1行各元素,转换成转置矩阵A’的第0、第1列元素。
程序代码如下:
#include<stdio.h>
main()
{ int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a:
");
for(i=0;i<=1;i++)
{ for(j=0;j<=2;j++)
{ printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("
");
}
printf("array b:
");
for(i=0;i<=2;i++)
{ for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("
");
}
}
程序运行结果如下:
3、设计一个程序,将一个字符串逆序存放并显示。
解:字符串的逆序存放通过一个for循环实现,即将第一个字符与最后一个字符交换,第二个字符与倒数第二个字符交换,以此类推。
程序代码如下:
#include "stdio.h"
#include "string.h"
main()
{ char c,str[40];
int i,length;
printf("input string:");
gets(str);
length=strlen(str);
for(i=0;i<length/2;i++)
{ c=str[i];
str[i]=str[length-i-1];
str[length-i-1]=c;
}
printf("
output string:");
puts(str);
}
程序运行结果如下:
小结:
这节课我们通过习题分别练习了一维数组、二维数组以及字符串数据的相关知识,尤其是冒泡排序,希望大家能够熟练掌握数组的相关知识。
备 注
思考:
我们是否可以通过一个计数器和两重循环将每趟排序的结果显示出来,使排序更明显。
学科网(北京)股份有限公司
$$