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

上传人:鲁** 文档编号:468731265 上传时间:2023-08-15 格式:DOC 页数:7 大小:67KB
返回 下载 相关 举报
大学生C语言程序设计(第四版谭洪强)实验5答案_第1页
第1页 / 共7页
大学生C语言程序设计(第四版谭洪强)实验5答案_第2页
第2页 / 共7页
大学生C语言程序设计(第四版谭洪强)实验5答案_第3页
第3页 / 共7页
大学生C语言程序设计(第四版谭洪强)实验5答案_第4页
第4页 / 共7页
大学生C语言程序设计(第四版谭洪强)实验5答案_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《大学生C语言程序设计(第四版谭洪强)实验5答案》由会员分享,可在线阅读,更多相关《大学生C语言程序设计(第四版谭洪强)实验5答案(7页珍藏版)》请在金锄头文库上搜索。

1、实验四 参考答案(参考答案)(1) 设计程序sy5-1.c,从键盘上输入一个3行3列矩阵各个元素的值,输出其主对角线元素和反向对角线元素之和。算法分析: 对角线上的元素,1维和2维下标相同,反对角线元素,如果行下标为i,列下标就为2-i;参考答案:#includeint main()int a33=1,2,3,4,5,6,7,8,9;int i,j,sum=0;for(i=0;i3;i+)sum=sum+aii+ai2-i; /aii当前行的主对角线元素 /ai2-i当前行的反对角线元素printf(矩阵的正、反对角线元素之和为:%dn,sum);return 0;运行结果:(2) 设计程序s

2、y5-2.c,找出一个34的矩阵中的最小值及其位置。算法分析: 首先把二维数组中的第一个数即a00看成最小值,然后逐行逐列的去遍历每个元素,逐一判断每一个元素是否比最小值还好小,如果是,就改写最小值,并记录他的下标。参考答案:#include#includeint main()int a34=10,21,41,5,12,15,46,35,40,21,26,30;int i,j,row,colum,min;printf(数组a:n);for(i=0;i3;i+)for(j=0;j4;j+) printf(%5d,aij);printf(n);min=a00;row=0;colum=0; /首先把

3、第一个数a00看成最小数for(i=0;i3;i+) /双重循环逐一遍历每个元素aijfor(j=0;jaij) /如果当前值aij比最小值还要小min=aij;row=i;colum=j; /用aij改写最小值,并记下他们的下标printf(矩阵中最小元素是:%d,行下标是:%d,列下标是%dn,min,row,colum);return 0;运行结果:(3) 设计程序sy5-3.c,定义一个33的二维数组,通过随机函数自动赋值。然后输入一个整数n,使数组左下三角(含对角线元素)元素中的值乘以n 。例如:若n的值为3,a 数组中的值为 | 1 9 7 |则程序运行后a数组中的值应为 | 3

4、9 7 | | 2 3 8 | | 6 9 8 | 4 5 6 | | 12 15 18 | 算法分析: 主要理解到对角线即以下元素包含哪些元素,即他们的下标变化。对每一行i来说,对角线以下的元素,他们的列下标是0,1,2,-,i;所以用外循环i遍历行,内循环j(从0到i),逐一遍历每一个aij,并给aij赋值为他的n倍。最后输出矩阵。参考答案:#include#includeint main()int a33;int i,j,n;printf(原来a的值:);for(i=0;i3;i+) /生成数组元素,并按矩阵形式输出 for(j=0;j3;j+)aij=rand()%20; /rand(

5、)参看教材385页 /rand()%20 产生一个20以内的整数 printf(%5d,aij); printf(n);printf(请输入n:);scanf(%d,&n);for(i=0;i3;i+) /i表示每一行for(j=0;j=i;j+) /j从0到i,即每行的对角线及前面的数的列下标aij=aij*n;printf(n数组左下三角元素乘以n后值为:);for(i=0;i3;i+)for(j=0;j=i;j+)printf(%5d,aij); printf(n);return 0;运行结果:(4) 设计程序sy5-4.c,输入一个整数m(2m9,在m行m列的二维数组中存放如下所示规律

6、的数据。例如,若输入2,则输出:,若输入4,则输出: 算法分析:分析:m的值是不定的,所以可以申明一个二维数组int a1010,当m=2时,只用前两行两列,当m=4时,就只用前四行四列;元素aij的值和他的行列下标可找到规律如下:每行的第0列元素ai0=i+1;除第0列元素其它元素aij=ai0*(j+1)。参考答案:#includevoid main()int a1010,i,j,m;printf(Input m:);scanf(%d,&m);for(i=0;im;i+) /*初始化第一列元素*/ai0=i+1; for(i=0;im;i+) /*处理其余元素:为第0列元素*(j+1)*/

7、for(j=1;jm;j+) aij=ai0*(j+1);for(i=0;im;i+) /*输出矩阵*/ for(j=0;jm;j+) printf(%5d,aij); printf(n);运行结果:(5) 设计程序sy5-5.c,将33矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。例如,有下列矩阵 1 2 3 4 5 6 7 8 9 计算结果为 31 2 64 5 9 7 8 算法分析: 二维数组的移动,类似于一维数组的元素移动;只是在一维数组移动的外面加上外循环。即:对每一行元素(i行),首先把最后一列即ai2用中间变量t保存;然后就从第1列到第0列,每个元素向后移动一列(

8、aij=aij-1);最后再给ai0赋值为t(以前的ai2)。参考答案:#include#includeint main()int a33;int i,j,t;printf(原来数组a的值:n);for(i=0;i3;i+) /生成数组元素,并按矩阵形式输出 for(j=0;j3;j+)aij=rand()%20; /rand()参看教材385页 /rand()%20 产生一个20以内的整数 printf(%5d,aij); printf(n);for(i=0;i0;j-) /从最后一列到第1列逐次向后移动一列 aij=aij-1; ai0=t; /给第一列赋值t,即以前行的最后一列print

9、f(矩阵变换后:n);for(i=0;i3;i+) for(j=0;j3;j+) printf(%5d,aij);printf(n);return 0;运行结果:5、设计程序sy4-5.c,从键盘输入m的值(2=m=9),并用双重循环给数组赋值,在m行m列的二维数组中存放如下所示的数据,并将结果输出在显示上。例如:输入3 输入5则输出: 则输出: 1 2 3 1 2 3 4 52 4 6 2 4 6 8 10 3 6 9 3 6 9 12 15 4 8 12 16 20 5 10 15 20 25算法分析:分析:m的值是不定的,所以可以申明一个二维数组int a1010,当m=3时,只用前三行

10、三列,当m=5时,就只用前五行五列;元素aij的值和他的行列下标可找到规律如下:每行的第0列元素ai0=i+1;除第0列元素其它元素aij=ai0*(j+1)。参考答案:#includevoid main()int a1010,i,j,m;printf(Input m:);scanf(%d,&m);for(i=0;im;i+) /*初始化第一列元素*/ai0=i+1; for(i=0;im;i+) /*处理其余元素:为第0列元素*(j+1)*/for(j=1;jm;j+) aij=ai0*(j+1);for(i=0;im;i+) /*输出矩阵*/ for(j=0;jm;j+) printf(%5d,aij); printf(n);运行结果:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号