C语言程序设计实验5-7教案.doc
第 7-8 次课程名称程序设计基础课程性质实验课授课班级网络16-1、2授课地点1402授课时间2016年11月9日第5小节~第8小节
2016年11月16日第5小节~第8小节
2016年11月23日第5小节~第8小节课题: 实验六、 数组的应用——4学时
主要教学内容:一、二维数组、字符数组的定义、初始化和引用方法及字符串
函数的用法;一、二维数组、字符数组的地址和指针的概念和用法;
与数组有关的算法。
教学目标:1. 掌握一、二维数组、字符数组的定义、初始化和引用方法及字符
串函数的用法;
2. 掌握一、二维数组、字符数组的地址和指针的概念和用法;
3. 理解与数组有关的算法。
重 点:完成9个题目的设计。
难 点:第7、8、9题。
教学过程(组织与方法):首先,进行考勤并检查学生对实验的准备情况,做好
记录,之后指导学生完成实验指导书中规定的实验内容,最后,逐
个验收,并记录验收结果。
作业:实验报告:将实验内容的第7、8、9题中的任意一题写入实验报告,要
求画出传统流程图和N-S流程图。
实验六、数组的应用——设计型
1. 用起泡法(或称冒泡法)对15,5,9,2,7,11,8,3,12,1共10个整数由小到大排序。
解:(1)算法传统流程图如图1所示,N-S流程图如图2所示。
图1 传统流程图 图2 N-S流程图
(2)程序和运行结果如下:
#include
void main ( )
{ int i , j , t , a[ 10 ] = { 15 , 5 , 9 , 2 , 7 , 11 , 8 , 3 , 12 , 1 } ;
for ( i = 0 ; i < 9 ; i++ )
for ( j = 0 ; j < 9 - i ; j++ )
if ( a[ j ] > a[ j + 1 ] ) { t = a[ j ] ; a[ j ] = a[ j + 1 ] ; a[ j + 1 ] = t ; }
for ( i = 0 ; i < 10 ; i++ )
printf ( "%3d" , a[ i ] ) ;
printf ( "\n" ) ; }
结果如下:
ㄩㄩ1ㄩㄩ2ㄩㄩ3ㄩㄩ5ㄩㄩ7ㄩㄩ8ㄩㄩ9ㄩ11ㄩ12ㄩ15
2. 定义一个指向整型变量的指针变量,用该指针变量对10个整数15,5,9,2,7,11,8,3,12,1采用选择法进行由小到大排序。
解:(1)算法传统流程图如图3所示,N-S流程图如图4所示。
图3 传统流程图 图4 N-S流程图
(2)程序和运行结果如下:
#include
void main ( )
{ int i , j , k , t ,*p ;
int a[10] = { 15 , 5 , 9 , 2 , 7 , 11 , 8 , 3 , 12 , 1 } ;
p = a ;
for ( i = 0 ; i < 10 ; i++ )
{ k = i ;
for ( j = i + 1 ; j < 10 ; j++ )
if ( *( p + k ) > *( p + j ) ) k = j ;
if ( k != i )
{ t = *( p + i ) ; *( p + i ) = *( p + k ) ; *( p + k ) = t ; }
printf ( "%3d" , *( p + i ) ) ;
}
printf ( "\n" ) ;
}
结果如下:
ㄩㄩ1ㄩㄩ2ㄩㄩ3ㄩㄩ5ㄩㄩ7ㄩㄩ8ㄩㄩ9ㄩ11ㄩ12ㄩ15
3. 编一程序,将字符数组s1中存放的字符串"Iㄩㄩㄩ。
解:(1)算法传统流程图如图7所示,N-S流程图如图8所示。
(2)程序和运行结果如下:
#include
void main ( )
{ int i , j ;
int a[ ][4] = {{ 1 , 1 , 2 , 1 } , { 2 , 2 , 1 , 3 } , { 4 , 2 , 3 , 1 } };
int b[ ][4] = { { 2 , 3 , 5 , 2 } , { 3 , 1 , 6 , 1 } , { 1 , 1 , 5 , 0 } } , c [3][4] ;
for ( i = 0 ; i < 3 ; i++ )
{ for ( j