C++高级语言A卷及答案.docx

上传人:b****5 文档编号:7541251 上传时间:2023-01-24 格式:DOCX 页数:14 大小:21.73KB
下载 相关 举报
C++高级语言A卷及答案.docx_第1页
第1页 / 共14页
C++高级语言A卷及答案.docx_第2页
第2页 / 共14页
C++高级语言A卷及答案.docx_第3页
第3页 / 共14页
C++高级语言A卷及答案.docx_第4页
第4页 / 共14页
C++高级语言A卷及答案.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

C++高级语言A卷及答案.docx

《C++高级语言A卷及答案.docx》由会员分享,可在线阅读,更多相关《C++高级语言A卷及答案.docx(14页珍藏版)》请在冰豆网上搜索。

C++高级语言A卷及答案.docx

C++高级语言A卷及答案

一、单项选择题

1、下列不是C++合法字面常量的是(B)

A.0237LB.‘abc’C.0xabcD.0.237

 

2、设:

intx=5,y=6;!

(x++)||(y--)语句运行后,变量x和y的值分别为(D)

A.x=6,y=6B.x=5,y=6C.x=5,y=5D.x=6,y=5

 

3、下列关于数组初始化正确的是(A)

A.chara[2][20]={“C++”,“programming”};

B.charb[10];b=”C++programming”;

C.intc[2,3]={1,2,3,4,5,6};

D.intd[6]={1,2,3,4,5,6,7};

 

4.设enumday{Mon,Tue,Wed,Thu=4,Fri,Sat,Sun};下列说法正确的是(D)

A.Mon对应的整数值为1

B.可以说明枚举变量d并且初始化为4,说明语句为enumdayd=4;

C.语句cout<

D.在枚举类型day的枚举值表中,枚举值对应的整数值不是连续的

 

5、下列关于常量、变量或数组的说明及初始化语句,符合C++语法的是(D)

A.constinta;a=15;

B.inta=5;b=6;

C.charc=”97”;

D.floatd[5][5]={0};

 

6、下列语句循环的执行次数为(A)

for(inti=10;i>=0;i--)

while(i)

do{--i;}while(i);

A.10B.11C.100D.1000

 

7、设结构类型structstudent{intid;charname[20];intscore;};下列语句正确的是(A)

A.studentstu[10]={10101,“John”};

B.studentstu={10101,,600};

C.studentstu;stu={10101,“John”,600};

D.studentstu;stu.id=10101;stu.name=”John”;stu.score=600;

 

8、关于C++中函数的使用,下列说法正确的是(C)

A.定义函数时,形参类型说明可以放在函数体内

B.返回语句中,关键字return后面的值不能为表达式

C.函数定义不可以嵌套,函数调用可以嵌套

D.可以直接递归调用,不可以间接递归调用

 

9、关于函数参数传递,下列说法正确的是(C)

A.全局变量可以作为函数的参数

B.数组作为函数的参数,在调用函数时,将实参数组元素分别赋值给形参数组元素

C.如果变量的引用作参数,在调用函数时,实参不可以是与引用形参类型一致的表达式

 

D.函数的返回值类型必须与函数说明一致或者为空类型

#include

inta=1;

voidfunction(intd){

intb=1;

staticintc=1;

cout<<"a="<

cout<<",b="<

cout<<",c="<

a++;

b++;

c++;

}

voidmain(){

while(a<4)

function(a);

cout<

}

10.关于变量的生存期与作用域,下列说法正确的是(D)

A.全局变量与局部变量都会自动初始化

B.静态变量的生存期与其作用域完全一致

C.同一程序中,全局变量与局部变量不能重名

D.函数的形参属于局部变量,其作用域为该函数的函数

 

二、读程序写结果

1、(6分)

#include

voidmain(){

for(inti=0;i<10;i++){

if(i%2)

continue;

cout<

}

}

在VC++6环境下运行结果为:

0

2

4

6

8

Pressanykeytocontinue

 

2、(6分)

#include

intabs(int);

