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

2020-04-14 17:13

实验四 参考答案

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(\ printf(\输出数组中原来的值:\ for(i=0;i<10;i++) printf(\ printf(\请给x输入值:\ scanf(\ for(i=0;i<10;i++) a[i]=a[i]*x; printf(\数组每个元素乘以x后的值为:\ for(i=0;i<10;i++) printf(\ printf(\ 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(\

for(i=0, j=9 ; i

运行结果:

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(\ max=a[0]; k=0; //首先把a[0]看成最大值,k记它的下标 for(i=1;i<10;i++) //逐一遍历其后的每个元素 if(max

运行结果:

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

分析: 假如int a[6]初值如下表,需插入的数据x=10;插入算法如下: 下标 元素的值 0 5 1 9 2 15 3 20 4 24 5 1)首先应遍历数组找到插入的位置p=2;2)然后应从数组最后一个元素到下标为p的所有元素都向后移动一个位置;3)在下标为p的位置写入x的值。 参考答案:

# include void main() { int a[10],i,x,p; printf(\个数按由小到大的顺序输入*/ for(i=0;i<5;i++) scanf(\ printf(\ scanf(\ for(p=5,i=0;i<5;i++) //p的初值为5,找查找的位置 if(x=p;i--) //从最后一个元素到找到的插入位置移动数据,空出位置 a[i+1]=a[i]; a[p]=x; //写入待插入的数据 printf(\ for(i=0;i<6;i++) printf(\ printf(\}

运行结果:

算法分析:(方法二)

分析: 假如int a[6]初值如下表,需插入的数据x=10;插入算法如下: 下标 元素的值 0 5 1 9 2 15 3 20 4 24 5 1)从最后一个元素往前找插入位置( for(i=4;i>=0;i--) ),若元素值大于x( if(a[i]>x) ),则x应该在该元素之前插入,该元素应该后移一个位置(a[i+1]=a[i]; ), 若元素值小于x则找到插入位置在当前元素之后,退出查找(else break; )。2)在退出循环后的i+1位置插入x( a[i+1]=x; )。 参考答案:

# include void main()

{ int a[10],i,x,p; printf(\个数按由小到大的顺序输入*/ for(i=0;i<5;i++) scanf(\ printf(\ scanf(\ for(i=4;i>=0;i--) //从最后一个元素开始往前找插入位置 if(a[i]>x) //若元素值大于x a[i+1]=a[i]; //则该元素往后移 else //否则

break; //退出循环,找到插入位置在i+1位置 a[i+1]=x; //写入待插入的数据 printf(\ for(i=0;i<6;i++) printf(\ printf(\}

运行结果:

5、设计程序sy4-5.c,用选择法对10个整数实现递增排序。 算法分析:

外循环:10个数,需要9趟循环,第i趟从未排序数列(a[i],a[i+1],---a[9])里找出最小数和a[i]交换。内循环:(第i趟里找最小数的方法)1)首先把第i个数看成最小数记下它的下标(k=i);2)然后从下标为j=i+1的元素开始一直到j=9,逐一去比较,如果当前的元素a[j]比最小数a[k]还小,就用它的下标去改写k;3)如果k的值发生了变化,就交换最小值a[k]和未排序元素里的第一个元素a[i]。 参考答案:

# include void main()

{ int a[10],k,i,j,t;

printf(\ for(i=0;i<10;i++) scanf(\

for(i=0;i<9;i++) //选择排序法 { k=i;

for(j=i+1;j<10;j++) if(a[j]

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

printf(\排序后的数为:\for(i=0;i<10;i++)

printf(\ \ printf(\}

运行结果:

6、设计程序sy4-6.c,计算 scroe 数组中 10 个人的平均成绩 aver,将低于 aver的成绩放在 below 数组中。输出aver和below数组中的数据。 算法分析:

首先用循环求出10同学的成绩总和,成绩总和除以总人数得到平均值aver,


大学生C语言程序设计(第四版 谭洪强)实验4 答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:八上悦读联播翻译

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: