ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:55.29KB ,
资源ID:3583969      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3583969.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第4章数组c习题答案解析.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第4章数组c习题答案解析.docx

1、第第 4 章数组章数组 c 习题答案解析习题答案解析习题习题 4一、单项选择题1.若有说明 int a34;则 a 数组元素的非法引用是【】A.a02*1 B.a13 C.a4-20 D.a04【答案】D【解析】数组下标从 0 开始,a04的列下标越界。2.在 C+语言中,引用数组元素时,其数组下标的数据类型允许是【】A.整型常量 B.整型表达式 C.整型常量或整型表达式 D.任何类型的表达式【答案】C3.以下不正确的定义语句是【】A.double x5=,;B.int y5=0,1,3,5,7,9;C.char c1=1,2,3,4,5;D.char c2=x10,xa,x8;【答案】B【解

2、析】初始值的个数大于数组的大小,系统会出现编译错误。4.对以下说明语句的正确理解是【】int a10=6,7,8,9,10;A.将 5 个初值依次赋给 a1至 a5 B.将 5个初值依次赋给 a0至 a4 C.将 5个初值依次赋给 a6至 a10 D.因为数组长度与初值的个数不相同,所以此语句不正确【答案】B5.若有说明:int a 4=0,0;则下面不正确的叙述是【】A.数组 a 的每个元素都可得到初值 0 B.二维数组 a 的第一维大小为 1 C.当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小 D.只有元素 a00和 a01可得到初值,其余元素均得不到确定的初值【答

3、案】D【解析】二维数组初始化时,行大小可以省略,被省略的大小根据初值的个数系统来确定,本题中,有 2 个初值说明是 1 行 4列,所以第一维为 1。元素 a00和a01赋初值为 0,其余元素初值系统默认为 0。6.以下能对二维数组 c 进行正确的初始化的语句是【】A.int c3=3,3,4;B.int c3=3,3,4;C.int c32=3,3,4,5;D.int c3=3,3;【答案】B【解析】二维数组初始化时,行大小可以省略,列大小不可以省略,所以 A 答案错误。C 答案中初始值行数多于数组大小中的行大小,也是错误的。另外初始化时,初值之间不能有空位置,故 D 错误。7.以下不能对二维

4、数组 a进行正确初始化的语句是【】A.int a23=0;B.int a3=1,2,0;C.int a23=1,2,3,4,5,6;D.int a3=1,2,3,4,5,6;【答案】C8.阅读下面程序,则程序段的功能是【】#includeusing namespace std;int main()int c=23,1,56,234,7,0,34,i,j,t;for(i=1;i=0&tcj)cj+1=cj;j-;cj+1=t;for(i=0;i7;i+)coutcit;putchar(n);return 0;A.对数组元素的升序排列 B.对数组元素的降序排列 C.对数组元素的倒序排列 D.对数组

5、元素的随机排列【答案】B【解析】每层外层 for 循环结束会增加对一个元素的排序,确定 c0,c1的大小顺序,如图 4-1 所示。图 4-1 第一次排序第二次将 c2分别与前 2两个元素比较,插入最前面,确定 c0,c1,c2 的大小顺序,如图 4-2 所示。图 4-2 第二次排序以此类推,外层 6 次循环后,将无序的数组实现大到小的降序排列。9.下列选项中错误的说明语句是【】A.char a=t,o,y,o,u,0;B.char a=toyou0;C.char a=toyou0;D.char a=toyou0;【答案】D10.下述对 C+语言字符数组的描述中错误的是【】A.字符数组的下标从

6、0 开始 B.字符数组中的字符串可以进行整体输入/输出 C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D.字符数组可以存放字符串【答案】C11.以下二维数组 c 的定义形式正确的是【】A.int c3 B.float c3,4 C.double c34 D.float c(3)(4)【答案】C12.已知:int c34;则对数组元素引用正确的是【】A.c14 B.c0 C.c1+00 D.以上表达都错误【答案】C13.若有以下语句,则正确的描述是【】char a=toyou;char b=t,o,y,o,u;A.a 数组和 b 数组的长度相同 B.a数组长度小于 b 数组长度 C

7、.a数组长度大于 b 数组长度 D.a 数组等价于 b 数组【答案】C【解析】a 数组中存放的是字符串,数组大小为 6 个字节空间,分别存放t,o,y,o,u和0,b 数组的长度为 5 个字节空间,只存放t,o,y,o,u,5个字符。二、填空题1.若有说明:int a3=1,2,3,4,5,6,7;则 a 数组第一维的大小是_。【答案】32.设有数组定义:char array=China;则数组 array所占的空间为_个字节。【答案】63.假定 int 类型变量占用两个字节,其有定义:int x10=0,2,4;,则数组 x 在内存中所占字节数是_。【答案】204.下面程序的功能是输出数组

8、s 中最大元素的下标,请填空。#include using namespace std;int main()int k,p,s=1,-9,7,2,-10,3;for(p=0,k=p;psk)_ cout kendl;return 0;【答案】k=p;5.下面程序是删除输入的字符串中字符H,请填空。#include using namespace std;int main()char s80;int i,j;gets(s);for(i=j=0;si!=0;i+)if(si!=H)_ sj=0;puts(s);return 0;【答案】sj+=si;【解析】此处相当于补充了 2条语句,等价于 sj

