实验6数组程序设计答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验 6 数组程序设计
一、实验目的
1.掌握一维数组和二维数组的定义、赋值和输入输出的方法。
2.掌握字符数组和字符串函数的使用。
3.掌握与数组有关的算法。
二、实验内容
1.改错题
( 1)下列程序的功能为:为指定的数组输入10 个数据,并求这些数据之和。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_1.c 保存。
#include
void main()
#include
{int n=10,i,sum=0;
int a[n];
void main()
for(i=0;i<10;i++){int n=10,i,sum=0;
{
int a[ 10];
scanf("%d",a[i]);
sum=sum+a[i];
for(i=0;i<10;i++)
}{
printf("sum=%d\n",sum);scanf("%d", & a[i]);
}
sum=sum+a[i];
}
printf("sum=%d\n",sum);
}
( 2)下列程序的功能为:将字符串 b 连接到字符串 a。纠正程序中存在的错误,以实
现其功能。程序以文件名sy6_2.c 保存。
#include
void main( )
#include
{ char a[]="wel",b[]="come";void main( )
int i,n=0;{ char a[ 10]="wel",b[]="come";
while(!a[n]) n++;
inti,n=0;
for(i=0;b[i]!='\0';i++)
a[n+i]=b[i];
while( a[n] ) n++;
a[n+i]= \0’’;for(i=0;b[i]!='\0';i++)
printf("%s\n",a);
}a[n+i]=b[i];
printf("%s\n",a);
}
(3)下列程序的功能为:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,
在该列上最小。也可能没有鞍点。纠正程序中存在的错误,以实现其功能。程序以文件
名sy6_3.c 保存。
#include
#define N 4
#define M 4
main()
{
int i,j,k,flag1,flag2,a[N][M],max,maxj;
for (i=0;i for (j=0;j scanf("%d",&a[i][j]); flag2=0; for (i=0;i { max=a[j][0]; max=a[i][0]; for (j=0;j if (a[i][j]>max)if (a[i][j]>=max) { max=a[i][j]; maxj=j; } for (k=0,flag1=1;k if (max>a[k][maxj]) flag1=0; if (flag1) { printf("\nThe saddle point is:a[%d][%d]=%d\n",i,maxj,max); flag2=1; } } if ( !flag2 ) printf("\nThere is no saddle point in the Matrix\n"); } 2.程序填空题 ( 1)以下程序的功能是:采用二分法在给定的有序数组中查找用户输入的值,并显示查找结果。补充完善程序,以实现其功能。程序以文件名sy6_4.c 保存。 #include "stdio.h" #define N 10 main() { int a[ ]={0,1,2,3,4,5,6,7,8,9},k; int low=0,high=N-1,mid,find=0; printf(" 请输入欲查找的值:\n"); scanf("%d",&k); while (low<=high) { mid=(low+high)/2; if(a[mid]==k) { printf(" 找到位置为:%d\n",mid+1);find=1; } if(a[mid]>k) ___ high=mid-1;_; else ___low=mid+1; _____; } if(!finD.printf("%d未找到\n",k);` } (2)以下程序的功能是:求 3 个字符串(每串不超过善 程序,以实现其功能。程序以文件名 sy6_5.c 保存。 20 个字符)中的最大者。补充完 #include #include void main() { char string[20],str[3][20]; int i; for (i=0;i<3;i++) gets(str[i]); if ( strcmp(str[0], str[1])>0 ) strcpy(string,str[0]); elsestrcpy(string,str[1]); if ( strcmp(str[2], string)>0 ) strcpy(string,str[2]); puts(string); } (3)下列程序的功能为:从键盘输入补充完善程序,以实现其功能。程序以文件名20 个整数,统计非负数个数,并计算非负数之和。 sy6_6.c 保存。 #include main() { inti,a[20],sum=0,count; count=0; for(i=0;i<20;i++ ) scanf("%d",&a[i] ); for(i=0;i<20;i++) { if(a[i]<0) continue; sum+=a[i]; count++; } printf("s=%d\t count=%d\n",sum,count); } 3.编程题 ( 1)从键盘输入10 个数,用选择排序法将其按由大到小的顺序排序;然后在排好序的数列中插入一个数,使数列保持从大到小的顺序。程序以文件名sy6_7.c 存盘。 #define N 10 #include void main() { int a[N+1],i,j,k,t,p; printf(" 请输入 %d 个整数:\n",N); for(i=0;i