当前位置:文档之家› 一维数组程序设计

一维数组程序设计

实训六一维数组程序设计一、实训目标熟练掌握使用一维数组的编程方法和常用算法。

1、掌握数组的定义、输入和输出方法。

2、掌握下标变量的使用方法。

3、掌握求极值、分类统计、排序、查找、移动等常用算法。

4、进一步熟练程序的调试和测试方法。

5、*学习数组作为函数参数的编程方法。

二、语法练习1、数组是把同类型的变量组织在一起。

2、 int a[5]; 表示定义了 5 个整形类型的变量,分别为:a[2]、a[3]、 a[4] 、 a[0] ,各元素在内存中连续存放,数组名a表示数组在内存中的初始地址。

3、在C语言中对一维整型数组的正确定义为 D 。

A)int a(10); B)int n=10,a[n];C)int a[ ]; D)#define N 10int a[N];4、以下能对一维数组a进行初始化的语句是: ( C )A. int a[5]=(0,1,2,3,4,);B. int a(5)={} ;C. int a[3]={0,1,2};D. int a[5]={5*1};5、已知:int a[10]; 则对a数组元素的正确引用是( D )。

A、a[10]B、a[3.5]C、a(5)D、a[0]6、若有以下数组说明,则数值最大的和最小的元素下标分别是( B )。

int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};A.1,12B.0,11C.1,11D.0,127、若有以下数组说明,则i=4;a[a[i]]元素数值是( A )。

int a[6]={ 8,11,3,6,2,12};A.3B.2C.6D.118、设有定义int a[5],i;用for循环结构分别写出数组的输入和输出程序段。

for(i=0;i<5;i++)scanf(“%d”,&a[i]);for(i=0;i<5;i++)printf(“%d”,&a[i]);三、实训内容和步骤1、定义一个具有10个元素的一维整型数组,从键盘给各元素赋值,并以每行4个数的格式输出。

源程序#include<stdio.h>#define SIZE 10void main(){int i,a[SIZE];printf(“Input 10 integers:\n”);for(i=0;i<10;i++)scanf(“%d”,&a[i]);for(i=0;i<10;i++){printf(“%d ”,a[i]);if((i+1)%4==0)printf(“\n”);}}语法错误:测试数据预期结果实际结果(连续运行时)调试过程:(指编译通过,无语法错误,但运行结果不对时)思考:(结合上一个实验内容)1)int a[10]; 未初始化时,各数组元素的值是多少?2)int a[10]={1,3};则a[0]~a[9]的值分别为:2、改错(教育在线上需改错的程序文件夹中err6_1.cpp),程序功能为:在数组a中查找与x相同的元素,如找到,输出x在数组中的下标。

(要求画出流程图)有错的源程序#include <stdio.h>int main(){int i, x, n;int a[n];printf("输入数组元素的个数:");scanf("%d", &n);printf("输入数组%d个元素:",n);for(i = 0; i < n; i++)scanf("%d", &a[i]);printf( "x= " ); //断点1scanf("%d", &x);for(i = 0; i < n; i++)if(a[i] != x) break; //断点2if(i!=n)printf( "没有找到与%d相等的元素!\n", d);elseprintf( "和%d相同的数组元素是a[%d]=%d\n", x, i, a[i]);return 0; //断点3}修改后的源程序#include <stdio.h>#define SIZE 100int main(){int i, x, n,flag;int a[SIZE];flag=1;printf("输入数组元素的个数:");scanf("%d", &n);printf("输入数组%d个元素:",n);for(i = 0; i < n; i++)scanf("%d", &a[i]);printf( "x= " ); //断点1scanf("%d", &x);for(i = 0; i < n; i++)if(a[i] == x) {printf(“与x相同的元素的下标为%d”,i);flag=0;}if(flag)printf(“没有与x相同的元素”);return 0; //断点3}语法错误:测试数据预期结果实际结果(连续运行时)调试过程:(指编译通过,无语法错误,但运行结果不对时,借助3个断点)在断点1处,查看数组各元素的值与你输入的数据是否一致3、从键盘输入一个班的成绩(最多20人),具体人数由键盘输入。