9、=si;j+;。6.已知:char a20=abc,b20=defghi;则执行 coutstrlen(strcpy(a,b);语句后的输出结果为_。【答案】67.有如下定义语句:int aa3=12,23,34,4,5,6,78,89,45;,则 45 在数组 aa 中的行列坐标各为 _。【答案】2 和 28.若二维数组 a 有 m 列,则计算任一元素 aij在数组中相对位置的公式为(假设a00位于数组的第一个位置上)_。【答案】i*m+j+19.定义如下变量和数组:int k;int a33=9,8,7,6,5,4,3,2,1;则语句 for(k=0;k3;k+)coutakk;的输出结果

10、是_。【答案】951【解析】定义的二维数组可以描述一个方阵:9 8 76 5 43 2 1语句功能是实现该方阵主对角线上元素的输出。10.已知:char a15,b15=I love china;则在程序中能将字符串 I love china赋给数组 a 的语句是_。【答案】strcpy(a,b);三、读程序写结果1.程序代码如下#includeusing namespace std;int main()char arr24;strcpy(arr0,you);strcpy(arr1,me);arr03=&;coutarr0endl;return 0;【答案】you&me2.程序代码如下:#in

11、cludeusing namespace std;int main()char a=a,b,c,d,e,f,g,h,0;int i,j;i=sizeof(a);j=strlen(a);cout i,jendl;return 0;【答案】9,83.程序代码如下:#includeusing namespace std;int main()int i;int a33=1,2,3,4,5,6,7,8,9;for(i=0;i3;i+)couta2-ii;return 0;【答案】753【解析】程序功能是实现一个方阵次对角线上元素的输出。4.程序代码如下:#includeusing namespace s

12、td;int main()char a30=nice to meet you!;strcpy(a+strlen(a)/2,you);coutaendl;return 0;【答案】nice to you5.程序代码如下:#includeusing namespace std;int main()int k30=12,324,45,6,768,98,21,34,453,456;int count=0,i=0;while(ki)if(ki%2=0|ki%5=0)count+;i+;cout count,iendl;return 0;【答案】8,106.程序代码如下:#includeusing nam

13、espace std;int main()char a30,b30;int k;gets(a);gets(b);k=strcmp(a,b);if(k0)puts(a);else if(k,所以结果输出字符串 a。四、编程题1编程实现功能:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,若一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10 删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10。思路:fun 函数的 2 个形式参数,分别接收数组名,即数组的首地址,和数组中

14、存放的原始数据的个数,fun 函数对原始数组按题目处理后,在主函数中输出的数组 a 就是处理后的数组,这里函数之间参数传递属于地址传递。程序代码如下:#includeusing namespace std;const N=80;int fun(int a,int n)int i,j=1;for(i=1;in;i+)if(aj-1!=ai)aj+=ai;return j;int main()int aN=2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,i,n=19;cout原始数组中的数据是:endl;for(i=0;i19;i+)coutai;n=fun(a,

15、n);coutn删除后,数组中的数据是:endl;for(i=0;in;i+)coutai;coutendl;return 0;2编程实现功能:从键盘上输入若干个学生的成绩,当输入负数时表示输入结束,计算学生的平均成绩,并输出低于平均分的学生成绩。思路:使用循环输入学生的成绩,注意循环条件有 2个,分别是输入成绩个数大于数组的大小和输入成绩为负数时结束,同时记录输入成绩的个数 n。结束输入后,计算平均值和筛选小于 60 分的成绩并输出。程序代码如下:#include using namespace std;int main()const N=800;float xN,sum=0,ave,a;i

16、nt n=0,i;cout输入学生成绩:a;while(a=0&na;cout输入的n名学生成绩为:;for(i=0;in;i+)coutxi;coutendl;ave=sum/n;cout平均分:aveendl;cout低于平均分的成绩:;for(i=0;in;i+)if(xiave)coutxi;coutendl;return 0;3编程实现功能:对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的 ASCII 码值之差。例如:输入的两个字符串分别为 abcdefg 和abceef,则输出为-1。思路:题目要求实现的功能,相当于字符串处理函数 strcmp的功能,即:

17、图 4-3 字符串比较示意图使用循环逐个比较两个字符串的每个字符,当字符出现不相等时,跳出循求不相同的两个字符的 ASCII 码值的差输出。程序代码如下:#include using namespace std;#include int main()char str180,str280,c;int i=0,s;gets(str1);gets(str2);while(str1i=str2i)&(str1i!=0)i+;s=str1i-str2i;coutsendl;return 0;4编程实现功能:求二维数组周边元素之和。思路:二维数组中的数据可以看成一个二维矩阵,例如下面的二维数组,输出周边元

18、素之和为:sum=48,用两个并列的 for循环实现求累加和。1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 程序代码如下:#include using namespace std;#include const M=4;const N=4;int main()int aMN,i,j,sum=0;for(i=0;iM;i+)for(j=0;jaij;for(i=0;iN;i+)/*求第 1 行和第 4行元素和*/sum+=a0i;sum+=aM-1i;for(i=1;iM-1;i+)/*求第 1 列和第 4列元素和,但不包括 a00,a30,a03,a33四个角上的元素*/sum

19、+=ai0;sum+=aiN-1;cout二维数组周边元素之和为:sumendl;return 0;5.编程求出 3 阶方阵的两条对角线上元素之和。程序代码如下:#includeusing namespace std;int main()int arr33=0,2,2,3,4,4,5,6,6,a=0,b=0,i,j;for(i=0;i3;i+)for(j=0;j3;j+)/*求主对角线上元素和*/if(i=j)a=a+arrij;for(i=0;i=0;j-)if(i+j=2)b=b+arrij;cout主对角线元素和为:aendl;cout次对角线元素和为:bendl;return 0;6编程序求 Fibonacci 数列的前 10项,并按每行 3 个数的格式输出该数列。Fibonacci 数列的定义为:程序代码如下:#include#includeusing namespace std;int main()int i;long f10=1,1;for(i=2;i30;i+)fi=fi-2+fi-1;for(i=0;i10;i+)if(i%3=0)coutn;coutsetw(12)fi;coutendl;return 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1