文档视界 最新最全的文档下载
当前位置:文档视界 › 实验4 数组答案

实验4 数组答案

实验4 数组答案
实验4 数组答案

实验四数组

实验课程名: 高级语言程序设计4 数组

专业班级:学号:姓名:

实验时间:2016年4月27日实验地点:K4 指导教师:

一、实验目的及要求

1.掌握一维数组与二维数组的定义、赋值与输入输出的方法;

2.掌握字符数组与字符串函数的使用;

3.掌握与数组有关的算法(特别就是排序算法)。

二、实验任务:

(一)(1)程序代码:#include

#define N 10

void main( )

{

int i,a[N];

float av=0;

for(i=0;i

scanf("%d",&a[i]);

for(i=0;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

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

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

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

#define N 11

int main()

{

int i,j,a[N],t,n=10,c,k;

printf("输入10个整数:");

for(i=0;i

scanf("%d",&a[i]); //输入10个整数//

printf("\n");

for(j=0;j<9;j++)

for(i=0;i<9-j;i++)

if(a[i]

{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

{

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

{printf("%d ",a[k]);

}

printf("\n");

return 0;}}

}

(2)运行结果:

(3)程序分析:使用起泡算法将这10个数由大到小的顺序排列出来,后使用for循环语句把插入元素后的数组由大到小的顺序排列。

(六)实验任务6

(1)程序代码:#include

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]

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

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

if ( x[i]

printf("%f\n", x[i]);

}

(2)运行结果:

(3)程序分析:输入若干个数,以负数为结束标志。使用while选择语句,求出输入的整数的平均值。

(八)实验任务 8

(1)程序代码:#include

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

#include

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

#include

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码之差。

(十二)实验任务 12

(1)程序代码:#include

#include

void main()

{

int num[26],i;

char c;

for(i=0;i<26;i++)

num[i]=0;

while ((c=getchar())!='#') /* 统计从终端输入的大写字母个数*/

if (isupper(c)) num[c-65]+=1; //检查ch就是否为大写字母//

for (i=0;i<26;i++) /* 输出大写字母与该字母的个数*/

if (num[i])

printf("%c:%d\n",i+65,num[i]);

}

(2)运行结果:

(3)程序分析:

(十三)实验任务 13

(1)程序代码:#include

#include

void main()

{

char a[50][100]; //字符数组a[50][100]//

int i=0,max=0,k;

printf("请输入字符串,每次输入完成后请按一次“Enter”:\n");

while(gets(a[i])&&strcmp(a[i],"stop")) //比较两个字符串// {

if(strlen(a[i])>max) //统计字符数组中字符的个数// {max=strlen(a[i]);k=i;}

i++;}

printf("最长的字符串就是:\n%s\n",a[k]);

}

(2)运行结果:

(3)程序分析:运用while循环及if条件语句,测出每次输入字符串的长度,并比较她们的大小,最后输出最长的字符串。

(十四)实验任务 14

(1)程序代码:#include

#include

void insert(char *p1,char *p2,char pos)

{

int m,n,i;

char temp[20];

m=strlen(p1);

n=strlen(p2);

for(i=0;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 s1[20], s2[20];

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年月日

相关文档