东南大学c++复习一含答案Word文件下载.docx

上传人:b****6 文档编号:21453615 上传时间:2023-01-30 格式:DOCX 页数:15 大小:22.84KB
下载 相关 举报
东南大学c++复习一含答案Word文件下载.docx_第1页
第1页 / 共15页
东南大学c++复习一含答案Word文件下载.docx_第2页
第2页 / 共15页
东南大学c++复习一含答案Word文件下载.docx_第3页
第3页 / 共15页
东南大学c++复习一含答案Word文件下载.docx_第4页
第4页 / 共15页
东南大学c++复习一含答案Word文件下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

东南大学c++复习一含答案Word文件下载.docx

《东南大学c++复习一含答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《东南大学c++复习一含答案Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。

东南大学c++复习一含答案Word文件下载.docx

x,s)B.fun(x,s)C.fun(x,*s)D.fun(&

x,*s)

6.设s和t分别为指向两个长度相同的字符数组指针,则循环语句while(D)可以正确实现字符串t到s的完整复制功能。

A)*s=*t&

&

t!

=0B)s++=t++&

*t!

=0

C)*(++s)=*(++t)D)*s++=*t++

7.当数组名为函数的实参时,它传递给函数的是A。

A)数组的首地址B)数组名

C)数组第一个元数值D)数组全部元数

8.有关内存分配的说法中,是B错误的。

A、指针变量可以保存动态分配的存储空间

B、数据元素存储在堆区的数组在建立时就被初始化(清零)

C、用new为指针变量分配的存储空间可以是一个数组。

D、指向静态变量的指针不必用delete释放.

9.以下语句中不正确的是C。

A)int*p=0;

B)floatp=(float)50;

C)int*p=new50;

D)float*p=newfloat[50];

10.设有说明:

chars1[10],*s2=s1;

则以下正确的语句是:

A.s1[]=”computer”;

B.s1[10]=”computer”;

C.s2=”computer”;

D.*s2=”computer”;

11.设有说明intb[4][4],以下不能等价表示元素b[3][3]的是:

A.*&

b[3][3]B.(*(*(b+3))+3)

C.*(b[3]+3)D.*(*(b+3)+3)

12.设有以下说明语句:

chars1[20]=”hello”,s2[20]=”China”,constchar*ptr=s1;

以下语句中不符合C++语法规则的语句是D

A.strcpy(s2,ptr)B.ptr=s2C.ptr=ptr+4D.*ptr=*s2

13.设有如下定义,则以下 A 是正确的。

   intnum=20406;

int*np;

float*mp;

A.np=&

numB.*np=&

numC.mp=&

npD.mp=floatnp

14.设一程序中声明了两个数组inta[20][30];

intb[600];

现要将数组a中的元素按行序为主的顺序(一行接一行)复制到b数组中,例如用赋值语句b[k]=a[i][j];

 则k值的计算应为 B 。

A.k=i*20+jB.k=i*30+jC.k=j*20+i+1D.k=i*30+j+1

15.已知某函数有如下定义:

intdata[4][3]={1,3,5,7,9,2,4,6,8,10,11,12};

int(*p)[3];

p=data;

则:

*(p+2) 表示 A 。

A.数组data的元素4的地址;

B.数组data的元素5的地址;

C.数组data的元素8的地址;

D.数组data的元素9的地址。

16.以下程序执行后a的值是_C_

A)4B)1C)0D)a无定值,运行时出错

#include<

iostream.h>

voidmain()

{inta,k=4,m=6,*p1=&

k,*p2=&

m;

a=p1==&

a<

endl;

}

17.设有说明:

inta[][4]={1,2,3,4,5,6,7,8,9,10},*p=*(a+1);

则值为9的表达式是:

A.p+=3,*p++B.p+=4,*(p++)C.p+=4,*++pD.p+=4,++*p

18.以下枚举类型定义中,正确的是_A_

A.enumdata{f1=5,f2=3,s1,s2,a=0,b,c};

B.enumdata{f1,‘f2’,‘s1’,‘s2’,a=0,b,c};

C.enumdata{‘x’,‘y’,‘z’,s2,a,b,c};

D.enumdata{5,3,s1,s2,a,b,c};

19.设有说明:

char(*p)[10];

和语句:

p=newchar[5][10];

则语句delete[5]p;

表示释放二维数组B

A)第0行所占空间B)所占的所有空间

C)第10行所占空间D)第5行所占空间

20.设有说明:

float*p;

执行语句:

p=newfloat;

*p=1.5;

后,再执行deletep;

表示释放A

A)动态分配的空间,但不释放指针p

B)动态分配的空间,同时释放指针p

C)动态分配的数据1.5,但不释放指针p

D)动态分配的数据1.5,同时释放指针p

 

二.阅读程序

1.统计一行英文文字的单词个数。

#include<

string.h>

voidmain(void)

