东南大学c++复习一含答案.docx

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

东南大学c++复习一含答案.docx

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

东南大学c++复习一含答案.docx

东南大学c++复习一含答案

一、选择题

1.若有char*p="Hello",则以下选项中错误的是:

B

A.char&a=*p;B.char*s=*p;C.char*q=p+2;D.p=p+2;

2.设有说明intx[5]={1,2,3,4,5},*p=x;输出值不是5的是:

C

A.cout<

B.cout<

C.cout<

D.cout<

(1)<<'\n';

3.设有说明语句:

char*s[]={"Student","Teacher","Father","Mother"},*ps=s[2];

执行语句:

cout<<*s[1]<<','<

A

A.T,Father,FB.Teacher,F,Father

C.Teacher,Father,FatherD.语法错,无输出

4.设有语句

chars[]="246",*ptr=s;

cout<<(char)(*(ptr+1)+1)<<'\n';

执行以上语句后输出:

C

A.46B.6C.5D.53

5.设有说明语句:

floatfun(int&,char*);

intx;chars[200];

对以下函数fun的调用中正确的调用格式是B

A.fun(&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;则以下正确的语句是:

C

A.s1[]=”computer”;B.s1[10]=”computer”;

C.s2=”computer”;D.*s2=”computer”;

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

B

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

voidmain()

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

a=p1==&m;

cout<

}

17.设有说明:

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

则值为9的表达式是:

B

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

#include

voidmain(void)

{

chars[200];

intcount,i,j;

cout<<”输入一行字符串:

\n”;

cin.getline(s,200);

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

{

while(s[i]==‘‘&&i

if(i

while(s[i]!

=’‘&&i

}

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

”<

}

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

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

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

其头文件为4;该函数的参数可以是

5也可以是6

A行while语句的功能是7;

C行while语句的功能是8;

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

9

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

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

#include

structstudent{

intid

charname[10];

floatcScore;

}

studentInput(studentx)

{

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

”;

cin>>x.id>>x.name>>x.cScore;

returnx;

}

voidOutput(student&x)//A

{cout<

voidmain(void)

{

studentsts[30];//B

inti,n=averageC=sum=0;

cout<<”请输入全班人数:

”;

cin>>n;”

for(i=0;i

for(i=0;i

averageC=sum/n;

for(i=0;i

cout<<”AverageofC++scoreis:

”<

}

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=∑

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--)

cout<<*p[i];//A

cout<

}

问题一:

变量p是30数据类型

问题二:

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

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

问题三:

当i值为3时,如果执行语句cout<<*p+i;输出结果是32

问题四:

程序输出是33

问题五:

当将A行语句改为:

cout<<(*p)[i];后,输出结果是34

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

#include

voidmain()

{

charch[2][5]={"693","825"},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];//A

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

for(j=0;p[i][j]>='0'&&p[i][j]<='9';j+=2)

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

cout<<"\n"<

}

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

该程序的执行结果为:

37。

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

#include

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

{return**s=p[1][1];//B}

voidmain()

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

p=newint;

fut(&p,a);

cout<<"\n"<<*p<

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

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

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

40

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

41。

#include

#include

voidfun(char*w,intn)

{chart,*s1,*s2;

s1=w;s2=w+n-1;

while(s1

{t=*s1++;

*s1=*s2;

*s2=t;

s2--;

}

}

voidmain()

{charp[]="1234567";

fun(p,strlen(p));

cout<

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

book<回车>

book<空格><回车>

则输出结果是:

42。

如果从键盘上输入:

book<回车>

book<回车>

则输出结果是:

43。

#include

#include

voidmain()

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

cin.getline(s1,10);cin.getline(s2,10);

if(!

strcmp(s1,s2))cout<<"*";

elsecout<<"#";

cout<

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

44。

#include

#include

charb[]="ABCD";

voidmain()

{char*chp;

for(chp=b;*chp;chp++)cout<

cout<<"\n";

}

三、完善程序

1.下列程序功能是:

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

程序说明:

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

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

#include

#include

structstudent{

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;

for(i=0;i

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

flag=1;

for((7);j

number-=1;

}

if(flag==0)cout<<"noresult!

"<

}

voidmain()

{

studenta[10]={{"张三",90},{"李四",85},{"王五",73}};

studenta1={"赵二",96};

intcount=3,i;

add(a,count,a1);

for(i=0;i

cout<

del(a,count,a1);

for(i=0;i

cout<

}

2.下列程序的功能是:

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

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

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

#include

intselect(char*a,int*b);

voidmain()

{inti,count,b[10];

Chara[100];

cout<<"pleaseinputasting:

";

cin.getline((8));

count=select((9));

cout<<"count="<

for(i=0;i

cout<

}

intselect(char*a,int*b){

char*p=(10);

intj=0;

while((11)){

b[j]=0;

while((*p<='0'||*p>='9')&&*p!

=0)

p++;

while((12)&&*p!

=0)

b[j]=(13);

j++;

}

returnj-1;

}

3.以下程序的功能是:

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

例如:

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

#include

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

voidmain()

{char*p[5],s[100]="copyfile.datfile2.dat";

intn;

n=fun(s,p);

cout<<"n="<

for(inti=0;i

for(i=0;i

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

inti=0;

char*ps,*ts;

while(*s){

while(*s=='')s++;//跳过子串前的空格

ps=  (16) ; 

while(*s!

=''&&*s!

=0)s++;//扫描子串

if(ps

p[i]=ts=(17);

while(ps

*ts=0;i++;}}

return(19);}

4.下面程序的功能是:

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

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

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

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

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

算法提示:

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

#include

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;

if(!

head)return-1;

max=p1->data;pmax=p1;

while(p1){

if(maxdata){

max=p1->data;

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>>a;

}

while(head){

x[count]=24;

count++;

}

for(inti=0;i

cout<

}

一、

选择题(共30分)

1

B

2

C

3

A

4

C

5

B

6

D

7

A

8

B

9

C

10

C

11

B

12

D

13

A

14

B

15

A

16

C

17

B

18

A

19

B

20

A

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

(1)_____count____

(2)_____i

(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