实验七一维数组的应用
实验时间:2010年11月19日
【实验目的】
1、掌握一维数组的定义、赋值和输入、输出的方法;
2、能用循环处理数组,用数组存储数据;
3、掌握与数组应用有关的算法(例如求最大值、最小值算法,冒泡法排序算法、选择法排序算法等)。
【实验内容】
1、一维数组的定义、赋值、输入和输出;
2、用循环处理数组,数组元素的引用;
3、数组的应用:求最大值、最小值问题,冒泡法排序,选择法排序。
【实验步骤】
一、在E或F盘上建立以自己的学号命名的文件夹。
二、上机验证题
1、分析以下程序,写出运行结果。
/* 文件名:ex7_1.c */
#include <stdio.h>
#define N 10
main ( )
{
int k;
float a[N],av,s;
s=0.0;
printf("请输入10个数:\n");
for (k=0; k<N; k++) /* 输入N个数,存放到a数组中,并求和 */ {
scanf("%f",&a[k]);
s=s+a[k];
}
av=s/N; /* 求N个数的平均值并输出 */
printf("average=%.2f\n",av);
for (k=0; k<N; k++) /* 输出大于平均值的数 */
if (a[k]>av)
printf("%.0f\t",a[k]);
}
2、分析以下程序,写出运行结果
/* 文件名:ex7_2.c */
#include <stdio.h>
main ( )
{
int a[10],i,max,min,maxpos,minpos;
printf("请输入10个整数:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
max=min=a[0];
maxpos=minpos=0;
for(i=0;i<10;i++)
{
if(max<a[i])
{
max=a[i];
maxpos=i+1;
}
else if(min>a[i])
{
min=a[i];
minpos=i+1;
}
}
printf("max=%d,pos=%d\n",max,maxpos);
printf("min=%d,pos=%d\n",min,minpos);
}
3、分析以下程序,写出运行结果。
/* 文件名:ex7_3.c */
#include <stdio.h>
main ( )
{
char str[20];
int i,num;
gets(str);
if(str[0]!=' ')
{
num=1;
}
else
{
num=0;
}
for(i=1;str[i]!='\0';i++)
{
if(str[i]!=' ' && str[i-1]==' ')
{
num++;
}
}
printf("num=%d\n",num);
}
三、编程题:
1、在键盘上输入N个整数,试编制程序使该数组中的数按照从大到小的次序排列。
源程序以ex7_4.c保存在自己的文件夹内。
(可以用冒泡法排序,也可以用选择法排序)
2、青年歌手参加歌曲大奖赛,有10个评委对她的进行打分,试编程求这位选手的平均得分(去掉一个最高分和一个最低分)。
源程序以ex7_5.c保存在自己的文件夹内。
3、已知5名学生的学号和4门课的成绩,试求个人平均成绩和各门课的平均成绩。
源程序以ex7_6.c保存在自己的文件夹内。
【实验小结】
应知:
1、数组的概念及数组元素的引用;
2、数组的地址及数组元素的存储形式;
3、冒泡法排序和选择法排序的基本思想。
应会:
1、一维数组的定义、赋值、输入与输出;
2、用循环结构处理数组的方法;
3、一维数组应用有关的算法(求最大值、最小值问题,冒泡法排序,选择法排序)。
【实验思考】
1、何谓数组?它有何特点?如何定义说明和使用?
2、数组元素的赋值、输入与输出,通常采取什么方法?
3、冒泡法排序和选择法排序的基本思想是什么?。