{

chars[200];

intcount,i,j;

”输入一行字符串:

\n”;

cin.getline(s,200);

for(count=0,j=strlen(s),i=0;

i<

j;

{

while(s[i]==‘‘&

j)i++;

//A

if(i<

j)count++;

//B

while(s[i]!

=’‘&

//C

}

”字符串中包含的单词数为:

”<

count<

’\n’;

程序中单词的个数是通过变量count输出的;

统计工作的结束条件是2;

字符串的长度是通过库函数3获得的,

其头文件为4;

该函数的参数可以是

5也可以是6

A行while语句的功能是7;

C行while语句的功能是8;

A行与C行可否互换,为什么?

9

B行中的if条件不存在,会出现10错误结果。

2.统计全班的C++成绩。

structstudent{

intid

charname[10];

floatcScore;

studentInput(studentx)

”输入学号、姓名、C++成绩:

”;

cin>

>

x.id>

x.name>

x.cScore;

returnx;

voidOutput(student&

x)//A

{cout<

x.id<

’\t’<

x.name<

x.cScore<

voidmain(void)

studentsts[30];

//B

inti,n=averageC=sum=0;

”请输入全班人数:

n;

for(i=0;

i++)sts[i]=Input(sts[i]);

//C

i++)sum+=sts[i].cScore;

//D

averageC=sum/n;

for(i=0;

i++)Output(sts[i]);

”AverageofC++scoreis:

averageC;

A行的形参为11类型的结构体变量。

B行定义了一个12,其数组元素有13个,每个元素均为(14)型变量,包含有15、16、17三个数据成员。

完成数据输入的是函数18,其参数是19型变量,其形参与实参的结合是

20传递,如果将函数定义改为21,程序的运行效率何以提高,且22行可以简略为23

D行是通过24运算符,将每位学生的C++成绩计入sum变量计算25;

3.设有以下说明,请根据说明语句的顺序回答以下问题:

1)constfloata=1;

2)float&

x=a;

3)floatb[3],&

t=b[2];

4)int&

top=*newint;

5)constint*p=&

sum;

6)constchar*consts1;

7)constfloat*consts2=b;

8)constfloat*consts3=&

b;

9)enumgrade{math,eng,phy,com};

10)enumgrade=math;

11)gradesum=math;

问题一:

以上正确的说明语句是:

26

问题二:

含有正确表示引用类型说明的语句是:

27

问题三:

正确的常量说明语句是:

28

问题四:

正确说明枚举变量的语句是:

29

4.阅读以下程序,回答问题:

#include<

voidmain()

{char*p[]={“BOOL”,”OPK”,”H”,”SP”};

inti;

for(i=3;

i>

=0;

i--,i--)

*p[i];

变量p是30数据类型

表达式*p[i]等效于A、B中的31

A.*(p[i])B.(*p)[i]

当i值为3时,如果执行语句cout<

*p+i;

输出结果是32

程序输出是33

问题五:

当将A行语句改为:

(*p)[i];

后,输出结果是34

5.阅读程序后回答问题。

#include<

charch[2][5]={"

693"

825"

},*p[2];

inti,j,s=0;

2;

i++)p[i]=ch[i];

i++)

for(j=0;

p[i][j]>

='

0'

&

p[i][j]<

9'

j+=2)

s=10*s+p[i][j]-'

"

\n"

s<

A行语句执行完毕后,指针p[0]和p[1]分别指向35和36;

该程序的执行结果为:

37。

6.阅读程序后回答问题。

fut(int**s,intp[2][3])//A

