您好,欢迎访问三七文档
《C语言程序设计》实验报告----------------------------------------------------------------------------------------------实验6数组(一)一、实验目的(1)掌握一维数组、二维数组的定义,初始化方法。(2)掌握一维数组、二维数组中数据的输入和输出方法。(3)掌握与数组有关的算法(查找,插入,排序等算法)。(4)了解用数组处理大量数据时的优越性。二、实验内容和步骤1.填空题(1)给定程序c6-1.c的功能是在第一个循环中给a数组的前10个数组元素依次赋值1,2,3,4,5,6,7,8,9,10;在第二个循环中使a数组的前10个元素中的值对称折叠,变成1,2,3,4,5,5,4,3,2,1;在最后一个循环中输出对称折叠以后的a数组的前10个元素。#includestdio.hintmain(){inti,a[10];for(i=1;i=10;i++)a[i-1]=i;for(i=0;i5;i++)a[i+5]=5-i;for(i=0;i10;i++)printf(%5d,a[i]);printf(\n);return0;}(2)给定程序c6-2.c的功能是把数组a(大小为M)的前M-1个元素中的最小值放入a的最后一个元素中。#includestdio.h#defineM11intmain(){inta[M],i;for(i=0;iM-1;i++)scanf(%d,&a[i]);a[M-1]=a[0];for(i=1;i=10;i++)if(a[M-1]a[i])a[M-1]=a[i];printf(Minis%d\n,a[M-1]);return0;}(3)c6-3.c的功能是求二维数组a中的最大元素及其下标。#includestdio.hintmain(){inta[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}};inti,j,max,l,c;max=a[0][0];for(i=0;i4;i++)for(j=0;j4;j++)if(a[i][j]=a[0][0]){max=a[i][j];l=i;c=j;}printf(max=%d,l=%d,c=%d%\n,max,l+1,c+1);return0;}(4)下面的程序c6-4,c用于自动形成并输出以下矩阵。#includestdio.hintmain(){inti,j,k,a[5][5];k=2;for(i=0;i5;i++)for(j=0;j5;j++)if(j=i)a[i][j]=1;elsea[i][j]=k++;for(i=0;i5;i++){for(j=0;j5;j++)printf(%4d,a[i][j]);printf(\n);}Return0;}总结与反思:1.下标数+1=第几个2.第(3)题最好写=,因为这样包括了第一位置是0的情况!3.注意是j=i(不是=!!!)2.改错题(1)以下给定程序c6-5.c的功能是求一维数组a中所有元素的平均值,结果保留两位小数例如,当一维数组a中的元素为10,4,2,7,3,12,3,34,5,9时,程序的输出应为“Theaveris:9.10”#includestdio.hintmain(){inta[10]={10,4,2,7,3,12,5,34,5,9},i;floataver,s;s=10;for(i=1;i10;i++)s+=a[i];aver=s/i;printf(Theaveris:%.2f\n,aver);return0;}(2)以下给定程序c6-6.c的功能是输入一个数x,查找x在数组a中最后一次出现的位置。例如:如果a数组中的元素为1,5,2,5,6,8,7,4,3,0,当x=5,时程序的输出结果为“5isNO3”当x=10时,该数组不再数组中,程序的输出结果应为“10notfount”#includestdio.hintmain(){inta[10]={1,5,2,5,6,8,7,4,3,0};inti,k,x,f=0;scanf(%d,&x);for(i=0;i10;i++)if(a[i]==x){f=1;k=i;}if(f=1)printf(%disNo.%d\n,x,k);elseprintf(%dnotfound!\n,x);return0;}(3)给定程序c6-7.c的功能是求二维数组a中的最小值。#includestdio.hintmain(){inta[3][3]={4,2,34,7,3,12,5,6,5},i,j,min;min=a[0][0];for(i=0;i3;i++)for(j=0;j3;j++)if(mina[i][j])min=a[i][j];printf(Theminis:%d\n,min);return0;3.编程题(1)编写一个程序,求一维数组中下标为偶数的元素之和。#includestdio.hintmain(){inta[10],i,sum=0;for(i=0;i10;i++)scanf(%d,&a[i]);for(i=0;i10;i+=2)sum+=a[i];printf(sum=%d\n,sum);return0;}(2)有一个已经从小到大排好序的数组,即a[30]={6,9,12,15,19,23,45,,67,,89,98}现输入一个整数X,要求按原来的升序规律将他插入到数组中。#includestdio.hintmain(){inti,x,j,a[30]={6,9,12,15,19,23,45,67,89,98};scanf(%d,&x);for(i=0;i9;i++)if(x=a[i]&&x=a[i+1])正确的运行结果:{for(j=9;ji;j--)a[j+1]=a[j];a[i+1]=x;break;}elseif(xa[0]){for(j=9;j=0;j--)a[j+1]=a[j];如果去掉第一个break:a[0]=x;break;}elsea[10]=x;for(i=0;i11;i++)如果去掉第二个break:printf(%d,a[i]);printf(\n);return0;}思考为什么会出现这种情况?----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------(3)编写一个程序,将100以内的素数存放到一个数组中。#includestdio.hintmain(){inta[50],i,j,m=0,f=0;for(i=2;i100;i++){for(j=2;ji;j++)if(i%j==0)break;if(j==i){a[m]=i;m+=1;}}printf(1~100所有的素数:\n);for(i=0;im;i++)printf(%d,a[i]);printf(\n);return0;}这题很诡异,记住就行了!(4)统计3个学生的4门课程的考试成绩,要求输出每个学生的总成绩,平均成绩和所有学生的总平均成绩。#includestdio.hintmain(){inta[3][4],i,j,r[3]={0,0,0};floats=0;for(i=0;i3;i++)for(j=0;j4;j++)scanf(%d,&a[i][j]);for(i=0;i3;i++)for(j=0;j4;j++)r[i]+=a[i][j];for(i=0;i3;i++){printf(第%d位同学总成绩%d,i+1,r[i]);printf(平均成绩%.1f\n,r[i]/4.0);s+=r[i];}printf(四位同学总平均成绩%f\n,s/4);return0;}(5)打印杨辉三角的前10行。#includestdio.hintmain(){inta[10][10],i,j;for(i=0;i10;i++){a[i][i]=1,a[i][0]=1;}for(i=2;i10;i++)for(j=1;ji;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i10;i++){for(j=0;j=i;j++)printf(%5d,a[i][j]);printf(\n);}return0;}
本文标题:实验6数组一
链接地址:https://www.777doc.com/doc-7372408 .html