C语言程序设计 实验教学(6)
【实验目的】数组的应用是很重要的一章。通过实验掌握一维数组的主要应用,并理解数组的存储。对二维数组的处理要比较熟悉。
【实验要求】一维数组的题目要求全面掌握,应用循环结构完成一维数组的输入、处理和输出。二维数组能够完成简单的数据处理和应用。 【实验课时】8.0 【实验内容】
一维数组:
1、 定义一个10个元素的int数组a,输入10个数,并输出。 main()
{int i,a[10]; for(i=0;i<10;i++) scanf(\ for(i=0;i<10;i++) printf(\ printf(\}
2、 用数组来保存Fibonacci数列前20项数值,以每5个数据为一行进行输出。 main()
{int i; long f[20]; 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(\ printf(\
1
} printf(\}
3、 计算整数数组num中的最大值及其所在的下标。 main()
{int i,max,p,a[10]; printf(\ for(i=0;i<10;i++) scanf(\ max=a[0];p=0; for(i=1;i<10;i++)
if(a[i]>max) {max=a[i];p=i;} printf(\ printf(\}
4、 在包含10个整数的数组中找出最大者,并与第一个元素交换。 main()
{int i,max,p,t,a[10]; printf(\ for(i=0;i<10;i++) scanf(\
printf(\ for(i=0;i<10;i++) printf(\ printf(\ max=a[0];p=0; for(i=1;i<10;i++)
2
if(a[i]>max) {max=a[i];p=i;} t=a[0];a[0]=a[p];a[p]=t;
printf(\ for(i=0;i<10;i++) printf(\ printf(\}
5、 输出整数数组num中所有大于平均值的数。 main()
{int i,n,num[100]; long sum=0; float ave; printf(\ scanf(\ for(i=0;i if((float)num[i]>ave) printf(\ printf(\} 6、 课本P141习题7.4。假如数组a中的数是有序的,请将输入的数n插 入到a中,要求插入后依然保持有序。 /*the array is sorted by small to big */ main() {int a[20],i,n,k; int point; printf(\ 3 scanf(\输入原始数据的个数*/ for(i=0;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(\ for(i=0;i 7、 数组的元素的删除:从数组中删除指定的元素。(位置、数据值) main() {int i,n,point,a[10]={12,10,23,1,4,45,70,123,65,89}; printf(\ to be earsed: \\n\i=1 ? point scanf(\ for(i=0;i<10;i++) 5 i=2 ? point 23 56 65 78 89 59 23 56 59 65 78 89 10 point=-1; /*保存应该删除的位置下标*/ 12 if(a[i]==n) {point=i; break;} if(point!=-1) /*n存在于数组中*/ {for(i=point;i<10;i++) a[9]=0;} else printf(\%d is not exist!\\n\ 4 10 23 1 4 … 12 23 1 4 45 70 a[i]=a[i+1]; /*point开始的元素逐个前移,从前向后方式*/ printf(\for(i=0;i<10;i++) printf(\printf(\} 8、 统计具有10个元素的自然数数组中的奇数个数。 main() {int i,num[10],count=0; for(i=0;i<10;i++) {printf(\给予输入提示*/ scanf(\if(num[i]%2!=0) count++;} printf(\} 9、 实现对n个数的数列从小到大排序。(选择法) main() {int i,j,n,point,a[100]; int temp; printf(\ scanf(\ for(i=0;i {point=i; /*假定第i趟中最小数的位置是i*/ for(j=i+1;j printf(\ 5