第5章习题解答
更新时间:2023-10-16 08:47:01 阅读量: 综合文库 文档下载
第5章 数组
【习题5-1】现有一实型一维数组A[12],其各元素值在内存中排列的顺序为:1.0,15.5,9.5,-23,8.4,66.5,7.1,22.0,54.5,-34,11.3,32.5,请按下列要求编写程序求答案。
(1)数组中元素值最小的数组元素。 (2)数组中元素值最大的数组元素。
(3)数组中某数组元素值等于另外两个数组元素值之和的等式。 (4)数组中某数组元素值等于另外两个数组元素值之差的等式。 程序如下:
/*c5_1.c*/ #include
double a[12]={1.0,15.5,9.5,-23,8.4,66.5,7.1,22.0,54.5,-34,11.3,32.5}; int i,j,k; double max,min; min=a[0]; for(i=0;i<12;i++) if(min>a[i]) min=a[i]; printf(\ max=a[0]; for(i=0;i<12;i++) if(max
if(i==j||j==k||k==i) continue; if(a[i]+a[j]==a[k])
printf(\ }
for(i=0;i<12;i++) for(j=0;j<12;j++) for(k=0;k<12;k++) {
if(i==j||j==k||k==i) continue; if(a[i]-a[j]==a[k])
printf(\ }
}
【习题5-2】现有一实型二维数组A[4][3],其各元素值在内存中排列的顺序为: 4.0,28.0,15.5,?9.5,?23.0,8.0,56.0,2.0,28.0,7.0,6.2,5.0 请按下列要求写出各题的答案。
(1)数组中元素值最小的数组元素。 (2)数组中元素值最大的数组元素。
(3)数组中某数组元素值等于另外两个数组元素值之积的等式。 (4)数组中某数组元素值等于另外两个数组元素值之商的等式。 答案:
(1)?23.0 (2)56.0 (3)(略) (4)(略)
【习题5-3】完成下列各数组的数组说明语句。
(1)定义一个有100个数组元素的整型一维数组r。 (2)定义一个有100行100列的实型二维数组s。
(3)定义一个整型三维数组t,第一维长度为3,第二维长度为4,第三维长度为5。 (4)定义一个实型四维数组q,第一维长度为6,第二维长度为5,第三维长度为4,第四维长度为3。
答案:
(1)int r[100]; (2)float s[100][100]; (3)int t[3][4][5];
(4)float q[6][5][4][3];
【习题5-4】说明下面各数组定义的含义,并指出对各数组元素所赋的值。 (1)float a[10]={3.,4.5,6.0,8.4,-32.8,3.2,56.0,4.5,2.3,1.5}; (2)int b[10]={3,5,0,12,34,7,8,9,41,88}; (3)float c[2][4]={1.,2.,3.,4.,5.,6.,7.,8.}; (4)int d[3][3]={{1,2,3},{4,5,6},{7,8,9}}; (5)int e[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 答案: (1)(略) (2)(略) (3)(略) (4)(略) (5)(略)
【习题5-5】按下列要求完成对各数组的初始化数组语句。
(1)实型一维数组A[12],其各元素值在内存中排列的顺序为:
1.0,15.5,9.5,-23.0,8.4,66.5,7.1,22.0,54.5,-34.0,11.3,32.0 (2)整型二维数组A[3][3],其各元素值在内存中排列的顺序为:
1,2,3,4,5,6,7,8,9
(3)实型三维数组A[2][3][2],其各元素值在内存中排列的顺序为:
1.0,15.5,9.5,-23,8.4,66.5,7.1,22.0,54.5,-34,11.3,32.0 答案:
float a[12]={1.0,15.5,9.5,-23.0,8.4,66.5,7.1,22.0,54.5,-34.0,11.3,32.0}; int a[3][3]={1,2,3,4,5,6,7,8,9};
float a[2][3][2]={1.0,15.5,9.5,-23,8.4,66.5,7.1,22.0,54.5,-34,11.3,32.0}; 【习题5-6】用数组定义语句和scanf语句完成5.4题中各小题相应的功能。 程序如下: /*c5_6.c*/
(略)
【习题5-7】有一整型二维数组a[10][10], 按下列要求写出下列各题C语言程序段。 (1)按行输出所有的数组元素。 (2)按列输出所有的数组元素。 (3)输出主对角线上的所有元素。 (4)输出副对角线上的所有元素。
(5)输出上三角阵(包含主对角线元素)的所有元素。 (6)输出上三角阵(包含副对角线元素)的所有元素。 (7)输出下三角阵(包含主对角线元素)的所有元素。 (8)输出下三角阵(包含副对角线元素)的所有元素。 程序如下: /*c5_7.c*/ #include
int a[10][10]; int i,j,k; for(i=0;i<10;i++) for(j=0;j<10;j++) a[i][j]=i*10+j; printf(\ for(i=0;i<10;i++) {
for(j=0;j<10;j++) printf(\ printf(\ }
printf(\ printf(\ fori=0;i<10;i++) {
for(j=0;j<10;j++)
printf(\ printf(\ }
printf(\ printf(\ for(i=0;i<10;i++) {
for(j=0;j<10;j++) if(i==j)
printf(\ else
printf(\ printf(\ }
printf(\ printf(\ for(i=0;i<10;i++) {
for(j=0;j<10;j++) if(i+j==10-1)
printf(\ else
printf(\ printf(\ }
printf(\ printf(\ for(i=0;i<10;i++) {
for(j=0;j<10;j++) if(i<=j)
printf(\ else
printf(\ printf(\ }
printf(\ printf(\ for(i=0;i<10;i++) {
for(j=0;j<10;j++) if(j<10-i)
printf(\ else
printf(\ printf(\ }
printf(\ printf(\ for(i=0;i<10;i++) {
for(j=0;j<10;j++) if(i>=j)
printf(\ else
printf(\ printf(\ }
printf(\ printf(\ for(i=0;i<10;i++) {
for(j=0;j<10;j++) if(j>=9-i)
printf(\ else
printf(\ printf(\ }
printf(\}
【习题5-8】阅读、分析下列程序,并写出运行相应程序后的输出结果。
(1)#include \ void main()
{ static int a[10]={1,1,1,1,1,1,1,1,1,1}; int i,j;
for(i=0;i<10;i++) for(j=0;j
printf(\ }
(2)#include \ void main()
{ static int a[200]; int i,j,n; for(i=0;i<200;i++) a[i]=0; n=100;
for(i=0;i (3)#include \ void main() { int a,b=0; static int c[10]={1,2,3,4,5,6,7,8,9,0}; for(a=0;a<10;++a) if((c[a]%2)==0) b+=c[a]; printf(\ } (4)#include \ void main() { int a,b=0; static int c[10]={1,2,3,4,5,6,7,8,9,0}; for(a=0;a<10;++a) if((a%2)==0) b+=c[a]; printf(\ } (5)#include \ main() { int a,b=0; int c[10]={1,2,3,4,5,6,7,8,9,0}; for(a=0;a<10;++a) b+=c[a]; printf(\ } (6)#include \ int c[10]={1,2,3,4,5,6,7,8,9,0}; void main() { int a,b=0; for( a=0;a<10;++a) if((c[a]%2)==1) b+=c[a]; printf(\ } (1) 结果: 1 2 4 8 1632 64 128 256 512 (2) 结果:199 (3) 结果:20 (4) 结果:25 (5) 结果:45 (6) 结果:25 【习题5-9】编写一个程序,完成5.1题的要求。 程序如下: /*c5_9.c*/ #include double a[12]={1.0,15.5,9.5,-23,8.4,66.5,7.1,22.0,54.5,-34,11.3,32.5}; int i,j,k; double max,min; min=a[0]; for(i=0;i<12;i++) if(min>a[i]) min=a[i]; printf(\ max=a[0]; for(i=0;i<12;i++) if(max if(i==j||j==k||k==i) continue; if(a[i]+a[j]==a[k]) printf(\ } for(i=0;i<12;i++) for(j=0;j<12;j++) for(k=0;k<12;k++) { if(i==j||j==k||k==i) continue; if(a[i]-a[j]==a[k]) printf(\ } } 【习题5-10】编写一个程序,完成5.2题的要求。 程序如下: /*c5_10.c*/ (略) 【习题5-11】对给定的整型一维数组a[100]赋值,要求给奇数下标值的元素赋负值,偶数下标值的元素赋正值。 程序如下: /*c5_11.c*/ #include int a[100]; int i,j,k; for(i=0;i<100;i++) if(i%2==1) a[i]=-1; else a[i]=1; } 【习题5-12】给整型二维数组b[3][4]输入12个数据,计算并输出数组中所有正数之和、所有负数之和。 程序如下: /*c5_12a.c*/ #include { static int b[3][4]; int i,j,sum1=0,sum2=0; printf(\ for(i=0;i<3;i++) for(j=0;j<4;j++) scanf(\ for(i=0;i<3;i++) for(j=0;j<4;j++) {if(b[i][j]>0) sum1+=b[i][j]; if(b[i][j]<0) sum2+=b[i][j]; } printf(\ /*c5-12b.c*/ #include { int x[3][4],i,j,a=0,b=0; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf(\ for(i=0;i<3;i++) for(j=0;j<4;j++) if(x[i][j]>0) a+=x[i][j]; else b+=x[i][j]; printf(\} 【习题5-13】对稀疏数组a[20](所谓稀疏数组,即有若干数组元素值为0的数组),编写一个程序,将所有非零元素值按紧密排列形式转移到数组的前端。(要求:程序中不再开辟其它的单元作为数组元素值的缓存单元) 程序如下: /*c5_13.c*/ #include int a[20]={0,0,1,0,2,0,0,0,3,4,0,0,0,0,0,5,0,0,6,0}; int i,j,k; for(i=0;i<20;i++) printf(\ printf(\ for(i=1;i<20;i++) { if(a[i]==0) continue; for(k=i-1;k>=0;k--) if(a[k]!=0) break; if(k==i-1) continue; a[k+1]=a[i]; a[i]=0; } for(i=0;i<20;i++) printf(\ printf(\} 【习题5-14】用选择法编写一个程序,使存储在整型数组a[100]中的各元素值按升序排列存放。(要求:程序中至多允许使用一个缓存单元) 程序如下: /*c5_14a.c*/ #include { static int a[100]; int i,j,temp; printf(\ for(i=0;i<100;i++) scanf(\ for(i=0;i<99;i++) for(j=i+1;j<100;j++) if(a[i]>a[j]) { temp=a[j]; a[j]=a[i]; a[i]=temp; } for(i=0;i<100;i++) printf(\ printf(\ /*c5.14b.c*/ void main() { int a[100],i,j,min,t; for(i=0;i<100;i++) scanf(\ for(i=0;i<99;i++) { min=i; for(j=i+1;j<100;j++) if(a[j] t=a[i]; a[i]=a[min]; a[min]=t; } printf(\ for(i=0;i<100;i++) printf(\} 【习题5-15】试编写一个程序,把下面的矩阵a转置成矩阵b的形式。(用两种算法完成) ?125?a???348????679?? 程序如下: /*c5_15.c*/ #include int a[3][3]={1,2,5,3,4,8,6,7,9}; int i,j,k; for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(\ printf(\ } printf(\ /* method 1 for(i=0;i<3;i++) { k=a[0][i]; a[0][i]=a[2][i]; a[2][i]=k; } for(i=0;i<3;i++) { k=a[i][0]; a[i][0]=a[i][2]; a[i][2]=k; } */ /* method 2 */ ?976?b???843????521?? for(i=0;i<3;i++) { k=a[0][i]; a[0][i]=a[2][2-i]; a[2][2-i]=k; } k=a[1][0]; a[1][0]=a[1][2]; a[1][2]=k; for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(\ printf(\ } printf(\} 【习题5-16】设二维数组b[5][4]中有鞍点,即b[i][j]元素值在第i行中最小,且在第j列中最大,试编写一程序找出所有的鞍点,并输出其下标值。也可能没有。 程序如下: /*c5_16a.c*/ #include {int b[5][4],i,j,k,l,min,x,y; for(i=0;i<5;i++) for(j=0;j<4;j++) scanf(\ for(i=0;i<5;i++) { min=b[i][0]; y=0; for(j=1;j<4;j++) if(min>b[i][j]) {min=b[i][j];x=j;} for(k=0;k<5;k++) if(min printf(\ else printf(\ } } /*c5.16b.c*/ void main() { int b[5][4],i,j,min,l,k,n=0; printf(\ for(i=0;i<5;i++) for(j=0;j<4;j++) scanf(\ printf(\ for(i=0;i<5;i++) { for(j=0;j<4;j++) printf(\ printf(\ } for(i=0;i<5;i++) { min=b[i][0];n=0; for(j=1;j<4;j++) if(b[i][j] } for(k=0;k<5;k++) if(min printf(\ else printf(\ } } 【习题5-17】按如下图案打印杨辉三角形的前10行。杨辉三角形是由二项式定理系数表组成的图型,其特点是两个腰上的数都为1,其他位置上的每一个数是它上一行相邻的两个整数之和。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 . . . . . . . . . . . . . 程序如下: /*c5_17.c*/ #include int a[10][10]={0}; int i,j,k; for(i=0;i<10;i++) a[i][0]=1; for(i=1;i<10;i++) for(j=1;j<=i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<10;i++) { for(j=0;j<10-i;j++) printf(\ for(j=0;j<=i;j++) printf(\ printf(\ } } 【习题5-18】从键盘输入一个数,然后在一个整型一维数组a[20]中,用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印“No found”。 程序如下: /*c5_18a.c*/ #include { int a[20],i,n=0,m=20,a; for(i=0;i<20;i++) scanf(\ scanf(\ while(n<=m) { i=(n+m)/2; if(a[i]==a) { printf(\ break; } if(a[i]a) m=i-1; } if(a[i]!=a) printf(\} /*c5.18b.c*/ #include { static int a[20]={1,2,6,24,120,720,5040,40320,4,8, 16,32,64,128,256,512,1024,2048,4096,8192}; int i,n=0,m=19,l=0,x; printf(\ scanf(\ do { i=(n+m)/2; if(a[i]==x) { l=1; printf(\ break; } if(a[i] }while(n!=m&&a[i]!=x); if(l==0) printf(\ 【习题5-19】编写一个程序,求一个二维矩阵的转置矩阵,即将原矩阵行列互换的结果。 程序如下: /*c5_19.c*/ #include int a[N][N]; int i,j,k; for(i=0;i for(j=0;j printf(\ printf(\ } printf(\ for(i=0;i k=a[i][j]; a[i][j]=a[j][i]; a[j][i]=k; } for(i=0;i for(j=0;j printf(\ printf(\ } printf(\ } 【习题5-20】说明下面各数组定义的含义,并指出对各数组元素所赋的值。 (1)static char flag[4]={'T', 'R', 'U', 'E'}; (2)static char flag[ ]={\ (3)static char a[3][7]={\程序如下: /*c5_20.c*/ (略) 【习题5-21】输入一串字符,分别统计其中数字0,1,2,?,9和各字母出现的次数,
正在阅读:
第5章习题解答10-16
建模 3~801-28
老师关于端午节的讲话稿09-17
基于RDA5820的芯片功能扩展报告10-25
2011级西方语言学流派教学大纲 (2)06-12
如果我是一名老师作文500字07-10
四川麻将血战到底技巧总结10-07
C语言课程设计万年历打印02-27
关于赞美党的诗歌大全03-21
旋挖钻孔灌注桩施工方案01-19
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 习题
- 解答
- 大学生上网情况的调查报告
- “农村淘宝”发展战略浅析
- 牛津英语7A Unit6易错题整理(含答案和解析)
- 数据库系统概论模拟试卷(三)及参考答案
- 2015年广西高校资助政策网络知识竞赛题库(5)
- 基于WEB的仓库物流管理系统的设计与实现毕业论文
- 《认证机构公平竞争规范 - 认证价格自律规定》版本差异对照表 - 图文
- 氯盐引起的钢筋锈蚀及耐久性设计考虑
- 北京大学GIS历年考题讲解
- 无铅纯锡电镀晶须产生的原因和控制对策概要
- 艺术设计系学生干部培训方案
- 中国历史朝代
- 移动员工核心网工作总结及计划
- 二年级同步阅读资料
- 财务管理学习题
- 00晋江市安海镇晋发机械厂 - 图文
- 经管2015届毕业论文(设计)答辩工作安排
- 医疗器械产品技术要求(检查手套)
- 《林黛玉进贾府》
- 问卷编制3