实验6数组程序设计答案

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

相关文档
最新文档