C语言程序设计实验教学(6)【实验目的】数组的应用是很重要的一章。
通过实验掌握一维数组的主要应用,并理解数组的存储。
对二维数组的处理要比较熟悉。
【实验要求】一维数组的题目要求全面掌握,应用循环结构完成一维数组的输入、处理和输出。
二维数组能够完成简单的数据处理和应用。
【实验课时】8.0【实验内容】一维数组:1、定义一个可以存放10个元素的int数组a,输入10个数,并逆序输出。
#include <stdio.h>#include <conio.h>void main( ){int a[10], i; clrscr();printf("Please input array a :");for(i=0;i<10;i++)scanf("%d", &a[i]);/* 由键盘逐次输入值赋予数组各元素*/for(i=9;i>=0;i--) /* 变量i递减控制着数组元素倒序输出*/ printf("%5d", a[i]);}2、用数组来保存Fibonacci数列前20项数值,以每5个数据为一行进行输出。
#include <stdio.h>#include <conio.h>void main( ){int i; long f[20]; clrscr();f[0]=1;f[1]=1;for(i=2;i<20;i++)f[i]=f[i-1]+f[i-2];for(i=0;i<20;i++){if(i%5==0) printf("\n");printf("%10ld",f[i]);}}3、统计具有10个元素的自然数数组num中的奇数个数。
#include <stdio.h>#include <conio.h>void main( ){int i,num[10],count=0; clrscr();for(i=0;i<10;i++){printf("enter NO %d : ",i+1);/*给予输入提示*/scanf("%d",&num[i]);if(num[i]%2!=0) count++;}printf("Count is:%d\n",count );}4、计算整数数组a中的最大值及其所在的下标。
#include <stdio.h>#include <conio.h>void main( ){int i,max,p,a[10]; clrscr();printf("please enter 10 data:\n");for(i=0;i<10;i++)scanf("%d",&a[i]);max=a[0];p=0;for(i=1;i<10;i++)if(a[i]>max) {max=a[i];p=i;}printf("max is:%d\n",max);printf("point is:%d\n",p+1);}5、输入20个实数存放在一维数组中,输出它们的平均值以及高于平均值的数的个数。
#include <stdio.h>#include <conio.h>void main( ){float a[20],sum=0,ave;int i, n=0; clrscr();printf("Enter array a: \n");for(i=0;i<20;i++) scanf("%f",&a[i]);for(i=0;i<20;i++) sum+=a[i]; /* 计算20个实数累加和*/ave=sum/20.0; /* 计算20个实数平均值*/for(i=0;i<20;i++)if(a[i]>ave) n++; /* 统计高于平均值的个数*/printf("The average=%f \n", ave);printf("connt=%d\n",n);}6、实现对n个数的数列从小到大排序。
(比较交换法、选择法、冒泡法)方法一:比较交换法#include <stdio.h>#include <conio.h>void main( ){int i,j,n,a[100]; int temp; clrscr();printf("enter the number:\n"); scanf("%d",&n);for(i=0;i<n;i++) scanf("%d",&a[i]);printf("\n output the original array\n");for(i=0;i<n;i++) printf("%5d",a[i]);/* 输出原始的一维数组序列*/ for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]>a[j]) {temp=a[i];a[i]=a[j];a[j]=temp;}printf("\n output the sorted array\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出排序后的一维数组序列*/ }方法二:选择法#include <stdio.h>#include <conio.h>void main( ){int i,j,n,p,a[100];int temp;clrscr();printf("enter the number:\n"); scanf("%d",&n);for(i=0;i<n;i++) scanf("%d",&a[i]);printf("\n output the original array\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出原始的一维数组序列*/ for(i=0;i<n-1;i++){p=i; /*假定第i趟中最小数的位置是i*/for(j=i+1;j<n;j++)if(a[j]<a[p]) p=j;if(i!=p) {temp=a[i];a[i]=a[p];a[p]=temp;}}printf("\n output the sorted array\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出排序后的一维数组序列*/ }方法三:冒泡法#include <stdio.h>#include <conio.h>void main( ){int i,j,k,n,a[100];int temp;clrscr();printf("enter the number:\n"); scanf("%d",&n);for(i=0;i<n;i++) scanf("%d",&a[i]);printf("\n output the original array\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出原始的一维数组序列*/ for(i=n-1;i>=1;i--){k=i;/* k为每轮比较范围的终止元素下标*/for(j=0;j<=k-1;j++)if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}printf("\n output the sorted array\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出排序后的一维数组序列*/}7、假如数组a中的n个数是有序的,请将输入的数k插入到a中,要求插入后依然保持有序。
/*the array is sorted by small to big */#include <stdio.h>#include <conio.h>void main( ){int a[20],i,n,k; int point; clrscr();printf("\nplease enter the number of data:(<20) ");scanf("%d",&n);/*输入原始数据的个数*/for(i=0;i<n;i++) scanf("%d",&a[i]);/*输入的数据要从小到大*/printf("\n output the original array\n");for(i=0;i<n;i++) printf("%5d",a[i]); /* 输出原始的一维数组序列*/ printf("please enter the number to be inserted:");scanf("%d",&k);/*输入要插入的数据*/for(i=0;i<n;i++)if(a[i]>k) {point=i; break;} if(i!=n){for(i=n;i>point;i--) a[i]=a[i-1]; a[point]=k;} /*从后向前方式*/ else a[n]=k;printf("The array after insert is:\n");for(i=0;i<n+1;i++) printf("%4d ",a[i]); /* 输出插入后的一维数组序列 */ }8、 数组的元素的删除:从数组中删除指定的元素n 。