voidmain(){

inti,j;

for(i=-2;i<3;i++){

for(j=0;j

cout<<"";

for(j=0;j<(2-abs(i))*2+1;j++)

cout<<"*";

cout<

}

}

intabs(intn){

if(n<0)

return-n;

returnn;

}

在VC++6环境下运行结果为:

*

***

*****

***

*

Pressanykeytocontinue

 

3、(6分)

#include

inta=1;

voidfunction(){

intb=1;

staticintc=1;

cout<<"a="<

cout<<",b="<

cout<<",c="<

a++;

b++;

c++;

}

voidmain(){

while(a<4)

function();

cout<

}

在VC++6环境下运行结果为:

 

a=1,b=1,c=1

a=2,b=1,c=2

a=3,b=1,c=3

 

Pressanykeytocontinue

 

4、(6分)

#include

voidfunction(int[][3],int[][2]);

voidmain(){

inta[2][3]={1,2,3,4,5},b[3][2];

function(a,b);

for(inti=0;i<3;i++){

for(intj=0;j<2;j++)

cout<

cout<

}

}

voidfunction(inta[][3],intb[][2]){

for(inti=0;i<2;i++)

for(intj=0;j<3;j++)

b[j][i]=a[i][j];

}

在VC++6环境下运行结果为:

 

14

25

30

Pressanykeytocontinue

 

5、(6分)

#include

structmystruct{

charch;

intnum;

}b[10];

voidfunction(charstr[],mystructresult[]){

inti=0;

do{

intj=0;

while(result[j].num!

=0){

if(str[i]==result[j].ch){

result[j].num++;

break;

}

j++;

}

if(result[j].num==0){

result[j].ch=str[i];

result[j].num++;

}

i++;

}while(str[i]!

='\0');

}

voidmain()

{

chara[20]="acdveavcafe";

function(a,b);

inti=0;

while(b[i].num!

=0){

cout<

i++;

}

}

在VC++6环境下运行结果为:

a---3

c---2

d---1

v---2

e---2

f---1

Pressanykeytocontinue

 

三、程序填空

3.1下面的程序计算级数和S,请完善该程序。

计算S的公式如下:

S=

#include

voidmain(){

doubleresult;

________

(1)________;

for(inti=1;i<=100;______

(2)_______){

result+=________(3)________;

}

cout<

}

 

3.2函数MaxCommonDivisor计算两个整数的最大公因数,请完善该函数。

intMaxCommonDivisor(intx,inty){

if(x%y==0)

returny;

else{

if(y%x==0)

returnx;

else{

intm=________

(1)________;

intn=________

(2)________;

for(inti=n-1;i>1;i--){

if(n%i==0){

if(________(3)________)

returni;

}

}

}

}

}

 

3.3以下程序统计1000以内的素数并显示在屏幕上,请完善改程序。

#include

voidmain(){

constintn=1000;

intsieve[n+1];

for(intj=1;j

sieve[j]=j;

inti=1,count=0;

while(_______

(1)_______){

i++;

if(sieve[i]!

=0){

cout<<""<

_______

(2)________;

if(count%15==0)

cout<

for(_________(3)_________)

sieve[k]=0;

}

}

cout<

}

 

3.4函数Invert对字符串内容进行颠倒,例如将字符串”abcde”变为”edcba”,请完善该函数。

voidInvert(charstr[])

{

inti,j,l=0;

________

(1)________;

while(________

(2)________)

l++;

for(________(3)________;i

{

k=str[i];

str[i]=str[j];

str[j]=k;

}

}

3.5递归函数sort实现对整型数组b中的数据由小到大排序。

请完善该函数。

voidsort(intb[],intn)

{

intj,t;

if(n==1)

________

(1)___________;

for(j=1;j

if(_____

(2)_____)

{

t=b[0];

b[0]=b[j];

b[j]=t;

}

sort(b+1,______(3)______);

}

 

四、程序设计

1、一个正整数,如果值为其各位数字的立方和,该正整数称为水仙花数,例如153=13+53+33。

请根据如下功能及函数原型设计两个函数:

(1)求一个整数的立方,函数原型为:

intCube(int);

(2)判断一个正整数是否为水仙花数,函数原型为:

boolIsArmstrong(int);

2、梭哈是一种扑克牌游戏,每位玩家手里有五张牌,根据由这五张牌组成的牌型确定胜者。

常见的牌型有:

Ø同花顺:

五张牌花色一致,点数连续;

Ø

Ø四条:

四张牌点数相同,另一张牌为任意牌

Ø

Ø富尔豪斯:

三张牌点数相同,另外两张牌点数也相同

Ø

Ø同花:

五张牌花色一致,点数任意

Ø

请根据上述规则,设计结构类型poker,用来描述一张扑克牌,然后分别设计bool类型函数:

StraightFlush、Four_of_a_Kind、FullHouse和Flush,分别判断同花顺、四条、富尔豪斯和同花四种牌型(上述四个函数,均可嵌套调用其它函数,请根据解题需要自行设计所需的其它函数)。

 

答案(参数为数组):

 

structpoker{

charhuase;

intdianshu;

}pokers[5];

//只写出结构类型,没设置结构类型数组也可以给分

 

voidsort(chara[],intb[],intn)

{

for(inti=0;i

{

for(intj=i;j>0;j--)

{

if(b[j]

{

inttemp=b[j];

b[j]=b[j-1];

b[j-1]=temp;

chartempc=a[j];

a[j]=a[j-1];

a[j-1]=tempc;

}

}

}

}

boolStraightFlush(chara[],intb[])

{

chartemp=a[0];

for(inti=1;i<5;i++)

{

if(a[i]!

=temp)

returnfalse;

}

for(i=0;i<4;i++)

{

if((b[i+1]-b[i])!

=1)

returnfalse;

}

returntrue;

}

 

boolFour_of_a_Kind(chara[],intb[])

{

inttemp=b[0];

boolflag1=true,flag2=true;

for(inti=1;i<4;i++)

{

if(b[i]!

=temp)

flag1=false;

}

temp=b[4];

for(i=3;i>0;i--)

{

if(b[i]!

=temp)

flag2=false;

}

returnflag1||flag2;

}

 

boolFullHouse(chara[],intb[])

{

inttemp=b[0];

boolflag1=true,flag2=true;

if(b[3]!

=b[4]||b[0]!

=b[1])

returnfalse;

for(inti=1;i<2;i++)

{

if(b[i]!

=temp)

flag1=false;

}

temp=b[4];

for(i=2;i<5;i++)

{

if(b[i]!

=temp)

flag2=false;

}

returnflag1||flag2;

}

 

boolFlush(chara[],intb[])

{

chartemp=a[0];

for(inti=0;i<5;i++)

{

if(a[i]!

=temp)

returnfalse;

}

returntrue;

}

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

当前位置:首页 > 高等教育 > 理学

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

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