东南大学c++复习一(含答案).doc_第1页
东南大学c++复习一(含答案).doc_第2页
东南大学c++复习一(含答案).doc_第3页
东南大学c++复习一(含答案).doc_第4页
东南大学c++复习一(含答案).doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、 选择题1. 若有char *p = Hello,则以下选项中错误的是: B A.char &a = *p; B.char *s = *p; C.char *q = p+2; D.p= p+2;2. 设有说明int x5 = 1,2,3,4,5,*p = x;输出值不是5的是: C A.coutsizeof(x)/sizeof(int)n;B.coutsizeof(x)/sizeof(x0)n;C.coutsizeof(p)/sizeof(int)n;D.coutsizeof(x)/sizeof(1)n;3. 设有说明语句:char *s = Student,Teacher,Father,Mother,*ps = s2;执行语句:cout*s1,ps,*psn;则输出结果是: A A.T,Father,F B.Teacher,F,FatherC.Teacher,Father,Father D.语法错,无输出4. 设有语句char s = 246,*ptr = s; cout(char)(*(ptr+1)+1)n;执行以上语句后输出: C A. 46 B. 6 C5 D. 535. 设有说明语句:float fun(int &,char *);int x;char s200;对以下函数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!=0 B) s+=t+ &*t!=0C)*(+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) float p=(float)50 ;C) int *p=new 50 ; D) float *p=new float 50;10. 设有说明:char s110 ,*s2=s1 ;则以下正确的语句是: C A.s1=”computer”; B. s110=”computer”;C. s2=”computer” ; D. *s2=”computer”;11. 设有说明int b44,以下不能等价表示元素b33的是: B A. *&b33 B. (*(*(b+3)+3)C. *(b3+3) D. *(*(b+3)+3)12. 设有以下说明语句:char s120=”hello”,s220=”China”,const char *ptr=s1;以下语句中不符合C+语法规则的语句是 D Astrcpy(s2 , ptr) B. ptr=s2 C. ptr=ptr+4D. *ptr =*s213. 设有如下定义, 则以下A 是正确的。int num=20406; int *np; float *mp;. np=&num . *np = &num .mp=&np .mp=float np14. 设一程序中声明了两个数组int a2030; int b600; 现要将数组a中的元素按行序为主的顺序(一行接一行)复制到b数组中,例如用赋值语句 bk=aij ;则k值的计算应为 B 。.k=i*20+j .k=i*30+j .k=j*20+i+1 .k=i*30+j+115. 已知某函数有如下定义:int data43=1,3,5,7,9,2,4,6,8,10,11,12; int (*p)3;p=data;则:*(p+2)表示 A 。.数组data的元素的地址;.数组data的元素的地址;.数组data的元素的地址;.数组data的元素的地址。 16. 以下程序执行后a的值是_ C _ A) 4 B) 1 C) 0 D) a无定值,运行时出错 #include void main() int a,k=4,m=6,*p1=&k,*p2=&m; a=p1=&m; coutaendl; 17. 设有说明:int a4=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,*+p D. p+=4,+*p18. 以下枚举类型定义中,正确的是_ A _ A. enum data f1=5 , f2=3, s1, s2 , a=0, b , c ; B. enum dataf1,f2,s1,s2,a=0,b,c; C. enum datax,y,z,s2,a,b,c; D. enum data5,3,s1,s2,a,b,c; 19. 设有说明:char (*p)10; 和语句:p=new char510;则语句delete 5p;表示释放二维数组 B A) 第0行所占空间 B) 所占的所有空间C) 第10行所占空间 D) 第5行所占空间20. 设有说明:float *p; 执行语句:p=new float;*p=1.5;后,再执行delete p;表示释放 A A) 动态分配的空间,但不释放指针p B) 动态分配的空间,同时释放指针pC) 动态分配的数据1.5,但不释放指针p D) 动态分配的数据1.5,同时释放指针p二阅读程序1 统计一行英文文字的单词个数。# include# includevoid main (void)char s200;int count, i, j;cout”输入一行字符串:n”;cin.getline(s,200);for(count=0,j=strlen(s),i=0;ij; ) while (si= &ij)i+; /Aif(ij)count+; / Bwhile(si!= &ij)i+;/ Ccout”字符串中包含的单词数为:”countn;程序中单词的个数是通过变量 count 输出的;统计工作的结束条件是 2 ;字符串的长度是通过库函数 3 获得的,其头文件为 4 ;该函数的参数可以是 5 也可以是 6 A行while 语句的功能是 7 ;C行while 语句的功能是 8 ;A行与C行可否互换,为什么? 9 B行中的if条件不存在,会出现 10 错误结果。2 统计全班的C+ 成绩。# includestruct studentint id char name10;float cScore;student Input ( student x)x.cScore;return x;void Output(student &x) /A tx.cScoren;void main(void)student sts30; / B int i,n=averageC=sum=0;coutn;”for(i=0;in;i+)stsi=Input(stsi); / Cfor(i=0;in;i+)sum+=stsi.cScore; / DaverageC=sum/n;for(i=0;in;i+)Output(stsi);cout”Average of C+ score is:”averageC;A 行的形参为 11 类型的结构体变量。B行定义了一个 12 ,其数组元素有 13 个,每个元素均为 (14) 型变量,包含有 15 、 16 、 17 三个数据成员。完成数据输入的是函数 18 ,其参数是 19 型变量,其形参与实参的结合是 20 传递,如果将函数定义改为 21 ,程序的运行效率何以提高,且 22 行 可以简略为 23 D行是通过 24 运算符,将每位学生的C+成绩计入sum变量计算 25 ;3 设有以下说明,请根据说明语句的顺序回答以下问题: 1) const float a=1;2) float &x=a;3) float b3,&t=b2;4) int &top=*new int;5) const int *p=∑6) const char *const s1;7) const float *const s2=b;8) const float *const s3=&b;9) enum grademath,eng,phy,com;10) enum grade=math;11) grade sum=math;问题一:以上正确的说明语句是: 26 问题二:含有正确表示引用类型说明的语句是: 27 问题三:正确的常量说明语句是: 28 问题四:正确说明枚举变量的语句是: 29 4 阅读以下程序,回答问题:#include void main() char*p=“BOOL”,”OPK”,”H”,”SP”; int i; for (i=3;i=0;i-,i-) cout*pi; /A coutendl;问题一:变量p是 30 数据类型问题二:表达式*pi等效于A、B中的 31 A. *(pi) B. (*p)i问题三:当i值为3时,如果执行语句cout*p+i;输出结果是 32 问题四:程序输出是 33 问题五:当将A行语句改为:cout(*p)i;后,输出结果是 34 5 阅读程序后回答问题。#includevoid main() char ch25=693,825,*p2; int i,j,s=0; for(i=0;i2;i+)pi=chi; /A for(i=0;i=0 & pij=9;j+=2)s=10*s+pij-0; coutnsendl;A行语句执行完毕后,指针p0 和p1 分别指向 35 和 36 ; 该程序的执行结果为: 37 。 6 阅读程序后回答问题。#includefut (int *s,int p23) /A return *s=p11; /B void main() int a23=1,3,5,7,9,11,*p; p=new int; fut(&p,a); coutn*pendl;该程序A行形参表中 *S 表示 将变量S定义为 38 指针。该程序B行中赋值语句的左值 *S 表示 39 。该程序运行后,输出结果是: 40 7 以下程序运行后,输出结果是: 41 。#include#include void fun (char *w ,int n) char t,*s1,*s2; s1=w; s2=w+n-1; while(s1s2) t=*s1+; *s1=*s2; *s2=t;s2-; void main() char p=1234567; fun(p,strlen(p); coutpendl;8 以下程序运行后,如果从键盘上输入: book book 则输出结果是: 42 。如果从键盘上输入: book book 则输出结果是: 43 。#include#include void main() char a110,a210,*s1=a1,*s2=a2; cin.getline(s1,10); cin.getline(s2,10); if(!strcmp(s1,s2)cout*; else cout#; coutstrlen(strcat(s1,s2)endl;9 下面程序的输出结果是: 44 。#include#include char b =ABCD;void main() char *chp; for(chp=b;*chp;chp+) coutchpt;coutn;三、完善程序1. 下列程序功能是:在给定的学生信息结构体数组a中添加和删除学生信息。程序说明:1) 原数组已按数学成绩排序(降序),添加和删除学生信息后数组应仍为降序;2) 添加,删除后count数据要相应变化。#include#includestruct studentchar name20;float math;void add(student b10,(1), student x) int i,j; number+=1 ;for( i=0 ; (2) i+) if( (3) ) for(j =number; ji ;-j ) bj= (4) ; bi= (5) ; break; void del( (6) ,int &number,student x) /数组中如有重名,此算法不能全删int i=0,j,flag=0; for(i=0;inumber;i+) if(strcmp(,)=0) flag=1; for( (7);jnumber;j+) dj=dj+1; number-=1; if(flag=0)coutno result!endl;void main( )student a10 = 张三, 90,李四,85,王五,73;student a1=赵二,96; int count=3,i; add(a,count,a1);for(i=0;icount;i+)tai.mathendl;del(a,count,a1);for(i=0;icount;i+)tai.mathendl;2. 下列程序的功能是:将字符串中连续出现的数字作为一个整数取出依次存入b数组中。如,若字符串的值为“45as8hg yu86trfg 2356hfg 877df”,则b数组中的各元素值分别是整数45、8、86、2356、8。函数的返回值为所提取整数的个数。#includeint select(char *a,int *b);void main()int i,count,b10;Char a100;coutplease input a sting:;cin.getline( (8) ); count=select( (9) ); coutcount=countendl;for(i=0;icount;i+)coutbit;int select(char *a,int *b)char *p= (10); int j=0;while( (11) ) bj=0;while(*p=9)&*p!=0)p+ ;while( (12) &*p!=0) bj= (13) ; j+;return j-1;3. 以下程序的功能是:从给出的字符串中依次取出被空格隔开的子串,将各子串分别存入动态分配的内存空间,让一维指针数组的各指针依次指向各个动态空间中的子串。例如:给出的字符串为“copy file.dat file2.dat”,则p指针数组分别指向子串“copy”,“file.dat”、“file2.dat”。#includeint fun(char *s,char *p);void main()char *p5,s100=copy file.dat file2.dat;int n;n=fun(s,p);coutn=nendl;for(int i=0;in;i+) cout (14 ) endl; for(i=0;in;i+) delete (15 ); int fun(char *s,char *p)int i=0;char *ps,*ts;while(*s)while(*s= ) s+;/跳过子串前的空格ps=(16); while(*s!= &*s!=0) s+; /扫描子串if(pss)pi=ts= (17) ; while(pss) *ts+= (18) ; *ts=0;i+;return (19) ; 4. 下面程序的功能是:首先建立一条链表,顺序从链表中找到data为最大的结点,从链表中删除该结点,并将其值返回。最终删除整个链表.同时得到按降序排序的数组x。其中,函数Insert(int a,node *head)的功能是:用参数a产生一个新结点,将其插在链首,并返回链首的指针。DelleteMax(noe *&head),从head所指向的链表中找到data值为最大的结点,从链表中删除该结点并将该结点值返回。算法提示:当链表为空时,返回-1,在查找过程中,始终让pmax指向当前data值为最大的结点,并让pmax1指向pmax的前一个结点,找到data值为最大的结点后,将其从链表中删除该结点,并返回其值。#includestruct nodeint data;node *next; 20 Insert(int x,node *head)node *p=new node;p-data=x; 21 ; head=p; return head;int DeleteMax(node *& head)node *p1,*p2,*pmax,*pmax1;int max;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;else 23 ;delete pmax;return max;void main()int a;int x200,count=0;node *head=0;cina;while

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论