内容正文:
5.4 数据的应用举例
一、教学目标
1.灵活掌握一维和二维数组的应用。
2.灵活掌握字符数组的应用。
3.选择合适的数组编写程序。
二、重点难点
1.重点:灵活应用各种数组。
2. 难点:选择合适的数组编写程序。
三、教学时间
本任务教学,课内计划1课时。
4、 教学过程
教学过程
教学环节
教师活动
学生活动
设计意图
导入新课
想一想:
前边我们学过的数组有哪些?实际生活中我们又是如何利用数据解决一些实际问题的?
数学黑洞问题
取任意一个4位数(4个数字均为同一个数的除外),把四个数字对调后组成一个最大的数和一个最小的数,两数相减得出一个新数,重复以上过程,至多7次,就会得到6174,且不再变化。
例如:(以7642为例)
7642-2467=5175
7551-1557=5994
9954-4599=5355
5553-3555=1998
9981-1899=8082
8820-288=8532
8532-2358=6174
7641-1467=6174
进入情景调动积极性,获取信息,分析问题。
充分调动学生的积极性,引入话题,为下一步学习做铺垫
讲授新课
那我们如何利用数组为它编写程序呢?
1、 例5-4 找出10个学生中成绩低于平均成绩的人数并输出。
分析:可以定义一个长度为10的实型数组scores[ ]来存储10个学生的成绩。先计算出平均成绩,然后统计成绩低于平均成绩的人数。
程序如下:
#include <stdio.h>
main( )
{
int i, count= 0;
// count存储人数,初始化为0
float scores[ 10], ave=0.0;
// ave存储平均成绩,初始化为0.0
printf("输入10个学生成绩:
");
for(i=0;i<10;i++ )
{
scanf( "%f", &scores[ i]);
ave += scores[i];
//累加成绩求总分
}
ave/= 10;
//求出平均成绩
printf( "
平均成绩: %.1f
", ave );
for(i=0;i<10;i++)
if( scores[i]< ave ) count++; //若低于平均成绩,计数器加1
print( "低于平均成绩的人数: %2d", count );
getch( );
}
运行结果如图所示:
2、 例5-5 输入5个学生的3门课程成绩,求每个学生的平均成绩和每门课程的平均成绩。
分析:由于每个学生对应于一个平均成绩,需要使用一个一维数组(长度为5)存储这些平均成绩。计算时,只需对每个学生求总分,然后除以3即可得平均成绩。同理,定义一个一维数组(长度为3)来存储每门课程的平均成绩,先求每门课程的总分,再除以5可得平均成绩。
具体程序如下:
#include <stdio.h>
main( )
{ float scores[5][3] avestu[5], avecourse[3];
int i, j;
printf( " 输入5个学生的3门课程成绩:\ln" );
for(i=0;i<5;i++)
for(j=0;j<3;j++) .
scanf( "%f", &scores[i][j]);
for(i=0;i<5;i++) //求学生平均成绩
{ avestu[i]=0; //清零
for(j=0;j<3;j++) //求总分
avestu[i]+= scores[i][j];
avestu[i]/= 3; //求平均成绩
}
printf( "
输出每个学生的平均成绩:
");
for(i=0;i<5;i++)
printf( "%8.2f", avestu[i]);
for(i=0;i<3;i++)