版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
习题4
一、单项选择题
1、若有说明inta[3][4];则a数组元素得非法引用就就是[】A、a[0][2*
1]
B、aC1][3]C、a[4-2][0]D,a[0][4]
【答案】D
【解析】数组下标从。开始,a[0][4]得列下标越界。2、在C++语言中,引用
数组元素叱其数组下标得数据类型允许就就是【】A、整型常量
B、整型表达式
C、整型常量或整型表达式
D、任何类型得表达式
【答案】C
3、以下不正确得定义语句就就是【】
A、doublex[5]={2s0,4、0,6、0,8、0,10、0};B、inty[5]=
{0,13,5,7,9};C、charcl[[={'C;2,;3‘;4,;5,);
D、charc2D={'\x10';\xa':\x8,};
【答案】B
【解析】初始值得个数大于数组得大小,系统会出现编译错误。
4、对以下说明语句得正确理解就就是]inta[10]={6,7,8,9,10};A^将
5个初值依次赋给a[l]至a[5]B、将5个初值依次赋给a[0]至a[4]C、
将5个初值依次赋给a[6]至a[10]
D、因为数组长度与初值得个数不相同,所以此语句不正确
【答案】B5、若有说明:inta[][4尸{0,0}测下面不正确得叙述就就是
[]A、数加?得每个元素都可得到初值OH、二维数知a得第一维大小
为1
C、当初值得个数能被第二维得常量表达式得值除尽时,所得商数就就就是第一
维得大小D、只有元素a[O][0]和a[()]⑴可得到初值,其余元素均得不到确定得
初值
【答案】D
【解析】二维数组初始化时,行大小可以省略,被省略得大小根据初值得个数
系统来确定,本题中,有2个初值说明就就是1行4列,所以第一维为1。元素a[0][0]
和赋初值为0,其余元素初值系统默认为0。
6、以下能对二维数如「进行正确得初始化得语句就就是【】
A、intc[3]0={{3},{3},{4}};
B、intc[][3]={{3},{3},{4}};C、intc[3][2]={{3},{3},{4},{5}};
D、intc[][3]={{3},{},{3}};
【答案】B
【解析】二维数组初始化时,行大小可以省略,列大小不可以省略,所以A答案
错误。C答案中初始值行数多于数组大小中得行大小,也就就是错误得。另外初始
化时,初值之间不能有空位置,故D错误。
7、以下不能对二维数组a进行正确初始化得语句就就是【】A、int
a[2][3]={0};B、intaQ[3]={{12},{0}};
C、inta⑵[3]={{1,2},{3,4},{5,6});
D、intaQ[3]={123,4,5,6};
【答案】C8、阅读下面程序,则程序段得功能就就是【】
#include<iostream>
uSingnamespacestd;
intmain()
intcO={23,1,56,234,7,0,34),i,j,t;
for(i=l;i<7;i++)
t=c[i];j=i-1;
\vhile(j>=0&&t>c[j])
{c[j
c[j+l]=t;
}
for(i=0;i<7;i++)
cout<<c
putcharf\n*);
return0;
}
A、对数组元素得升序排列
B、对数组元素得降序排列
C、对数组元素得倒序排列D、对数组元素得随机排列
【答案】B
【解析】每层外层for循环结束会增加对一个元素得排序,确定c[0],c[1]
得大小顺序,如图4-1所示。
c[0]c[l]cI2]c[3]c[4]c⑸c[6]
235612340|34
汉
图4-1第一次排序
第二次将c[2]分别与前2两个元素比较,插入最前面,确定c[0],c[l],c[2]
得大小顺序,如图4—2所示。
c[0|c[l]c[2]c[3]c[4]c[5]c[6]
2315623470,34
1<56
23112347」034
3
23<56
1232312347034
6
t=56
12347.034
图4-2第二次排序
以此类推,外层6次循环后,将无序得数组实现大到小得降序排列。9、下列
选项中错误得说明语句就就是【】
A、rhnra[]={',,'(「,'y*/ct//1//\0'};R、char=
{“toyou\0"};C、chara[|="tOyou\0";D、chara[]='toyou\0’;
【答案】D
1()、下述对C++语言字符数组得描述中错误得就就是【】
A、字符数组得下标从。开始B、字符数组中得字符串可以进行整体输入/
输出
C、可以在赋值语句中通过赋值运算符“二”对字符数组整体赋值
D、字符数组可以存放字符串
【答案】C
11、以下二维数组c得定义形式正确得就就是【】A、intc[3][|
B、f1oatc[3,4]C、doublcc[3][4]D、f10atc(3)(4)
【答案】c
12、已知:intc[3][4];则对数组元素引用正确得就就是【】A、c[l][4]
B、c[l>5][0]
C、c[1+0][0]D、以上表达都错误
【答案】C
13、若有以下语句,则正确得描述就就是【】
charaO="toyou";charb□={'t'o'y'o'u');A^a
数组和b数组得长度相同
B、a数组长度小于b数组长度
C、a数组长度大于b数组长度D、a数组等价于b数组
【答案】C
【解析】a数组中存放得就就是字符串,数组大小为6个字节空间,分别存
放'/o'y'o'u'和'\0‘,b数组得长度为5个字节空间,只存
放‘t'0、y/o'u',5个字符。
二、填空题
1.若有说明:int皿3]={123,4,5,6,7};则a数组第一维得大小就就是
_________0
【答案】3
2、设有数组定义:chararray[]="China则数组array所占得空间
为_______个字节。
【答案】63、假定int类型变量占用两个字节,其有定义:intxE10]=
{0,2,4};,则数组x在内存中所占字节数就就是________o
【答案】20
4、下面程序得功能就就是输出数组s中最大元素得下标,请填空。
#inc1ude<iOStream>
usingnamespacestd;
intrnainQ{intk,p:s口={1,—9,7,2,-10,3};for(p=0,k=p;
P<6;p++)
if(sEp]>s[k])
cout<<k«end1;
return0;}
【答案】k=p;5、下而程序就就是删除输入得字符串中字符'H',请填空。
#include<ioscream>
usingnamespacestd;
intmainQ{chars[80];inti,j;gets(s);
for(i=j=0;s[i]!=''0';i++)if(s[i]!=,H')
{—_}
s[j]=,\0z;puts(s);
return0;}
【答案】s[j++]=s[i];
【解析】此处相当于补充了2条语句,等价于s|j]=s[i];j++;。
6^已知:chara[20]=uabc",b[20]="defghi”;则执行cout<<strlen(str
cpy(a,b));语句后得输出结果为。
【答案】6
7、有如下定义语句:intaa[][3]={l2,23,34,4,5,6,78,89,45};,则45在数组
aa中得行列坐标各为o
【答案】2和2
8、若二维数组a有m列,则计算任一元素a在数组中相对位置得公式
为(假设a[0][0]位于数组得第一个位置上)o
【答案】i*m+j+19、定义如下变量和数组:
intk;inta[3][3]={9,8,7,6,5,4,3,2,1};
则语句for(k=0;k<3;k++)cout<<a[k][k];得输出结果■就就是。
【答案】951
【解析】定义得二维数组可以描述一个方阵:
987
654
321
语句功能就就是实现该方阵主对角线上元素得输出。
10、已知:chara[15],b[15]={"Ilovech己胪};则在程序中能将字符串I
ovcchina赋给数组a得语句就就是0
【答案】srrcpy(a,b);
三、读程序写结果
1、程序代码如下
#include<iostrcam>
USingnamespacestd;
intmain0
{
chararr[2][4];
strcpy(arr[0],"you");
strcpy(arr|l|/'me11);
arr[0]
cout<<arrL0]<<end1;
eturn0;
}
【答案】you&mc
2、程序代码如下:
#include<iostream>
usingnamespacestd;
intmainf)
(
chara口=c''d,d,£,g'\O'};
inti,j;
i=sizeof(a);
j=Strlen(a);
COut<<i«n,n«j<<cnd1;
return0;
}
【答案】9,8
3、程序代码如下:
#include<ioStream>
usingnamespacestd;
intmain。
inti;
inta[3][3]={1,2,3,4,5,6,7,8,9);
f()r(i=0p<3;i++)
cout<<a[2-i][i];
return0;
}
【答案】753
【解析】程序功能就就是实现一个方阵次对角线上元素得输出。
4、程序代码如下:
#include<iostream>
usingnamespacestd;
intmain。
{
chara[30]=nnicetomeetyou!
strcpy(a+strlcn(a)/2,11you');
cout<<a<<cndi;
return0;
}
【答案】nicetoyou
5、程序代码如下:
#include<iostream>
usingnamespacestd;
intmain0
{
intk[30]={12,324,45,6,768,98,21,34,453,456};
intcount=0,i=0;
while(k[i])
(
if(k[i]%2==0||k[i]%5==0)
count++;
i++;
}
cout<<count<<,',"<<i<<end1;
return0;
}
【答案】8,10
6、程序代码如下:
#include<iostream)
usingnamespacesrd;
intmain。
{
chara[3()],b[30];
intk;
gets(a);
gets(b);
k=strcrnp(a,b);
if(k>0)puts(a);
eIseif(k<0)puts(b);
retUrn0;
输入love
China
输出结果就就是?
【答案】love
【解析】strcmp(a,b)函数功能就就是比较a和b字符串得大小,比较就就是
逐个字符得比较,比较方法就就是ASCII码值做减法,k=皿C>,所以结果输出字
符串a。
四、编程题
1、编程实现功能:删去一维数组中所有相同得数,使之只剩一个。数组中得数
已按由小到大得顺序排列,函数返回删除后数组中数据得个数。
例如,若一维数组中得数据就就是:22234456666778
99101010
删除后,数组中得内容应该就就是:2345678910。
思路:fun函数得2个形式参数,分别接收数组名,即数组得首地址,和数组中存
放得原始数据得个数,fun函数对原始数组按题目处理后,在主函数中输出得数组
a就就就是处理后得数组,这里函数之间参数传递属于地址传递。
程序代码如下:
#inc1ude<iostream>
usingnamespacestd;
constN=8();
intfun(intaQ,intn)
{int
fdr(i=l;i<n;i++)
if(a[j-l]!=a[i])a[j++]=a[i];
retUrnj;
}
intmain0
{inra[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;
coUtvv”原始数组中得数据就就是:"<<cndl;
fbr(i=03<19;i++)
cout<<a[i]<<"
n=fun(a,n);
cout«"\n删除后,数组中得数据就就是:“vvendl;
fOr(i=0;i<n;i++)
cout<<a
cout<<endI;
return0;
}
2、编程实现功能:从键盘上输入若干个学生得成绩,当输入负数时表示输入结
束,计算学生得平均成绩,并输出低于平均分得学生成绩。
思路:使用循环输入学生得成绩,注意循环条件有2个,分别就就是输入成绩个
数大于数组得大小和输入成绩为负数时结束,同时记录输入成绩得个数n。结束输
入后,计算平均值和筛选小于60分得成绩并输出。
程序代码如下:
#include<iOstream>
uSingnamespaceStd;
intmain()
{constN=80();
floatx[N],sum=0,avc,a;
intn=0J;
coutuu”榆入学生成绩:“VUendl;
cin>>a;
while(a>=0&&n<N)
{sum+=a;
x[n]=a;
n++;
cin>>a;
|
coutvv”输入得“vvnvv”名学生成绩为:";
for(i=0;i<n;i++)
cout<<x[i]<<nn;
cout<<end1;
ave=sum/n;
coutVV”平均分:"VVave«end1;
cout«"低于平均分得成绩:“;
for(i=0;i<n;i++)
if(x[i]<ave)cout<<x[i
cour<<cndl;
return0;
3、编程实现功能:对从键盘上输入得两个字符串进行比较,然后输出两个字符
串中第一个不相同字符得ASCII码值之差。例如:输入得两个字符串分别为abc
defg和abcccf,则输出为-1°
思路:题目要求实现得功能,相当于字符串处理函数strcmp得功能,即:
图4-3字符串比较示意图
使用循环逐个比较两个字符串得每个字符,当字符出现不相等叱跳出循求不
相同得两个字符得ASCII码值得差输出。
程序代码如下:
#include<iostream>
uSingnameSpacestd;
#include"string、h"
intmain()
{charstr1[80],str2[80],c;inti=0,s;
gets(strl);
gets(str2);
while((str1[ij==str2[i])&&(str1[iJ!='\0*))
i++;
s=strl[i]-str2[i];
Cout«S«endl;
return0;
)
4、编程实现功能:求二维数组周边元素之和。
思路:二维数组中得数据可以看成一个二维矩阵,例如下面得二维数组,输出周
边元素之和为:sum=48,用两个并列得for循环实现求累加和。
1234
2345
3456
4567
程序代码如下:
#inc1ude<ioStream>
usingnamcspaccstd;
#inc1ude"string、h"
ConstM=4;
constN=4;
intmain()
{inta[M][N],i,j,sum=0;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
cin>>aCi][j
for(i=0;i<N;i++)/*求第1行和第4行元素和*/
{Sum+=a[()][i];
sum+=a[M—1][i];
}
for(i=l;i++)/*求第1列和第4列元素和,
但不包括a[0][0],a[3][0],a[0][3],a[3][3]四个角上得元素*/
{s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026福建厦门市翔安区舫山小学非在编合同教师招聘1人备考题库附参考答案详解(能力提升)
- 2026广东深圳市龙岗区坂田街道四季花城第二幼儿园招聘2人备考题库及答案详解1套
- 2026浙江省属国企巨化集团下属矿山浙江巨元矿业有限公司招聘21人备考题库附参考答案详解(达标题)
- 2026湖南省交通科学研究院有限公司招聘37人备考题库附参考答案详解(a卷)
- 2026广东深圳市龙岗区宝龙街道第一幼教集团招聘4人备考题库附答案详解(培优)
- 化纤厂生产安全操作规程
- 某麻纺厂车间管理制度
- 人力资源中介合同
- 2026重庆九洲隆瓴科技有限公司招聘助理项目经理1人备考题库附答案详解(模拟题)
- 2026云南昆明市晋宁区双河乡中心幼儿园编外教师招聘1人备考题库含答案详解(满分必刷)
- 线性代数应用案例分析
- 2026年中国新能源智能汽车产业链出海研究报告-
- 4.2《做自信的人》 课 件2025-2026学年统编版道德与法治七年级下册
- 建筑工地环境保护培训课件
- 2026年制造业重点产业链高质量发展行动方案编制指南
- (二调)武汉市2026届高中毕业生三月调研考试数学试卷(含答案解析)
- 2026年机械工程硕士研究考试试题集
- 浙江省温州市2025-2026年高一上思想政治期末试卷(含答案)
- GB/Z 3836.37-2025爆炸性环境第37部分:由二线本质安全以太网概念(2-WISE)保护的设备
- 【思维模型】81个HR管理模型超全大合集ODTDLD知识图谱
- 重污染天气重点行业移动源应急管理技术指南
评论
0/150
提交评论