C实验报告6参考答案

更新时间:2023-04-05 21:50:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《高级语言程序设计》实验报告

班级: 学号: 姓名: 成绩:

实验6 数组程序设计

一、实验目的

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

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

3. 掌握与数组有关的算法。

二、实验内容

1.改错题

(1)在的错误,以实现其功能。程序以文件名sy6_1、c 保存。

#include

void main() {int n=10,i,sum=0; int a[n]; int a[10];

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

{

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

sum=sum+a[i];

}

printf("sum=%d\n",sum);

}

(2)下列程序的功能为:将字符串b 连接到字符串a 。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_2、c 保存。

#include

void main( ) { char a[]="wel",b[]="come"; char a[20]="wel",b[]="come";

int i,n=0;

while(!a[n]) n++; while(a[n] != '\0') n++;

for(i=0;b[i]!='\0';i++)

a[n+i]=b[i];

a[n+i]=’\0’;

printf("%s\n",a);

}

(3)下列程序的功能为:

找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在

该列上最小。也可能没有鞍点。纠正程序中存在的错误,以实现其功能。程序以文件名sy6_3、c 保存。

#include

#define N 4

#define M 4

main()

{ Array 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) 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个字符串(每串不超过20个字符)中的最大者。补充完善程序,以实现其功能。程序以文件名sy6_5、c保存。

#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]);

else strcpy(string,str[1]);

if ( strcmp(string,str[2])<0 ) strcpy(string,str[2]);

puts(string);

}

(3)下列程序的功能为:从键盘输入20个整数,统计非负数个数,并计算非负数之与。补充完善程序,以实现其功能。程序以文件名sy6_6、c保存。

#include

main()

{ int i,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);然后在排好序的数列中插入一个数,使数列保持从大到小的顺序。程序以文件名sy6_7、c存盘。

#define N 11

#include

void main()

{ int a[N],i,j,k,t,p;

printf("请输入%d 个整数:\n",N);

for(i=0;i

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

for(i=0;i

{ k=i;

for(j=i+1;j

if(a[k]>a[j])

k=j;

if(k!=i)

{ t=a[k]; a[k]=a[i]; a[i]=t;}

}

printf("\n 排序后:\n");

for(i=0;i

printf("%5d",a[i]);

printf("\n 请输入插入整数: ");

scanf("%d",&p);

j=9;

while(j>=0 && a[j]>p) //找插入位置

{a[j+1]=a[j];j--;}

a[j+1]=p; //插入

printf("\n 插入后:\n");

for(i=0;i

printf("%5d",a[i]);

printf("\n");

}

(2)从键盘输入两个矩阵A 、B 的值,求C =A +B 。程序以文件名sy6_8、c 存盘。

#include

void main()

{

int a[2][3],b[2][3],c[2][3],i,j;

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

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

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

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

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

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

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

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

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

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

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

printf("%3d",c[i][j]);

printf("\n");

}

}

(3)从键盘输入一个字符串,删除其中某个字符。如输入字符串“abcdefededff ”,删除其中的字符e,则输出的字符串为“abcdfddff ”。程序以文件名sy6_9、c 存盘。

//方法一:

#include

#include

void main()

{ ???? ??=61312753A ???? ??=161361084B

int i,j;

char s[80],c;

printf("输入一行字符: ");

gets(s);

printf("输入要删除字符: ");

scanf("%c",&c);

for(i=0,j=0;s[i]!='\0';i++)

if (s[i]!=c)

s[j++]=s[i];

s[j]='\0';

puts(s);

}

//方法二:

#include

#include

void main()

{char line[80] ;

char ch;

int i,j;

int len;

printf("输入一行字符: ");

gets(line) ;

printf("输入要删除字符: ");

ch=getchar();

i=0;

while(line[i]!='\0' )

{while( line[i]!='\0' && line[i]!=ch) i++;

len=strlen(line);

for(j=i;j

line[j]=line[j+1];

line[j]='\0';

}

puts(line);

}

本文来源:https://www.bwwdw.com/article/qyfl.html

Top