{return**s=p[1][1];

//B}

{inta[2][3]={1,3,5,7,9,11},*p;

p=newint;

fut(&

p,a);

*p<

该程序A行形参表中**S表示将变量S定义为38指针。

该程序B行中赋值语句的左值**S表示39。

该程序运行后,输出结果是:

40

7.以下程序运行后,输出结果是:

41。

voidfun(char*w,intn)

{chart,*s1,*s2;

s1=w;

s2=w+n-1;

while(s1<

s2)

{t=*s1++;

*s1=*s2;

*s2=t;

s2--;

{charp[]="

1234567"

fun(p,strlen(p));

p<

8.以下程序运行后,如果从键盘上输入:

book<

回车>

空格>

则输出结果是:

42。

如果从键盘上输入:

43。

{chara1[10],a2[10],*s1=a1,*s2=a2;

cin.getline(s1,10);

cin.getline(s2,10);

if(!

strcmp(s1,s2))cout<

*"

elsecout<

#"

strlen(strcat(s1,s2))<

9.下面程序的输出结果是:

44。

charb[]="

ABCD"

{char*chp;

for(chp=b;

*chp;

chp++)cout<

chp<

\t'

三、完善程序

1.下列程序功能是:

在给定的学生信息结构体数组a中添加和删除学生信息。

程序说明:

1)原数组已按数学成绩排序(降序),添加和删除学生信息后数组应仍为降序;

2)添加,删除后count数据要相应变化。

charname[20];

floatmath;

};

voidadd(studentb[10],

(1),studentx){

inti,j;

number+=1;

for(i=0;

(2)i++){

if((3)){

for(j=number;

j>

i;

--j)

b[j]=(4);

b[i]=(5);

break;

voiddel((6),int&

number,studentx)//数组中如有重名,此算法不能全删

{inti=0,j,flag=0;

number;

i++)

if(strcmp(d[i].name,x.name)==0){

flag=1;

for((7);

j<

j++)d[j]=d[j+1];

number-=1;

}

if(flag==0)cout<

noresult!

voidmain()

studenta[10]={{"

张三"

90},{"

李四"

85},{"

王五"

73}};

studenta1={"

赵二"

96};

intcount=3,i;

add(a,count,a1);

count;

cout<

a[i].name<

a[i].math<

del(a,count,a1);

2.下列程序的功能是:

将字符串中连续出现的数字作为一个整数取出依次存入b数组中。

如,若字符串的值为“45as8hgyu86trfg2356hfg877df”,则b数组中的各元素值分别是整数45、8、86、2356、8。

函数的返回值为所提取整数的个数。

intselect(char*a,int*b);

{inti,count,b[10];

Chara[100];

pleaseinputasting:

cin.getline((8));

count=select((9));

count="

b[i]<

intselect(char*a,int*b){

char*p=(10);

intj=0;

while((11)){

b[j]=0;

while((*p<

||*p>

)&

*p!

=0)

p++;

while((12)&

=0)

b[j]=(13);

j++;

returnj-1;

3.以下程序的功能是:

从给出的字符串中依次取出被空格隔开的子串,将各子串分别存入动态分配的内存空间,让一维指针数组的各指针依次指向各个动态空间中的子串。

例如:

给出的字符串为“copyfile.datfile2.dat”,则p指针数组分别指向子串“copy”,“file.dat”、“file2.dat”。

intfun(char*s,char*p[]);

{char*p[5],s[100]="

copyfile.datfile2.dat"

intn;

n=fun(s,p);

n="

n<

for(inti=0;

i++)cout<

(14)<

i++)delete(15);

}

intfun(char*s,char*p[]){

inti=0;

char*ps,*ts;

while(*s){

while(*s=='

'

)s++;

//跳过子串前的空格

ps=  (16) ;

 

while(*s!

*s!

=0)s++;

//扫描子串

if(ps<

s){

p[i]=ts=(17);

while(ps<

s)*ts++=(18);

*ts=0;

i++;

}}

return(19);

4.下面程序的功能是:

首先建立一条链表,顺序从链表中找到data为最大的结点,从链表中删除该结点,并将其值返回。

最终删除整个链表.同时得到按降序排序的数组x。

其中,函数Insert(inta,node*head)的功能是:

用参数a产生一个新结点,将其插在链首,并返回链首的指针。

DelleteMax(noe*&

head),从head所指向的链表中找到data值为最大的结点,从链表中删除该结点并将该结点值返回。

算法提示:

当链表为空时,返回-1,在查找过程中,始终让pmax指向当前data值为最大的结点,并让pmax1指向pmax的前一个结点,找到data值为最大的结点后,将其从链表中删除该结点,并返回其值。

structnode{

intdata;

node*next;

20Insert(intx,node*head){

node*p=newnode;

p->

data=x;

21;

head=p;

returnhead;

intDeleteMax(node*&

head){

node*p1,*p2,*pmax,*pmax1;

intmax;

p1=p2=head;

head)return-1;

max=p1->

data;

pmax=p1;

while(p1){

if(max<

p1->

data){

max=p1->

pmax=p1;

pmax1=p2;

}

p2=p1;

22;

if(pmax==head)head=head->

next;

else23;

deletepmax;

returnmax;

voidmain(){

inta;

intx[200],count=0;

node*head=0;

cin>

a;

while(a!

=-1){

head=Insert(a,head);

cin>

while(head){

x[count]=24;

count++;

x[i]<

一、

选择题(共30分)

1

B

2

C

3

A

4

5

6

D

7

8

9

10

11

12

13

14

15

16

17

18

19

20

二、阅读程序(每空1分,共26分)

(1)_____count____

(2)_____i<

strlen(s)(3)strlen

(4)string.h(5)字符数组(6)字符串常量

(7)跳空格字符(8)跳非空格字符(9)前空时单词数多1

(10)后空时单词数多1(11)引用(12)结构体数组

(13)30(14)结构体类型(15)id

(16)name(17)cScore(18)Input

(19)结构体变量(20)值(21)引用

(22)C行的循环语句(23)Input(sts[i])(24)+=

(25)平均成绩(26)1,3,4,7,9,11(27)3,4

(28)1,7(29)11(30)字符指针数组

(31)A(

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

当前位置:首页 > 表格模板 > 合同协议

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

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