要求:找出最高分及序号、计算平均分、统计不及格的人数流程图#include<stdio.h>#define SIZE 20void main()int i,n,index,count;float a[SIZE],s,avg;printf(“Input n:\n”);scanf(“%d”,&n);printf(“Input %d grades:\n”,n);for(i=0;i<n;i++)scanf(“%f”,&a[i]);index=0;s=0;count=0;for(i=1;i<n;i++)if(a[i]>a[index])index=i;printf(“最高分=%f,序号=%d”,a[index],index); for(i=0;i<n;i++)s=s+a[i];avg=s/n;printf(“平均分=%f”,avg);for(i=0;i<n;i++)if(a[i]<60)count++;printf(“不及格人数=%d”,count);}源程序语法错误:测试数据预期结果实际结果(连续运行时)调试过程:(指编译通过,无语法错误后,但运行结果不对时)4、定义一个长度为6的数组,从键盘输入6个数据给数组,并显示;然后输入一个新数据x,原数组中数据逐次前移,即a[1]→a[0],a[2]→a[1],……,a[5]→a[4],新数据x→a[5],输出新的数组。

流程图#include<stdio.h>#define SIZE 6void main(){int a[SIZE],i,x,temp;printf(“Input 6 integers:\n”);for(i=0;i<6;i++)scanf(“%d”,&a[i]);for(i=0;i<6;i++)printf(“%d\n”,a[i]);printf(“Input x:\n”);scanf(“%d”,&x);for(i=1;i<6;i++)a[i-1]=a[i];a[5]=x;for(i=0;i<6;i++)printf(“%d”,a[i]);}语法错误:测试数据实际结果(连续运行时)调试过程:(指编译通过,无语法错误后,但运行结果不对时)思考:数据移动时,若按照:a[5]→a[4] ,……,a[2]→a[1] ,a[1]→a[0]的顺序编程,结果如何?a[4]=a[3]=a[2]=a[1]=a[0]=a[5]5、*(选做)输入一个班的成绩(最多20人),具体人数由键盘输入,按分数从高到低排序并输出。

流程图源程序#include<stdio.h>#define SIZE 20void main(){int i,n,index,k;float a[SIZE],temp;printf(“Input n:\n”);scanf(“%d”,&n);printf(“Input %d grades:\n”,n);for(i=0;i<n;i++)scanf(“%f”,&a[i]);for(k=0;k<n;k++){index=k;for(i=k+1;i<n;i++)if(a[i]>a[index])index=i;temp=a[index];a[index]=a[k];a[k]=temp;}for(i=0;i<n;i++)printf(“%f”,a[i]);}语法错误:测试数据实际结果(连续运行时)调试过程:(指编译通过,无语法错误后,但运行结果不对时)6、*(选作)把内容3中求最平均分的功能用一个函数去实现,如何改写?函数接口函数名:形参:返回值:源程序#include<stdio.h>float avg(float b[],int n);#define SIZE 20void main(){int i,n,index,count;float a[SIZE],s;printf(“Input n:\n”);scanf(“%d”,&n);printf(“Input %d grades:\n”,n);for(i=0;i<n;i++)scanf(“%f”,&a[i]);index=0;s=0;count=0;for(i=1;i<n;i++)if(a[i]>a[index])index=i;printf(“最高分=%f,序号=%d”,a[index],index);s=avg(a,n);printf(“平均分=%f”,s);for(i=0;i<n;i++)if(a[i]<60)count++;printf(“不及格人数=%d”,count);}float avg(float b[],int n){float all,result;int i;all=0;for(i=0;i<n;i++)all=all+b[i];result=all/n;return result;}语法错误:测试数据实际结果(连续运行时)调试过程:(指编译通过,无语法错误后,但运行结果不对时)四、分析与思考五、体会与建议。

相关主题