大学生C语言程序设计(第四版 谭洪强)实验4 答案

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

实验四参考答案

1、设计程序sy4-1.c,输入10个整数存入一个数组a,输入x,使数组a中各元素值都乘以x后输出。

算法分析:

用循环输入10个数,分别赋给a[0],a[1],------a[9],然后再输入x的值,重新给每个元素a[0],a[1],------,a[9]赋值为他们乘以x的值;最后结果输出。

参考答案:

#include

int main()

{ int a[10], x , i ;

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

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

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

printf("输出数组中原来的值:");

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

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

printf("\n请给x输入值:");

scanf("%d",&x);

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

a[i]=a[i]*x;

printf("数组每个元素乘以x后的值为:");

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

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

printf("\n");

return 0;

}

运行结果:

2、设计程序sy4-2.c,对输入的10个整数按倒序存放后输出结果。

算法分析:

用“对折交换”的方法:首先输入10个数给每个元素;设置两个下标变量,i=0(第一个元素下标),j=9(最后一个元素下标);交换a[0],a[9],然后i++,j--,再交换a[1],a[8]的值,直到i>=j,结束;最后输出交换后数组的值。

参考答案:

#include

int main()

{ int a[10]={1,2,3,4,5,6,7,8,9,10}, i, j , t ;

printf("输出交换前数组的值:");

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

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

for(i=0, j=9 ; i

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

printf("\n输出交换后数组的值:");

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

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

printf("\n");

return 0;

}

运行结果:

3、设计程序sy4-3.c,输入10个整数,找出其中的最大数及其所在的下标。

算法分析:

首先:把下标为0的数看成最大数,即max=a[0],k=0; 然后:逐一遍历a[0]后面的每个元素,如果当前元素值比max大,就改写max,并记录其下标。

最后:输出结果。

参考答案:

#include

int main()

{ int a[10]={12,21,35,10,54,31,24,58,43,11},i,k,max; //max存放最大值,k记最大值的下标printf("输出数组的每个元素:");

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

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

max=a[0]; k=0; //首先把a[0]看成最大值,k记它的下标

for(i=1;i<10;i++)//逐一遍历其后的每个元素

if(max

{ max=a[i] ; k=i; } //就改写最大值和最大值的下标

printf("\n最大值=%d,最大值的下标=%d\n",max, k);

return 0;

}

运行结果:

4、设计程序sy4-4.c,在一个5个整数的升序排列的序列中,任意输入一个数插入其中,要求保持原来的排列顺序。输出结果。

算法分析:(方法一)

分析:假如int a[6]初值如下表,需插入的数据x=10;插入算法如下:

下标0 1 2 3 4 5 元素的值 5 9 15 20 24

1)首先应遍历数组找到插入的位置p=2;2)然后应从数组最后一个元素到下标为p的所有元素都向后移动一个位置;3)在下标为p的位置写入x的值。

参考答案:

# include

void main()

{

int a[10],i,x,p;

printf("Input 5 numbers:"); /*5个数按由小到大的顺序输入*/

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

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

printf("Input insert number:");

scanf("%d",&x);

for(p=5,i=0;i<5;i++) //p的初值为5,找查找的位置

if(x

{ p=i;

break;

}

for(i=4;i>=p;i--) //从最后一个元素到找到的插入位置移动数据,空出位置a[i+1]=a[i];

a[p]=x; //写入待插入的数据

printf("The after insert score:\n");

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

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

printf("\n");

}

运行结果:

相关文档
最新文档