2008秋江苏计算机c++.doc_第1页
2008秋江苏计算机c++.doc_第2页
2008秋江苏计算机c++.doc_第3页
2008秋江苏计算机c++.doc_第4页
2008秋江苏计算机c++.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

2008秋江苏计算机c+试题试卷21 以下关于逻辑运算的描述中,正确的是_ A.所有的逻辑运算都是双目运算,其优先级相同 B逻辑运算中存在双目运算和单目运算,其优先级相同 C所有的逻辑运算都是双目运算,其优先级各不相同 D逻辑运算中存在双目运算和单目运算,其优先级各不相同22对于while和dowhile循环语句,以下描述正确的是: 。 Adowhile语句中的循环体至少执行一次 B两个语句中的循环体可能都不执行 Cwhile语句中的循环体至少执行一次 D两个语句中的循环体至少执行一次 23以下说明语句中,不存在语法错误的是 。 Achar sl4=a,b,c; Bchar s24=a,b; Cchar s3=I am a student;Dchar s414=I am a student;24设变量a,b,c为整型变量,以下选项中存在语法错误的是 。 Ac=a+b: Bc=a+b+; Cc=b+=c+; Dc=+a=b+;25设有程序段: x=-1: if(a!=0)if(a0) x=1;else x=0; 该程序段表示的数学函数关系是 。 26以下关于两个同类型指针变量的叙述中,在一定条件下,运算结果没有实际意义的是 A两个指针变量可以互相赋值 B两个指针变量进行比较运算 C两个指针变量进行减法运算 D两个指针变量进行加法运算27下列有关构造函数的叙述中正确的是( ) 。 A类的构造函数不能重载 B任何一个类必定有构造函数 C可以定义没有构造函数的类 D任何一个类必定有一个缺省的构造函数28C+中运算符重载可以改变(28) 。 A运算符的优先级 B运算符的结合性 C运算符实现的功能 D运算符的操作数的个数29以下关于基类指针和派生类指针的叙述中不正确的是(29) 。 A基类指针可以指向它的公有派生类的对象 B基类指针可以指向它的多次派生后的派生类的对象 C派生类的指针不能指向基类的对象 D若基类指针指向派生类的对象,通过该基类指针可以访问派生类对象的所有成员30以下关于友元函数的叙述中,正确的是 。 A友元函数不能访问类的私有成员 B友元函数破坏了类的封装性和隐藏性 c友元函数的使用与类的成员函数相同 D友元函数的实现必须在类的说明中定义二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行)基本概念题(共5分)1设有语句: int a=5,b=6,c;c=!a&b+; 执行以上语句后,变量b的值为( )。2在定义派生类时,如果没有指定基类的派生(继承)方式,则缺省(默认)的继承方式是 ( )3c+中编译预处理包括:文件包含、宏和( ) 。4要将一个函数定义为内联函数时,通常在定义函数时使用关键字 ( ) 。5c+中表达式I am a student的值为该字符串的( ) 。阅读程序题(共13分)6程序(2分) #include void f(int a) int t=a0; a0=a1;a1=t; couta0ta1n; void main(void) int b 2=300,500; f(b); coutbOtb1n; 程序输出的第一行是(_) ,第二行是(_) 7程序(2分) #include int fa(int a) static int m=1;m=a*m; retum m; void main(void) for(int i=2;i=4;i+) coutfa(i)n;8.程序(2分) #include int f1(int a33) int sum=O; for(int i=0;i3;i+) for(int j=0;jO)continue; sum+=aij; return sum; int f2(int a33) int sum=0; for(int i=0;i3;i+) for(int j=O;j3;j+) if(aij0)break; sum+=aij; return sum; void main(void) int b33=1,2,3,7,-12,-13,-20,9,-5; int s1,s2; s1=f1(b); s2=f2(b); couts1endl; couts2endl; 程序输出的第一行为 _ ,第二行为_。9.程序(3分) #include int f(int x,int n) if(n=1)xn=3; else xn=n+f(x,n-1); coutxnn; return xn; void main(void) int b5=3,4,5,6,0; f(b,3); for(int i=0;i5;i+) coutbit; coutendl; 程序输出的第一行是() ,第二行是() ,第三行是( )。10程序(2分) #include class A int x; public: A(int a)x=+a; A()coutxn; int get()return x; ; class B:public A int y; public: B(int b):A(b)y=get()+b; B():A(5)Y=6; B()coutyn; ; void main(void) B b(5); 。 程序输出的第一行是( ) ,第二行是( ) 。11程序(2分) #include class A int x; public: A(int x=0) this-x=x; virtual void f()coutxy=y; void f(int a)coutyf(); pa=&b1; pa-f(); 程序输出的第二行是( ) ,输出的第三行是( ) 。完善程序题(共12分)12以下程序的功能是:将两个字符串分别输入到sl和s2中,并使s2中的字符按升序排列 (用函数sort()实现排序)。然后,依次从sl中取一个字符插入到s2中,并使s2中的字符 保持升序。函数insert(char *p,char c)的功能是将字符c插入到p所指向的字符串中, 使p所指向的字符串保持升序。函数merge(char *pl,char *p2)依次从p2所指向的字 符串中取出一个字符,并插入到p1所指向的字符串中。 程序(4分) #include #include char *sort(char s) int len=strlen(s); for(int i=0;ilen-1;i+) for(int j=i+1;jlen;j+) if( ) char c=si; si=sj;sj=c; return s;void insert(char *p,char c)char *p1=p; int len=strlen(P); while(*p1=p1) ( 20 ); p2-; ( 21 ); char *merge(char *p1,char *p2) while(*p2) _; p2+; retum p1; void main(void) char sl100,s2200,c; cout输入第一行字符串:;cin.getline(s1,100); cout输入第二行字符串:;cin.getline(s2,100); couts1ns2n; sort(s2);merge(s2,s1); couts1ns2n; 13.以下程序中的功能是:通过重载运算符+,-和=,分别实现一维数组(向量)的加法(对应元素相加)、减法(对应元素相减)和向量对象之间的赋值,例如:设a,b,c是类Arr的对象,a的成员x=1,1,1,1,1,1,b的成员x=2,2,2,2,2,2,执行:c=a+b后,c的成员x=3,3,3,3,3,3程序(4分) #include class Art float x20; int size; public: Arr(float a,int n) for(int i=0;in;i+) xi=ai; size=n; Arr() for(int i=O;i20;i+)xi=O; size=0; Arr operator +(Arr); Arr operator -(Arr); Arr &operator =(Arr&); int GetArr(float y) for(int i=0;isize;i+)yi=xi; retum size; void print() for(int i=O;isize;i+) coutit; coutnsize=sizen; ; Arr Arr:operator +(Arr a) Arr tem; for(int i=0;isize;i+) _; tem.size=size; return tem; Arr Arr:operator -(Arr a) Arr tem; for(int i=0;isize;i+) _ ; tem.size=size; retum tem; Arr &Arr:operator=(_) for(int i=O;ia.size;i+) xi=a.xi; size=a.size; return (_) ; void main(void) float b16=10,20,30,40,50,60; float b26=100,200,300,400,500,600,b36,b416; Arr al(b1,6),a2(b2,6),a3,a4; a3=al+a2;a4=a2-al; a3.print();a4.print(); int n=a1.GetArr(b3); for(int i=0;in;i+)coutb3it; coutnnn; 14下面程序的功能是:首先建立一条链表,顺序从链表中找到data为最大值的结点,从链表 中删除该结点,并将其值返回,最终删除整个链表,同时得到按降序排序的数组x。其中, 函数Insert(int a,node *head)的功能是:用参数a产生一个新结点,将其插入链首,并返 回链首指针。DeleteMax(node,*&head)的功能是:从head所指向的链表中找到data值为 最大的结点,从链表中删除该结点并将其结点值返回。 算法提示:当链表为空时,返回-1。在查找的过程中,始终让pmax指向当前data值 为最大的结点,并让pmax1指向pmax的前一个结点。找到data值为最大的结点后,将其 从链表中删除,并返回其data值。 程序(4分) #include struct node int data; node *next; ; node *Insert(int x,node *head) node *p=new node; p-data=x; (_);head=p; return head; int DeleteMax(node:I:&head)node *pl,*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=pl;pmax1=p2; p2=p1; (_)

温馨提示

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

最新文档

评论

0/150

提交评论