实验2-2、数组(有答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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]);