实验2-2、数组(有答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验4、数组

【实验目的】

1. 掌握数组的定义、赋值和输人输出的方法;

2. 学习用数组实现相关算法(如排序、求最大和最小值、有序数组的插入等)。

【实验内容】

1. 程序填空

(1) 下面程序的功能为:输入10个数字到数组中,统计其中正数的个数并求和,完

成以下的程序并运行出正确结果。

#include

void main()

{ int i,a[20],sum,count;

sum=0;

count=0;

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

/**************found**************/

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

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

if(a[i]>0)

{count++;

/**************found**************/

sum+= a[i] ;

}

printf(“sum=%d,count=%d\n”,sum,count);

}

(2) 下面程序的功能为:将3行4列的矩阵转置,如:

A= 128411109765321 A ’= 12

8411731062951

完成以下的程序并运行出正确结果。

#include

void main()

{int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

int b[4][3],i,j;

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

/**************found**************/

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

/**************found**************/

b[j][i]=a[i][j] ;

printf(“array b:\n “);

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

printf(“%4d”,b[i][j]);

printf(“\n”);

}

}

2.程序改错

(l)阅读下面的程序,修改以下程序中的错误并上机运行。

#include

void main()

{int a[5],n;

for(n=0;n<=5;n++)

scanf(“%d”,&a);

for(n=0;n<=5;n++)

printf(“%5d”,a[n]);

}

正确的程序:

#include

void main()

{int a[5],n;

for(n=0;n<=4;n++)

scanf(“%d”,&a[n]);

for(n=0;n<=4;n++)

printf(“%5d”,a[n]);

}

(2)下面程序的功能为:有一个3×4的矩阵,要求输出最大元素的值,以及它的行号和列号,修改以下的程序并上机运行。

#include

void main()

{int max,i,j,r,c;

static int a[3][4]={{12,9,-10,28},{31,19,10,-3},{15,46,41,-9}};

max=a[1][1];

for(i=1;i<=3;i++)

for(j=1;j<=4;j++)

if(a[i][j]>max)

{max=a[i][j];

r=i+1;

c=j+1; }

printf(“max=%d,row=%d,colum=%d\n”,max,r,c);

}

正确的程序:

#include

void main()

{int max,i,j,r,c;

static int a[3][4] = {{12,9,-10,28},{31,19,10,-3},{15,46,41,-9}};

max=a[0][0],r=c=0;

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

if(a[i][j]>max)

{max=a[i][j];

r=i+1;

c=j+1; }

printf(“max=%d,row=%d,colum=%d\n”,max,r,c);

}

3.编写一个C程序,实现对10个整数进行升序排序输出(排序算法不限,要求用数组实现)。

#include

void main( )

{ int x[10];

int i,j,s;

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

for(i=0;i<10;i++) scanf("%d",&x[i]);

printf("\n");

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

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

if (x[j]>x[j+1])

{s=x[j]; x[j]=x[j+1]; x[j+1]=s; }

printf("排序结果为:\n");

for(i=0;i<10;i++) printf("%d ",x[i]);

}

4.编写一个程序,读入9个裁判所打的分数,去掉一个最高分,去掉一个最低分,求剩余7个分数的平均值(要求用数组实现)。

方法一:无须排序,直接找出最大值和最小值

#include "stdio.h"

main()

{

int i,min=0,max=0;

float score[9],sum=0;

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

{ printf("请输入裁判%d的分数:",i+1);

scanf("%f",&score[i]);

}

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

{ if(score[i]

if(score[i]>score[max]) max=i;

sum+=score[i];

}

sum=sum-score[min]-score[max];

printf("去掉一个最高分:%g分\n",score[max]);

printf("去掉一个最低分:%g分\n",score[min]);

相关文档
最新文档