C++复习题面向过程部分Word格式.docx
- 文档编号:18143188
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:17
- 大小:22.97KB
C++复习题面向过程部分Word格式.docx
《C++复习题面向过程部分Word格式.docx》由会员分享,可在线阅读,更多相关《C++复习题面向过程部分Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
11.下列给字符数组赋初值时,正确的是(A)。
A.chars1[]=”abcdef”;
B.chars2[4]=”abcd”;
C.chars3[2][3]={“abc”,”xyz”};
D.chars4[4][]={‘a’,’x’,’s’,’t’};
12.设有定义“staticintdata[5][6];
”,设该数组在静态存储区中的起始地址为十进制的100,若每个int型数占4个字节,则数组元素data[2][3]的地址为(D)。
A.115B.124C.130D.160
13.假定变量m定义为“intm=7;
”,则定义变量p的正确语句为(B)。
A.intp=&
m;
B.int*p=&
C.int&
p=*m;
D.int*p=m;
14.假定k是一个double类型的变量,则关于变量p的正确定义语句为(D)。
A.doublep=&
k;
C.double&
p=*k;
D.char*p=”Thankyou!
”;
15.变量s的定义为“char*s=”Helloworld!
”,要使变量p指向s所指向的同一个字符串,则应选取(A)。
A.char*p=s;
B.char*p=&
s;
C.char*p;
p=*s;
D.char*p;
p=&
16.关于void指针,下列说法正确的是(C)。
A.void指针就是未指向任何数据的指针
B.void指针就是已定义而未初始化的指针
C.指向任何类型数据的指针可直接赋值给一个void指针
D.void指针值可直接赋给一个非void指针
17.假定一条定义语句为“inta[10],x,*pa=a;
”,若要把数组a中下标为3的元素值赋给x,则不正确的语句为(D)。
A.x=pa[3];
B.x=*(a+3);
C.x=a[3];
D.x=*pa+3;
18.假定有定义“intb[10];
int*pb;
”,则不正确的赋值语句为(D)。
A.pb=b;
B.pb=&
b[0];
C.*pb=newint;
D.pb=b[5];
19.假定p是具有double类型的指针变量,则表达式++p使p的值(以字节为单位)增加(C)。
A.1B.4C.sizeof(double)D.sizeof(p)
20.假定p指向的字符串为”string”,则cout<
<
p+3的输出结果为(C)。
A.stringB.ringC.ingD.i
21.假定p指向的字符串为”string”,若要输出这个字符串的地址值,则使用(D)。
A.cout<
*p;
B.cout<
p;
C.cout<
&
D.cout<
(void*)p;
22.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为(A)。
A.int*p=newint[30];
B.int*p=newint(30);
C.int*p=new[30];
D.*p=newint[30];
23.假定p是具有int**类型的指针变量,则给p赋值的正确语句为(B)。
A.p=newint;
B.p=newint*;
C.p=newint**;
D.p=newint[10];
24.要使语句“p=newint[10][20];
”能够正常执行,p应被事先定义为(D)。
A.int*p;
B.int**p;
C.int*p[20];
D.int(*p)[20];
25.假定有“structBOOK{chartitle[40];
floatprice;
};
BOOK*book=newBOOK;
”,则正确的语句为(A)。
A.strcpy(book->
title,”WangTao”);
B.strcpy(book.title,”WangTao”);
C.strcpy(*book.title,”WangTao”);
D.strcpy((*book)->
26.假定有“structBOOK{chartitle[40];
BOOK*book;
”,则不正确的语句为(A)。
A.BOOK*x=newbook;
B.BOOKx={"
C++Programming"
27.0};
C.BOOK*x=newBOOK;
D.BOOK*x=book;
27.假定有“structBOOK{chartitle[40];
}book;
”,则正确的语句为(B)。
A.BOOK&
x=&
book;
B.BOOK&
x=book;
C.BOOK&
x=newBOOK;
D.BOOK&
x=BOOK;
28.下列对引用的陈述中不正确的是(C)。
A.每一个引用都是其所引用变量的别名,因此必须初始化
B.形式上针对引用的操作实际上作用于它所引用的变量
C.一旦定义了引用,一切针对其所引用变量的操作只能通过该引用间接进行
D.不需要单独为引用分配存储空间
29.假定变量a和pa定义为“doublea[10],*pa=a;
”,要将12.35赋值给a中的下标为5的元素,不正确的语句是(D)。
A.pa[5]=12.35;
B.a[5]=12.35;
C.*(pa+5)=12.35;
D.*(a[0]+5)=12.35;
30.假定变量b和pb定义为“intb[10],*pb=b;
”,要将24赋值给b[1]元素中,不正确的语句是(C)。
A.*(pb+1)=24;
B.*(b+1)=24;
C.*++b=24;
D.*++pb=24;
31.假定指针变量p定义为“int*p=newint(100);
”,要释放p所指向的动态内存,应使用语句(A)。
A.deletep;
B.delete*p;
C.delete&
D.delete[]p;
32.假定指针变量p定义为“int*p=newint[30];
”,要释放p所指向的动态内存,应使用语句(D)。
33.假定变量x定义为“intx=5;
”,要使rx成为x的引用(别名),rx应定义为(D)。
A.intrx=x;
B.intrx=&
x;
C.int*rx=&
D.int&
rx=x;
34.下面的这个循环的循环次数是:
for(inti=0,j=10;
i=j=10;
i++,j--).(A)
A无限次B.语法错误,不能执行C.10D.1
35.下列do-while循环的循环次数是:
(B)
for(inti=0,x=0;
!
x&
i<
=5;
i++)
A.5B.6C.1D无限次
36.C++程序的执行总是从哪里开始的?
(A)
A.main函数B..第一行C..头文件D.函数注释
二、填空题
1.含随机函数的表达式rand()%20的值在___0__至___19___区间内。
2.在程序中执行到__return______语句时,将结束所在函数的执行过程,返回到调用该函数的位置。
3.在程序执行完____main____函数后,将结束整个程序的执行过程,返回到操作系统下的C++集成开发窗口。
4.当在程序中执行到____continue____语句时,将结束所在循环语句中循环体的一次执行。
12.元素类型为int的数组a[10]共占用___40_____字节的存储空间。
5.假设double类型的数据占4字节,元素类型为double的二维数组a[4][6]共占用_____192___字节的存储空间。
6.假设char类型的数据占1字节,元素类型为char的二维数组a[10][30]共占用___300_____字节的存储空间。
7.存储字符’a’和字符串”a”分别需要占用___1_____和_____2___个字节。
8.空串的长度为___0_____,存储它需要占用____1____个字节。
9.字符串”\’a\’xy=4\n”的长度为____8____。
10.字符串”a:
\\xxk\\数据”的长度为____11____。
11.用于存储一个长度为n的字符串的字符数组的长度至少为____n+1____。
12.若a是一个字符数组,则从键盘上向该数组输入一个字符串的表达式为____cin>
>
a______。
13.若a是一个字符数组,则向屏幕输出a中所存字符串的表达式为___cout<
a_______。
14.一个二维字符数组a[10][20]能够存储___10_____个字符串,每个字符串的长度至多为_____19___。
15.对一个二维字符数组a进行初始化的数据为{”123”,”456”,”789”},则a[1]元素对应的字符串为_____”456”_____。
16.strlen(”apple”)的值为____5____,strcmp(”a”,”A”)的值为___1_____。
17.若需要把一个字符串”aaa”赋值到字符数组a中,则需要执行___strcpy_____函数的调用来实现。
18.假定对二维数组a[3][4]进行初始化的数据为{{3,5,6},{2,8},{7}},则a[1][1]和a[2][3]分别被初始化为___8____和______0__。
19.在C++语言中,一个函数由函数头和____函数体______组成。
20.重载一个函数的条件是:
该函数必须在参数的个数或参数的____类型______上与其它同名函数有所不同。
22.如果一个函数直接或间接地调用自身,这样的调用称为____递归________调用。
23.假定p所指变量对象的值为25,p+1所指对象的值为42,则*++p的值为_____42___。
24.假定p所指变量的值为25,p+1所指变量的值为42,则执行(*p)++运算后,p所指对象的值为____26____。
25.假定p所指变量的值为25,p+1所指变量的值为42,则执行*p++运算后,p所指变量的值为____42____。
26.假定对数组a[]进行初始化的数据为{2,7,9,6,5,7,10},则a[2]和a[5]分别被初始化为_____9___和_____7___。
27.假定一个变量为int*类型,则指向该变量的指针类型为____int**__。
28.假定p是一个指向整数变量的指针,则用____*p____表示该整数变量,用_____&
p___表示指针变量p的地址。
三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。
1.采用指针访问方式从键盘给数组a[N]输入数据,然后对元素值重新按逆序存放并输出。
#include<
iostream.h>
constintN=8;
voidmain()
{
inta[N],*p,*q;
for(p=a;
p<
a+N;
p++)___
(1)___;
p=a;
q=a+N-1;
while(p<
q){
intr=*p;
*p=*q;
*q=r;
___
(2)___;
___(3)___;
}
p<
p++)
cout<
*p<
'
'
;
endl;
(1)cin>
*p
(2)p++(或++p)(3)q--(或--q)
2.从键盘上输入一个正整数,然后把它转换成的二进制数的每一位存放到一维数组中,最后输出该二进制数。
注意二进制数的存放是按照从低位到高位的次序进行的。
intx;
"
输入一个整数:
cin>
inta[20],k=0,r;
do{
r=x%2;
a[k++]=r;
x=___
(1)___;
}while(___
(2)___);
for(--k;
k>
=0;
k--)___(3)___;
(1)x/2
(2)x!
=0(3)cout<
a[k]
3.对数组a[n]按升序进行的选择排序算法
voidSelectSort(inta[],___
(1)___)
inti,j,k;
for(i=1;
n;
i++){//进行n-1次选择和交换
k=i-1;
for(j=i;
j<
j++)
if(a[j]<
a[k])___
(2)___;
intx=a[i-1];
a[i-1]=a[k];
(1)intn
(2)k=j(3)a[k]=x
4.对数组a[n]按升序进行的插入排序算法
voidInsertSort(___
(1)___,intn)
inti,j,x;
i++){//进行n-1次循环
x=a[i];
for(j=i-1;
j>
j--)//为x顺序向前寻找合适的插入位置
if(x<
a[j])___
(2)___;
else___(3)___;
a[j+1]=x;
(1)inta[](或int*a)
(2)a[j+1]=a[j](3)break
5.对按从小到大排列的有序数组a[n]进行二分查找x的算法,若查找成功返回该元素下标,否则返回-1。
intBinarySearch(inta[],intx)
intlow=0,high=N-1;
//定义并初始化区间下界和上界变量
intmid;
//定义保存中点元素下标的变量
while(low<
=high){
mid=___
(1)___;
if(x==a[mid])___
(2)___;
elseif(x<
a[mid])high=mid-1;
else___(3)___;
return-1;
(1)(low+high)/2
(2)returnmid(3)low=mid+1
6.用插入排序方法对table指针数组中size个指针所指向的字符串进行按升序排序的算法。
voidsort(char*table[],intsize){
for(inti=1,___
(1)___;
i++){
char*p=table[i];
for(intj=i-1;
j>
=0;
j--)
if(strcmp(p,table[j])<
0)___
(2)___;
elsebreak;
table[j+1]=___(3)___;
}
(1)cin>
7.
输入某一年的年份和月份,计算该月的天数
#include<
voidmain()
{intyear,month,day;
Inputyearandmonth:
year>
month;
switch(_____1_____)
{case1:
case3:
case5:
case7:
case8:
case10:
case12:
_____2____;
break;
case4:
case6:
case9:
case11:
_____3_____;
case2:
if(______________4______________)
day=29;
else
day=28;
break;
_______5______:
cout<
Inputdataerror!
day=0;
if(day!
=0)
Thedayof"
year<
'
month<
is"
day<
四、指出程序或函数的功能
1.voidf2(doublea[],intn)
inti;
doublesum=0;
for(i=0;
i++)sum+=a[i];
sum/=n;
if(a[i]>
=sum)cout<
a[i]<
’’;
功能:
显示输出数组a[n]中大于等于平均值的所有元素值。
2.voidf4(chara[M][N])
intc1,c2,c3;
c1=c2=c3=0;
for(inti=0;
M;
if(strlen(a[i])<
5)c1++;
elseif(strlen(a[i])>
=5&
strlen(a[i])<
15)c2++;
elsec3++;
c1<
’’<
c2<
c3<
对于二维字符数组a中保存的M个字符串,分别统计并输出其长度小于5、大于等于5且小于15、大于等于15的字符串个数。
3.voidfun3(inta[][N],intm,intn,int&
row,int&
col)
intx=a[0][0];
row=col=0;
for(intj=0;
if(a[i][j]>
x){
x=a[i][j];
row=i;
col=j;
}
从一个二维整型数组中查找具有最大值的元素,由引用参数row和col带回该元素的行号和列号。
5.char*f8(char*str1,constchar*str2)
inti=0,j=0;
while(str1[i])i++;
while(str2[j])str1[i++]=str2[j++];
str1[i]='
\0'
returnstr1;
实现strcat函数的功能,把str2所指字符串连接到str1所指字符串的后面,并返回str1指针。
6.intf8(constchar*str1,constchar*str2)
inti=0;
while(str1[i]&
str2[i])
if(str1[i]==str2[i])i++;
elseif(str1[i]>
str2[i])return1;
elsereturn-1;
if(str1[i]==str2[i])return0;
elseif(str1[i]>
elsereturn-1;
实现strcmp函数的功能,比较两个字符串str1和str2的大小,若str1较大则返回1,若str2较大则返回-1,若两者相等则返回0。
7.#include<
voidf(int&
a,int&
b)
{
intt=a;
a=b;
b=t;
}
voidmain(void)
intx=10,y=15;
f(x,y);
x<
’\t’<
y<
’\n’;
8.#include<
{inti=10;
switch(i)
{case9:
i++;
++i;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 复习题 面向 过程 部分