C++基础习题.docx
《C++基础习题.docx》由会员分享,可在线阅读,更多相关《C++基础习题.docx(14页珍藏版)》请在冰豆网上搜索。
![C++基础习题.docx](https://file1.bdocx.com/fileroot1/2022-12/30/02fef83e-6344-4f9c-9aa6-5ce6114fe9fb/02fef83e-6344-4f9c-9aa6-5ce6114fe9fb1.gif)
C++基础习题
东南大学考试卷(A卷)
课程名称
程序设计与算法语言Ⅰ
考试学期
12-13-2
得分
适用专业
自动化
考试形式
闭卷
考试时间长度
120分钟
自觉遵守考场纪律如考试作弊此答卷无效
一、选择:
共30分,每题2分
1、下列标识符哪个是不合法的___________
A.sinB.5arryC._nameD.Example2_1
2、以下数据类型中,表达单字节整数的是:
A.charB.longlongC.shortD.float
3、下列有关枚举类型的说明哪个是错误的_________________
A.枚举常量(或称枚举成员)是以标识符形式表示的整型量;
B.默认状态下,这个整数就是所列举元素的序号,序号从0开始;
C.类型定义时可以为部分或全部枚举常量指定整数值,其余的枚举常量仍按默认方式取值。
D.各枚举常量的值可以重复,但各枚举常量标识符必须不同。
4、C++中表示字符A,作为字面常量,的正确表示方法是___________。
A.'\65'B."A"C.65D.'A'
5、下面有关函数调用的说法哪一个是错误的_________________
A.实参与形参的数目要求必须是相同的;
B.实参与形参的对应关系取决于位置而不是名字;
C.实参与对应的形参应类型匹配,即实参的类型可以转化为形参类型;
D.C++参数传递两种方式:
传值与引用。
6、判断下列哪些正确的常量_______________(多选),
7、判断下列哪些是变量申明_______________(多选)
A."China"
B.constintn=10;
C.intm=5;
D.'a'
E.charch='a'
F.intarray[5]={1,2,3,4,5};
G.chars[]="Hello";
8、无论循环条件是否成了,循环至少执行一次的是。
A.for语句B.while语句C.do...while语句D.以上都不是
9、要判断char型变量m是否是数字字符,可以使用下列表达式。
A.0<=m&&m<=9B.'0'<=m&&m<='9'
C."0"<=m&&m<="9"D.'0'<=m<='Z'
10、从语法上,下列语句正确的是______。
A.intA='A';int&B=A;
B.intA=65;int*p=A;
C.intA=088;int*p=A;
D.intA=0x65;int*p=*A;
11、floatm=3/2+;运行后m的值为:
____________
A.3B.2C.D.1
12、以下两个函数原型,不可同时存在的是:
_____________
A.floatAdd(floata,floatb);
B.floatAdd(floata,intb);
C.doubleAdd(floata,floatb);
D.floatAdd(floata,floatb);
E.floatAdd(floata,floatb=0);
F.floatAdd(floata,intb,intc);
G.doubleAdd(doublea,doubleb);
H.floatAdd(floata,floatb);
13、以下对字符串的初始化中,无法得到一个符合C++规范的字符串的是:
_____________
14、A.charstr[1024]={'A','B','C'};
15、B.charstr[3]={'A','B','C'};
16、C.charstr[1024]="ABC";
17、D.charstr[10]="ABC";
18、
19、从语法上,下列语句正确的是______。
A.intA[1024];int&B=A;
B.intA[1024];int*p=A;
C.intA[1024];int**p=A;
D.intA[1024];intp[1024]=A;
二、填空题(每空1分,共5分)
1.程序构造的基本方法是和。
2.计算机的存储器有内存和外存之分。
程序员编写的程序以文件形式保存在磁盘上,目的是。
执行程序时,程序代码必须放在内存中,原因是。
3.CPU中的Cache主要解决计算机CPU和主存之间问题。
第二部分C++程序设计
三、单选题(每题1分,共20分)
1.C++中的实数可以写成不同表示形式,下列表示形式中不正确的是。
A.B.C.D..5432e2
2.下面选项中能用作用户自定义的标识符是。
A.whatB.-varC.3XyzD.Float
4.设有如下定义:
inta=1,b=2,c=3,d=4,m=2,n=2;则执行表达式:
(m=a>b)&&(n=c>d)后,m,n的值为。
A.0,0B.0,2C.1,0D.2,2
5.设有说明:
intx=10,f;floaty=;执行表达式f=x/(int)y后,则f、y的值分别为。
A.4,2B.5,2C.4,D.5,
6.设有变量说明inti=3,j=5,m;执行语句m=(i++)-(--j);后,m的值是。
A.-1B.0C.-2D.不确定,与编译器有关
7.为了使输出结果为4,执行以下程序时给a和b输入的值应满足的条件是。
#include<>
voidmain()
{ints,t,a,b;
cin>>a>>b;
s=1,t=1;
if(a>0)s++;
if(a>b)t++;
elseif(a==b)t+=s;
elset=2*s;
cout<}
A.a>bB.aa>b
8.若a,b均为int型变量,且a=100,则以下关于for循环语句的正确判断是。
for(b=99;a!
=b;++a,b--)cout<<“----\n”;
A.循环体只执行一次B.死循环
C.循环体不执行D.输出----
9.在下面的函数原型说明中,存在着语法错误的是。
A.voidBC(inta,int);B.intBD(int,int);
C.doubleBE(int,int=5);D.intBF(intx;inty);
10.下列函数定义中,会出现编译错误的是。
A.voidmax(intx,inty,int&z)B.intmax(intx,y)
{z=x>yx:
y;}{intz;
z=x>yx:
y;
returnz;
}
B.intmax(intx,inty)D.intmax(intx,inty)
{intz;{return(x>yx:
y);}
z=x>yx:
y;returnz;
}
11.设有函数定义:
voidf(intn,doublex);若以下选项中的变量都已正确定义并赋值,则调用f函数的正确形式为。
A.f(inti,doublez);B.j=f(1,100);C.f(x,n);D.voidf(n,x);
12.有以下程序
intfun1(doublea){return2*a;}
intfun2(doublex,doubley)
{doublea=fun1(x);
doubleb=fun1(y);returna+b;
}
voidmain()
{intw=fun2,;return1;}
程序执行后变量w中的值是。
A.7B.6C.D.1
13.设有函数定义intadd(intx,inty){returnx+y;},则其不正确的重载函数的定义是。
A.voidadd(intx,inty){return;}
B.add(intx,inty,intz){returnx+y+z;}
C.intadd(doblex,doubley){returnx+y;}
D.doubleadd(intx,doubley){returnx+y;}
14.下列程序在编译时有错,该错误所在行是。
#include<>
#defineN3A和BB.AC.CD.D
15.对于下列程序片段,叙述正确的是。
#include<>
#defineM(a,b)a*b;
voidmain()
{intx=M(3+4,5+6),y;
y=M(3,4);
cout<}
A.输出2912B.输出7712
C.输出4112D.编译有错
16.设有说明staticintn1=10;constintn2=10;intn4=10;
#definen310
则关于下列语句叙述正确的是。
①intdata1[n1];②intdata2[n2];③intdata3[n3];④intdata4[n4];
A.全部正确B.①②③均正确C.②③均正确D.均不正确
17.假如有:
inta=68;
charc1=a;
cout<则输出结果为:
A.aB.68C.DD.语法错
18.设有定义:
intx[10]={0};inty[]={1,2,3};则下列叙述正确的是。
A.数组x的首元素为零,其他元素为随机数。
组y的大小不确定;
B.数组x的所有元素均为零。
数组y的大小为3;
C.数组x的所有元素均为零,数组y的大小不确定;
D.数组x的首元素为零,其他元素为随机数。
数组y的大小为3。
19.设有定义inta[]={1,2,3,4,5,6,7,8,9,10};则下列表达式中,数值为4的表达式的个数为。
①a[4]②a[10]-6③a[3]+1④a[a[9]-a[6]]
A.1B.2C.3
20.以下能正确定义二维数组的是。
A.inta[][4];B.inta[][4]={2*4};
C.inta[][4]={};D.inta[2][4]={{1},{2},{3,4},{5}};
四、阅读程序题(共41分)(注:
答案请写在该题右边空白处。
)
1.以下程序片段的输出结果为(4分)
#include<>
voidmain()
{inta=97;
charc=0x61;下程序运行后的输出结果是(4分)
#include<>
voidmain()
{intx=1,y=2,z=3,t=0;
if(yif(xcout<}
3.以下程序运行后的输出结果是(4分)
#include<>
intf(intn){returnn%2;}
voidmain()
{intdata[8]={1,3,5,2,4,6},s=0;
for(inti=0;f(data[i]);i++)
s+=data[i];
cout<
}
4.以下程序运行后的输出结果是(6分)
#include<>
voidf(intx,int&y)
{intt;
t=x;x=y;y=t;
cout<}
voidmain()
{inta=10,b=20;
cout<f(a,b);
cout<}
5.仔细阅读下列程序,回答后面的问题(第一问4分,第二问2分)
#include<>
doublef()
{staticdoublef1=1;
staticdoublef2=0;
doublef3=f1+f2;
f1=f2;f2=f3;
returnf3;
}
voidmain()
{intn;
cin>>n;
for(inti=1;i<=n;i++)
cout<cout<}
(1).当从键盘输入4时,程序的输出结果是。
(2).该程序的功能是。
6.程序运行后的输出结果是(4分)
#include<>
voidf(intx[],inti,intj)
{intt;
if(it=x[i];x[i]=x[j];x[j]=t;
i++;j--;
f(x,i,j);
}
}
voidmain()
{intdata[]={2,0,3,8};
f(data,0,3);
for(inti=0;i<4;i++)cout<cout<}
7.程序运行后的输出结果是(7分)
#include<>
voidmain()
{intdata[]={6,5,4,3,2,1,0};
for(inti=0;i<3;i++)
for(intj=0;j<6-i;j++)
if(data[j]>data[j+1]){
intt=data[j];
data[j]=data[j+1];
data[j+1]=t;
}
for(i=0;i<7;i++)
cout<cout<}
8.当程序运行过程中从键盘输入3时,输出结果是(6分)
#include<>
voidmain()
{
constintN=10;
intdata[N][N]={0};
intn;intk=1;
cout<<“请输入一个不大于10的正整数:
\n“;
cin>>n;
for(intm=0;m<=n-1;m++)
for(intj=0;j<=m;j++)
data[m-j][j]=k++;
for(m=n;m<=2*(n-1);m++)
for(intj=m-n+1;jdata[m-j][j]=k++;
for(inti=0;ifor(intj=0;jcout<cout<}
}
五、程序完善题(每空2分,共24分)
1.有一堆桃子不知数目,猴子第一天吃掉一半,觉得不过瘾,又多吃了一只,第二天照此办理,吃掉剩下桃子的一半另加一个,天天如此,到第十天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个以下是求解上述问题的程序,请仔细阅读,并完善程序。
(6分)
#include<>
voidmain(void)
{int;
for(;i>0;i--)
;
cout<<”这堆桃子原来共有”<”<}
2.完善下列程序,使其运行后能输出如右图1所示的图形(6分)
#include<>
voidmain(void)
{
charc=‘A’;
for(inti=1;i<=4;i++){
for(intj=1;j<=4-i;j++)
A
BBB
CCCCC
DDDDDDD
CCCCC
BBB
A
图1第2题的输出结果
cout<<"";
for(j=1;j<=;j++)
cout<c++;
cout<}
;
for(i=1;i<=3;i++){
for(intj=1;j<=i;j++)
cout<<"";
for(j=1;j<=;j++)
cout<c--;
cout<}
}
3.下列程序的功能是在有序(降序)的数组中,用二分法查找指定的元素,请完善该程序(6分)
#include<>
intB_Search(intdata[],intx,intn)
{intright=n-1;
intleft=0;
intindex;
while(left<=right){
index=(left+right)/2;
if(data[index]elseif(data[index]>x);
elsereturnindex;
}
;
}
voidmain(void)
{intdata[]={9,8,6,5,4,3,2,1};
intz;
cout<<"请输入待查的数:
"<cin>>z;
intindex=B_Search(data,z,sizeof(data)/sizeof(int));
if(index==-1)
cout<<"数组中无此元素!
"<else
cout<"<}
4.下列程序的功能是判别从键盘输入的一个不超过5位的整数是不是回文数,请完善程序。
(6分)
#include<>
intIs_Palindrome(intdata[],intn)
{intright=n-1;
intleft=0;
while(left<=right){
if()return0;
else{
left++;
right--;
}
}
return1;
}
voidmain(void)
{constintN=5;
intdata[N];
intnum=0;intx;
cout<<"请输入待判别的数(不超过5位整数):
"<cin>>x;
intz=x;
while(z!
=0){
data[num]=z%10;
;
num++;
}
intflag=Is_Palindrome();
cout<<"输入的数据是:
"<if(flag)
cout<<"该数是回文数!
"<else
cout<<"该数不是回文数!
"<}