当前位置:文档之家› 实验4 数组答案

实验4 数组答案

实验四数组实验课程名: 高级语言程序设计4 数组专业班级:学号:姓名:实验时间:2016年4月27日实验地点:K4 指导教师:一、实验目的及要求1.掌握一维数组与二维数组的定义、赋值与输入输出的方法;2.掌握字符数组与字符串函数的使用;3.掌握与数组有关的算法(特别就是排序算法)。

二、实验任务:(一)(1)程序代码:#include <stdio、h>#define N 10void main( ){int i,a[N];float av=0;for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N;i++){ printf("%d",a[i]);printf(" ");if(i%3==0)printf("\n");}for(i=0;i!=N;i++)av+=a[i];printf("av=%f\n",av/10);}(2)运行结果:(3)结果分析:当i能被3整除时,就换一次行。

(二)实验任务2(1)程序代码:#include <stdio、h>void main( ){int i,a[5],sum=0;for(i=0;i<=4;i++)scanf("%d",&a[i]);for(i=0;i<=4;i++)sum+=a[i];printf("sum=%d\n",sum);}(2)程序运行结果:(3)程序分析:使用for循环依次输入5个数,并使5个数相加。

(三)实验任务3(1)程序代码:#include <stdio、h>int main( ){ int i,j,row=0,colum=0,max;int a[3][4] = {{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}};max=a[0][0];for(i=0;i<=2;i++)for (j=0;j<=3;j++)if(a[i][j]>max){max=a[i][j];row=i;colum=j;}printf(" Max=%d, Row=%d, Colum=%d\n", max, row, colum);return 0;}(2)程序运行结果:(3)程序分析:分别将这12个元素同max相比较,当某个元素的值大于max时,则将此元素的值赋值给max,最后输出max及最大值的下标。

(四)实验任务 4(1)程序代码:#include <stdio、h>void main( ){ int i, x, a[10]={1,2,3,4,5,6,7,8,9,10};scanf("%d",&x); /*输入x变量的值 */for ( i=0; i<10; i++ )printf("%4d",a[i]);printf("\n");for(i=0;i<10;i++) /* 循环查找与x相等的元素 */if ( x==a[i] )printf("%d\n",i); /* 输出查找结论 ,输出下标值 */else printf("Not found %d\n",x);}(2)运行结果:(3)程序分析:通过for循环查找与x相等地元素。

(五)实验任务 5(1)程序代码:# include<stdio、h>#define N 11int main(){int i,j,a[N],t,n=10,c,k;printf("输入10个整数:");for(i=0;i<n;i++)scanf("%d",&a[i]); //输入10个整数//printf("\n");for(j=0;j<9;j++)for(i=0;i<9-j;i++)if(a[i]<a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;} //比较10个数的大小// printf("由大到小排序为:\n");for(i=0;i<10;i++)printf("%d ",a[i]); //从大到小依次输出者10个数//printf("\n");printf("请输入您想插入的一个整数:\n");scanf("%d",&c);n=n+1;for(i=0;i<n-1;i++){if(c>=a[i]){for(j=n-1;j>i;j--){a[j]=a[j-1];}a[i]=c;printf("插入后的数组为:\n");for(k=0;k<n;k++){printf("%d ",a[k]);}printf("\n");return 0;}}}(2)运行结果:(3)程序分析:使用起泡算法将这10个数由大到小的顺序排列出来,后使用for循环语句把插入元素后的数组由大到小的顺序排列。

(六)实验任务6(1)程序代码:#include<stdio、h>int main(){int a[10];int i,k;printf("请输入10个整数:");for(i=0;i<10;i++)scanf("%d",&a[i]);k=0;for(i=1;i<10;i++)if(a[k]<a[i])k=i;for(i=k;i<9;i++)a[i]=a[i+1];for(i=0;i<9;i++)printf("%d ",a[i]);printf("\n");}(2)运行结果:(3)程序分析:该程序先将输入的10个数有小到大的顺序列出来,最后输出前9个数。

(七)实验任务 7(1)程序代码:#include <stdio、h>void main(){ float x[1000], sum=0、0, ave, a;int n=0, i;printf ("Enter mark : \n");scanf("%f", &a);while (a>=0、0 && n<1000){ sum+=a;x[n]= a ;n++;scanf("%f", &a);}ave= sum/n ;printf ("Output : \n");printf ("ave = %f\n", ave);for (i=0; i<n; i++)if ( x[i]<ave )printf("%f\n", x[i]);}(2)运行结果:(3)程序分析:输入若干个数,以负数为结束标志。

使用while选择语句,求出输入的整数的平均值。

(八)实验任务 8(1)程序代码:#include<stdio、h>void main(){int i,j,a[6][6];for(i=0;i<6;i++){a[i][0]=1;a[i][i]=1;}for(i=2;i<6;i++){for(j=1;j<=i-1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];}for(i=0;i<6;i++){for(j=0;j<=i;j++)printf("%d ",a[i][j]);printf("\n");}}(2)运行结果:(3)程序分析:这可以瞧做一个6*6的矩阵,通过使用数组级for循环语句将杨辉三角表示出来。

(九)实验任务 9(1)程序代码:#include <stdio、h>#include <string、h>void main(){ char a[10],b[10];int c,d,k,ch;scanf("%s",&a);scanf("%s",&b);printf("a=%s,b=%s\n",a,b);c=strlen(a);d=strlen(b);if(c>d){printf("a=%s\n",b);printf("b=%s\n",a);}else{printf("a=%s\n",a);printf("b=%s\n",b);}}(2)运行结果:(3)程序分析:使用strlen函数比较两个字符串的长度。

(十)实验任务 10(1)程序代码:#include <stdio、h>#include <string、h>void main( ){ char s1[80], s2[40];int i = 0, j = 0;printf(" \n Please input string1:");scanf("%s", s1);printf(" \n Please input string2:");scanf("%s", s2);while (s1[i]!= '\0' )i++;while (s2[j]!= '\0' )s1[i++]=s2[j ++];s1[i]= '\0';printf("\n New string: %s", s1);}(2)运行结果:(3)程序分析:运行程序的时候先输入country,再输入side,经过程序的运行,实现了将side连接到country的后面形成新的单词countryside,即实现了将第二个字符串连接到第一个字符串的后面从而·形成一个新的字符串的功能。

(十一)实验任务 11(1)程序代码:#include "stdio、h"void main (){char str1[100],str2[100];int i,s;printf("\n Input string 1:\n");gets(str1);printf("\n Input string 2:\n");gets(str2);i=0;while((str1[i]==str2[i])&&(str1[i]!=" "))i++;s=str1[i]-str2[i];printf("%d\n",s);0020}(2)运行结果:(3)程序分析:先输入abcdefg,后输入abceef,让后求出两个字符数组中第一个不同元素的ASCII码之差。

相关主题