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

上传人:b****4 文档编号:3583969 上传时间:2022-11-24 格式:DOCX 页数:15 大小:55.29KB
下载 相关 举报
第4章数组c习题答案解析.docx_第1页
第1页 / 共15页
第4章数组c习题答案解析.docx_第2页
第2页 / 共15页
第4章数组c习题答案解析.docx_第3页
第3页 / 共15页
第4章数组c习题答案解析.docx_第4页
第4页 / 共15页
第4章数组c习题答案解析.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

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

《第4章数组c习题答案解析.docx》由会员分享,可在线阅读,更多相关《第4章数组c习题答案解析.docx(15页珍藏版)》请在冰豆网上搜索。

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

第第4章数组章数组c习题答案解析习题答案解析习题习题4一、单项选择题1.若有说明inta34;则a数组元素的非法引用是【】A.a02*1B.a13C.a4-20D.a04【答案】D【解析】数组下标从0开始,a04的列下标越界。

2.在C+语言中,引用数组元素时,其数组下标的数据类型允许是【】A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式【答案】C3.以下不正确的定义语句是【】A.doublex5=,;B.inty5=0,1,3,5,7,9;C.charc1=1,2,3,4,5;D.charc2=x10,xa,x8;【答案】B【解析】初始值的个数大于数组的大小,系统会出现编译错误。

4.对以下说明语句的正确理解是【】inta10=6,7,8,9,10;A.将5个初值依次赋给a1至a5B.将5个初值依次赋给a0至a4C.将5个初值依次赋给a6至a10D.因为数组长度与初值的个数不相同,所以此语句不正确【答案】B5.若有说明:

inta4=0,0;则下面不正确的叙述是【】A.数组a的每个元素都可得到初值0B.二维数组a的第一维大小为1C.当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小D.只有元素a00和a01可得到初值,其余元素均得不到确定的初值【答案】D【解析】二维数组初始化时,行大小可以省略,被省略的大小根据初值的个数系统来确定,本题中,有2个初值说明是1行4列,所以第一维为1。

元素a00和a01赋初值为0,其余元素初值系统默认为0。

6.以下能对二维数组c进行正确的初始化的语句是【】A.intc3=3,3,4;B.intc3=3,3,4;C.intc32=3,3,4,5;D.intc3=3,3;【答案】B【解析】二维数组初始化时,行大小可以省略,列大小不可以省略,所以A答案错误。

C答案中初始值行数多于数组大小中的行大小,也是错误的。

另外初始化时,初值之间不能有空位置,故D错误。

7.以下不能对二维数组a进行正确初始化的语句是【】A.inta23=0;B.inta3=1,2,0;C.inta23=1,2,3,4,5,6;D.inta3=1,2,3,4,5,6;【答案】C8.阅读下面程序,则程序段的功能是【】#includeusingnamespacestd;intmain()intc=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);return0;A.对数组元素的升序排列B.对数组元素的降序排列C.对数组元素的倒序排列D.对数组元素的随机排列【答案】B【解析】每层外层for循环结束会增加对一个元素的排序,确定c0,c1的大小顺序,如图4-1所示。

图4-1第一次排序第二次将c2分别与前2两个元素比较,插入最前面,确定c0,c1,c2的大小顺序,如图4-2所示。

图4-2第二次排序以此类推,外层6次循环后,将无序的数组实现大到小的降序排列。

9.下列选项中错误的说明语句是【】A.chara=t,o,y,o,u,0;B.chara=toyou0;C.chara=toyou0;D.chara=toyou0;【答案】D10.下述对C+语言字符数组的描述中错误的是【】A.字符数组的下标从0开始B.字符数组中的字符串可以进行整体输入/输出C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值D.字符数组可以存放字符串【答案】C11.以下二维数组c的定义形式正确的是【】A.intc3B.floatc3,4C.doublec34D.floatc(3)(4)【答案】C12.已知:

intc34;则对数组元素引用正确的是【】A.c14B.c0C.c1+00D.以上表达都错误【答案】C13.若有以下语句,则正确的描述是【】chara=toyou;charb=t,o,y,o,u;A.a数组和b数组的长度相同B.a数组长度小于b数组长度C.a数组长度大于b数组长度D.a数组等价于b数组【答案】C【解析】a数组中存放的是字符串,数组大小为6个字节空间,分别存放t,o,y,o,u和0,b数组的长度为5个字节空间,只存放t,o,y,o,u,5个字符。

二、填空题1.若有说明:

inta3=1,2,3,4,5,6,7;则a数组第一维的大小是_。

【答案】32.设有数组定义:

chararray=China;则数组array所占的空间为_个字节。

【答案】63.假定int类型变量占用两个字节,其有定义:

intx10=0,2,4;,则数组x在内存中所占字节数是_。

【答案】204.下面程序的功能是输出数组s中最大元素的下标,请填空。

#includeusingnamespacestd;intmain()intk,p,s=1,-9,7,2,-10,3;for(p=0,k=p;psk)_coutkendl;return0;【答案】k=p;5.下面程序是删除输入的字符串中字符H,请填空。

#includeusingnamespacestd;intmain()chars80;inti,j;gets(s);for(i=j=0;si!

