高级语言程序设计(C)(Ⅱ)主校区-闭卷B-2012.doc_第1页
高级语言程序设计(C)(Ⅱ)主校区-闭卷B-2012.doc_第2页
高级语言程序设计(C)(Ⅱ)主校区-闭卷B-2012.doc_第3页
高级语言程序设计(C)(Ⅱ)主校区-闭卷B-2012.doc_第4页
高级语言程序设计(C)(Ⅱ)主校区-闭卷B-2012.doc_第5页
全文预览已结束

下载本文档

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

文档简介

装订线学院: 专业: 班级: 姓名: 学号: 密 封 线 南通大学20112012学年第二学期 高级语言程序设计(C+)()(闭卷)试卷(B)第 1 页 共5页试题一二三四五六总分得分得分评卷人一、选择题(每题2分,共20分)1、下列对二维数组a的定义和初始化中,不正确的是 A. int a = 3,2,1,1,2,3B. int a3=3,2,1,1,2,3C. int a3=3,2,1,1,2,3D. int a23=3,2,1,1,2,32、若有下列语句,则输出结果是 char s120, s2=hello0world; cout strcpy(s1,s2)A. hello0world B. helloworldC. hello D. 语法错3、设有下列说明语句:int a43=1,2,3,4,5,6,7,8,9,10,11,12, (*pt)3=a, *p=a0; 能够正确表示数组元素a12的表达式是: A. *(*pt+1)2) B. *(*(p+5)C. (*pt+1)+2 D. *(*(a+1)+2)4、下列程序调用函数sum把指针p1和p2所指内存单元中的数相加,并将结果存放于指针s所指内存单元。 是能正确完成上述功能的程序。A. void sum(int *p1, int *p2, int *s) int t=*p1+*p2; s= &t;B. void sum(int *p1, int *p2, int *s) s= *p1+*p2;C. void sum(int *p1, int *p2, int *s) s= p1 + p2; D. void sum(int *p1, int *p2, int *s) *s= *p1+*p2;5、在定义一个共用体(union)时,系统为它分配内存的原则是 A. 按所有成员需要的内存总和分配B. 按成员中占内存最大者分配C. 按成员占内存最小者分配D. 按第一个成员所需的内存分配6、下列关于类和对象的说法不正确的是 A. 类是一种用户自定义的数据类型。B. 用class定义的类,若成员前无访问属性,则缺省的访问属性是公有的。C. 对象是类的一个实例。D. 定义一个对象时系统只存储其数据成员,而不存储对象的函数成员,函数成员是同类对象所共享的。7、有下列程序,程序的运行结果是: int m=0;class Apublic: A()m+;int main() A a, b3, *c =&a; cout m endl;A. 2 B. 3 C. 4 D. 5 8、关于友元函数描述中, 是错误的。A. 若友元函数在类体内定义,则它就是该类的成员函数B. 友元函数可直接访问类中的私有成员C. 友元函数破坏类的封装性,使用时应少用D. 友元类中的所有成员函数都是友元函数9、派生类的对象对它的基类成员中 是可以访问的A. 私有继承的公有成员 B. 公有继承的私有成员C. 公有继承的保护成员 D.公有继承的公有成员10、如果在一个类中以友元函数的形式重载了“+”和“*”运算符(注意+的优先级高于*),b1和b2是该类对象,对于表达式+b1*b2,编译器将其解释为: A. operator * (b1.operator+(), b2) B. operator * (operator + (b1), b2)C. b1.operator+().operator*(b2) D. b2.operator * (operator+ (b1)使用班级出卷日期 2012年 5月 6 日装订线学院: 专业: 班级: 姓名: 学号: 密 封 线 南通大学20112012学年第二学期 高级语言程序设计(C+)()(闭卷)试卷(B)第 2 页 共 5 页得分评卷人二、读程序写结果(每空2分,共20分)1、下列程序输出的是 #include using namespace std;int *f(int *p, int n) int &s = pn; for (int i=0; i n; i+) s+= pi; return &s;int main() int x=1,2,3,4,0; cout *f(x,4)endl;2、下列程序的输出结果是:第一行: 第二行: #include using namespace std;float f( float (*p)4, int n) float sum =0.0; for (int i=0; in; i+, p+)for (int j=0; j4; j+) sum += (*p)j; return sum/(n*4);int main () float a34=0,1,2,3,4,5,6,7,8,9,10,11; cout f(a,3)endl; cout f(a+1,2)endl; return 0;3、有如下程序:#include using namespace std;class Apublic: virtual A() cout “A destructor ”;class B: public Apublic: virtual B() cout “B destructor ”;int main () B b; return 0;则程序运行后的输出结果是: 4、阅读如下程序:#include using namespace std;class Apublic:A() cout A constructor1endl;A(int i)x1=i; cout A Constructor2endl;void dispa()cout x1=x1endl;private:int x1;class B: public Apublic:B()cout B Constructor1endl;B(int i):A(i+10)x2=i;coutB constructor2endl;void dispb()dispa();coutx2=x2endl;private:int x2;int main()B b(2);b.dispb();return 0;输出结果为:第一行: 第二行: 第三行: 第四行: 5、阅读如下程序#include using namespace std;class Apublic:A()f();virtual void f()cout A:Fendl;class B: public Apublic:B()f();void f()cout B:Fendl;int main()B b; return 0;输出结果为:第一行: 第二行: 南通大学20112012学年第二学期 高级语言程序设计(C+)()(闭卷)试卷(B)第 3 页 共 5 页得分评卷人三、程序填空(每空2分,共20分)1. Insert函数能将x插入升序的a数组后,仍保持a数组是升序的。void insert(int a, int n, int x) int i= n-1;while ( ) ai+1= ai; i-;ai+1=x;return;2、下列程序读入一行字符,按输入时的逆序建立链表,即先输入的位于链表尾,然后按照输入的相反顺序输出,并释放全部结点。#include using namespace std;struct Node char c; Node *next;int main() Node *top =NULL, *p; char c; while ( cin.get(c), c!= n) p = ; p-c = c;while (top) ; top = top-next; cout c; delete p;3、下列程序把当前目录下的文件example.txt中的内容读出并显示在屏幕上,并统计总行数。#include using namespace std;int main () ifstream in (example.txt, ios:nocreate); if ( )cout can not open example.txt! endl; return -1;char ch300;int num =0;while ( ) in.getline(ch, 300); cout ch endl; num + ;cout Rows: num endl; 4、采用递归方式实现有序数组的二分搜索算法int search(int array, int low, int high, int v) int middle; if (low v)return ;else if (arraymiddle v)return ;elsereturn middle;elsereturn -1;5、采用首结点插入法建立链表,并完善如下代码:node * headCreate()node *head, *n;int a;head = NULL;cout a; a!= -1; cin a)n = new node;n - data = a;if (!head) ;else ;装订线学院: 专业: 年级: 班级: 学号: 密 封 线 南通大学20112012学年第二学期 高级语言程序设计(C+)()(闭卷)试卷(B)第 4 页 共 5 页得分评卷人四、程序设计(共40分)1、输入一个六位数的任意整数,求出由其中各位数字所组成的最大数,例如,若输入整数538691,则各位数字构成的最大数是986531。注意:该程序包括三个模块:首先将输入的六位数整数存在一个一维数组中,然后调用冒泡排序算法进行排序,最后将排序后数组中的元素合成六位数整数并输出。(10分)#include #include using namespace std;/冒泡排序(5分)void bubbleSort ( int a, int size )int t;for ( int i=1; isize;i+ )for ( int j=0; jsize-i; j+ )if ( ajaj+1 )t= aj,aj=aj+1,aj+1=t;int main ()long int num;int s6;cout num;/补充代码将6位数的任意整数存储在数组s中(3分)int i=5;while (num 0)si = num %10;num = num /10;i-;/采用冒泡排序对数组元素进行排序bubbleSort (s, 6);/补充代码将排序后的数组中元素组合成各位数字所组成的最大数存于整型变量result并输出(2分)long int result = 0;for ( i =0; i6; i+ )result += si*pow(10,5-i);cout result;return 0;2、设计String类,完善构造函数、析构函数、复制构造函数和赋值运算符函数的代码。并在main函数写相关测试代码对上述函数进行充分测试。(10分)#includeusing namespace std;class Stringprivate: char *data;public:/构造函数 (2分) /析构函数(1分) /拷贝构造函数(2分) /定义赋值操作符(3分) /在main函数对上述实现函数进行充分测试并通过注释方式指明各个语句测试是哪个函数(2分)int main() 南通大学20112012学年第二学期 高级语言程序设计(C+)()(闭卷)试卷(B)第 5 页 共 5 页3、设计一个函数sAppend( char *s1, const char *s2),将一个字符串s1拼接到一个字符串s2的尾部,在主函数输入两个字符串,使用sAppend()函数将他们拼接后输出。(8分)void sApend(char *s1, char *s2) / (6分)/在main函数中测试sApend函数 (2分)int main ()4、某学校对教师每月工资的计算规定如下:固定工资+课时补贴。其中教授的固定工资为5000元,每个课时补贴为50元。副教授的固定工资为3000元,每个课时补贴为30元。讲师的固定工资为2000元,每个课时补贴为20元。定义教授抽象类,派生出不同的职称的教师类(教授,副教授,讲师类),编写程序求若干教师的月工资。(1

温馨提示

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

评论

0/150

提交评论