1、实验4数组答案解析实验四 数组实验课程名:高级语言程序设计4 数组专业班级:学号:姓名:实验时间:2016年4月27日实验地点:K4指导教师:一、实验目的及要求1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法;2. 掌握字符数组和字符串函数的使用;3. 掌握与数组有关的算法(特别是排序算法)。 二、实验任务:(一)(1)程序代码:#include #define N 10void main( ) int i,aN;float av=0;for(i=0;iN;i+) scanf(%d,&ai); for(i=0;iN;i+) printf(%d,ai); printf( ); if(i%
2、3=0) printf(n); for(i=0;i!=N;i+) av+=ai; printf(av=%fn,av/10); (2)运行结果:(3)结果分析:当i能被3整除时,就换一次行。(二)实验任务2(1)程序代码:#include void main( ) int i,a5,sum=0; for(i=0;i=4;i+) scanf(%d,&ai); for(i=0;i=4;i+) sum+=ai; printf(sum=%dn,sum);(2)程序运行结果:(3)程序分析:使用for循环依次输入5个数,并使5个数相加。(三)实验任务3(1)程序代码:#include int main(
3、) int i,j,row=0,colum=0,max; int a34 = 1,2,3,4, 9,8,7,6, -10,10,-5,2; max=a00; for(i=0;i=2;i+) for (j=0;jmax)max=aij; row=i; colum=j;printf( Max=%d, Row=%d, Colum=%dn, max, row, colum); return 0;(2)程序运行结果:(3)程序分析:分别将这12个元素同max相比较,当某个元素的值大于max时,则将此元素的值赋值给max,最后输出max及最大值的下标。 (四)实验任务 4 (1)程序代码:#include
4、 void main( ) int i, x, a10=1,2,3,4,5,6,7,8,9,10; scanf(%d,&x); /*输入x变量的值 */ for ( i=0; i10; i+ ) printf(%4d,ai); printf(n); for(i=0;i10;i+) /* 循环查找与x相等的元素 */ if ( x=ai ) printf(%dn,i); /* 输出查找结论 ,输出下标值 */ else printf(Not found %dn,x); (2)运行结果: (3)程序分析:通过for循环查找与x相等地元素。(五)实验任务 5 (1)程序代码:# include#de
5、fine N 11int main() int i,j,aN,t,n=10,c,k; printf(输入10个整数:); for(i=0;in;i+) scanf(%d,&ai); /输入10个整数/ printf(n); for(j=0;j9;j+) for(i=0;i9-j;i+) if(aiai+1) t=ai;ai=ai+1;ai+1=t; /比较10个数的大小/ printf(由大到小排序为:n); for(i=0;i10;i+) printf(%d ,ai); /从大到小依次输出者10个数/printf(n);printf(请输入你想插入的一个整数:n);scanf(%d,&c);
6、n=n+1;for(i=0;i=ai) for(j=n-1;ji;j-) aj=aj-1; ai=c; printf(插入后的数组为:n); for(k=0;kn;k+) printf(%d ,ak); printf(n); return 0; (2)运行结果: (3)程序分析:使用起泡算法将这10个数由大到小的顺序排列出来,后使用for循环语句把插入元素后的数组由大到小的顺序排列。(六)实验任务6 (1)程序代码:#includeint main() int a10; int i,k; printf(请输入10个整数:); for(i=0;i10;i+)scanf(%d,&ai); k=0;
7、 for(i=1;i10;i+) if(akai) k=i; for(i=k;i9;i+) ai=ai+1; for(i=0;i9;i+) printf(%d ,ai); printf(n); (2)运行结果: (3)程序分析:该程序先将输入的10个数有小到大的顺序列出来,最后输出前9个数。(七)实验任务 7 (1)程序代码:#include void main() float x1000, sum=0.0, ave, a; int n=0, i; printf (Enter mark : n); scanf(%f, &a); while (a=0.0 & n1000) sum+=a; xn=
8、 a ; n+; scanf(%f, &a); ave= sum/n ; printf (Output : n); printf (ave = %fn, ave); for (i=0; in; i+) if ( xiave ) printf(%fn, xi); (2)运行结果: (3)程序分析:输入若干个数,以负数为结束标志。使用while选择语句,求出输入的整数的平均值。(八)实验任务 8 (1)程序代码:#includevoid main() int i,j,a66; for(i=0;i6;i+) ai0=1; aii=1; for(i=2;i6;i+) for(j=1;j=i-1;j+)
9、 aij=ai-1j-1+ai-1j; for(i=0;i6;i+) for(j=0;j=i;j+) printf(%d ,aij); printf(n); (2)运行结果: (3)程序分析:这可以看做一个6*6的矩阵,通过使用数组级for循环语句将杨辉三角表示出来。(九)实验任务 9 (1)程序代码:#include #include void main() char a10,b10; int c,d,k,ch; scanf(%s,&a); scanf(%s,&b); printf(a=%s,b=%sn,a,b); c=strlen(a); d=strlen(b); if(cd) print
10、f(a=%sn,b); printf(b=%sn,a); else printf(a=%sn,a); printf(b=%sn,b); (2)运行结果: (3)程序分析:使用strlen函数比较两个字符串的长度。(十)实验任务 10 (1)程序代码:#include #include void main( ) char s180, s240; int i = 0, j = 0; printf( n Please input string1:); scanf(%s, s1); printf( n Please input string2:); scanf(%s, s2); while (s1i!
11、= 0 ) i+; while (s2j!= 0 ) s1i+=s2j +; s1i= 0; printf(n New string: %s, s1); (2)运行结果: (3)程序分析:运行程序的时候先输入country,再输入side,经过程序的运行,实现了将side连接到country的后面形成新的单词countryside,即实现了将第二个字符串连接到第一个字符串的后面从而形成一个新的字符串的功能。(十一)实验任务 11 (1)程序代码:#include stdio.hvoid main () char str1100,str2100; int i,s; printf(n Input
12、string 1:n);gets(str1); printf(n Input string 2:n);gets(str2); i=0; while(str1i=str2i)&(str1i!= ) i+; s=str1i-str2i; printf(%dn,s); 0020 (2)运行结果: (3)程序分析:先输入abcdefg,后输入abceef,让后求出两个字符数组中第一个不同元素的ASCII码之差。(十二)实验任务 12 (1)程序代码:#include #include void main() int num26,i; char c; for(i=0;i26;i+) numi=0; wh
13、ile (c=getchar()!=#) /* 统计从终端输入的大写字母个数*/ if (isupper(c) numc-65+=1; /检查ch是否为大写字母/ for (i=0;i26;i+) /* 输出大写字母和该字母的个数*/ if (numi) printf(%c:%dn,i+65,numi); (2)运行结果: (3)程序分析:(十三)实验任务 13 (1)程序代码:#include#includevoid main() char a50100; /字符数组a50100/ int i=0,max=0,k; printf(请输入字符串,每次输入完成后请按一次“Enter”:n); w
14、hile(gets(ai)&strcmp(ai,stop) /比较两个字符串/ if(strlen(ai)max) /统计字符数组中字符的个数/ max=strlen(ai);k=i; i+; printf(最长的字符串是:n%sn,ak); (2)运行结果: (3)程序分析:运用while循环及if条件语句,测出每次输入字符串的长度,并比较他们的大小,最后输出最长的字符串。(十四)实验任务 14 (1)程序代码:#include #include void insert(char *p1,char *p2,char pos)int m,n,i;char temp20;m=strlen(p1)
15、;n=strlen(p2);for(i=0;in;i+)if(pos=*(p1+i)strcpy(temp,p1+i+1);*(p1+i+1)=0;strcat(p1,p2);strcat(p1,temp); puts(p1);break;void main()char s120, s220;char pos;printf(Please input s1:);gets(s1);printf(Please input s2:);gets(s2);printf(Please input pos:);pos=getchar();putchar(pos);insert(s1,s2,pos); (2)运行结果: (3)程序分析:通过使用strcpy函数把str2指向的字符串复制到str1中1去。使用strcat函数把字符串str2接到str1后面,str1后面的0被取消。三、实验小结知道strcat、strcpy及strlen等函数的意义及用法。指导教师批阅及成绩指导教师签名:2016年 月 日