=0;i+)if(si!

=H)_sj=0;puts(s);return0;【答案】sj+=si;【解析】此处相当于补充了2条语句,等价于sj=si;j+;。

6.已知:

chara20=abc,b20=defghi;则执行coutstrlen(strcpy(a,b);语句后的输出结果为_。

【答案】67.有如下定义语句:

intaa3=12,23,34,4,5,6,78,89,45;,则45在数组aa中的行列坐标各为_。

【答案】2和28.若二维数组a有m列,则计算任一元素aij在数组中相对位置的公式为(假设a00位于数组的第一个位置上)_。

【答案】i*m+j+19.定义如下变量和数组:

intk;inta33=9,8,7,6,5,4,3,2,1;则语句for(k=0;k3;k+)coutakk;的输出结果是_。

【答案】951【解析】定义的二维数组可以描述一个方阵:

987654321语句功能是实现该方阵主对角线上元素的输出。

10.已知:

chara15,b15=Ilovechina;则在程序中能将字符串Ilovechina赋给数组a的语句是_。

【答案】strcpy(a,b);三、读程序写结果1.程序代码如下#includeusingnamespacestd;intmain()chararr24;strcpy(arr0,you);strcpy(arr1,me);arr03=&;coutarr0endl;return0;【答案】you&me2.程序代码如下:

#includeusingnamespacestd;intmain()chara=a,b,c,d,e,f,g,h,0;inti,j;i=sizeof(a);j=strlen(a);couti,jendl;return0;【答案】9,83.程序代码如下:

#includeusingnamespacestd;intmain()inti;inta33=1,2,3,4,5,6,7,8,9;for(i=0;i3;i+)couta2-ii;return0;【答案】753【解析】程序功能是实现一个方阵次对角线上元素的输出。

4.程序代码如下:

#includeusingnamespacestd;intmain()chara30=nicetomeetyou!

;strcpy(a+strlen(a)/2,you);coutaendl;return0;【答案】nicetoyou5.程序代码如下:

#includeusingnamespacestd;intmain()intk30=12,324,45,6,768,98,21,34,453,456;intcount=0,i=0;while(ki)if(ki%2=0|ki%5=0)count+;i+;coutcount,iendl;return0;【答案】8,106.程序代码如下:

#includeusingnamespacestd;intmain()chara30,b30;intk;gets(a);gets(b);k=strcmp(a,b);if(k0)puts(a);elseif(k,所以结果输出字符串a。

四、编程题1编程实现功能:

删去一维数组中所有相同的数,使之只剩一个。

数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

2223445666677899101010删除后,数组中的内容应该是:

2345678910。

思路:

fun函数的2个形式参数,分别接收数组名,即数组的首地址,和数组中存放的原始数据的个数,fun函数对原始数组按题目处理后,在主函数中输出的数组a就是处理后的数组,这里函数之间参数传递属于地址传递。

程序代码如下:

#includeusingnamespacestd;constN=80;intfun(inta,intn)inti,j=1;for(i=1;in;i+)if(aj-1!

=ai)aj+=ai;returnj;intmain()intaN=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,n);coutn删除后,数组中的数据是:

endl;for(i=0;in;i+)coutai;coutendl;return0;2编程实现功能:

从键盘上输入若干个学生的成绩,当输入负数时表示输入结束,计算学生的平均成绩,并输出低于平均分的学生成绩。

思路:

使用循环输入学生的成绩,注意循环条件有2个,分别是输入成绩个数大于数组的大小和输入成绩为负数时结束,同时记录输入成绩的个数n。

结束输入后,计算平均值和筛选小于60分的成绩并输出。

程序代码如下:

#includeusingnamespacestd;intmain()constN=800;floatxN,sum=0,ave,a;intn=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;return0;3编程实现功能:

对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码值之差。

例如:

输入的两个字符串分别为abcdefg和abceef,则输出为-1。

思路:

题目要求实现的功能,相当于字符串处理函数strcmp的功能,即:

图4-3字符串比较示意图使用循环逐个比较两个字符串的每个字符,当字符出现不相等时,跳出循求不相同的两个字符的ASCII码值的差输出。

程序代码如下:

#includeusingnamespacestd;#includeintmain()charstr180,str280,c;inti=0,s;gets(str1);gets(str2);while(str1i=str2i)&(str1i!

=0)i+;s=str1i-str2i;coutsendl;return0;4编程实现功能:

求二维数组周边元素之和。

思路:

二维数组中的数据可以看成一个二维矩阵,例如下面的二维数组,输出周边元素之和为:

sum=48,用两个并列的for循环实现求累加和。

1234234534564567程序代码如下:

#includeusingnamespacestd;#includeconstM=4;constN=4;intmain()intaMN,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+=ai0;sum+=aiN-1;cout二维数组周边元素之和为:

sumendl;return0;5.编程求出3阶方阵的两条对角线上元素之和。

程序代码如下:

#includeusingnamespacestd;intmain()intarr33=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;return0;6编程序求Fibonacci数列的前10项,并按每行3个数的格式输出该数列。

Fibonacci数列的定义为:

程序代码如下:

#include#includeusingnamespacestd;intmain()inti;longf10=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;return0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

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

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