《秋季《C程序设计语言》复习语音答疑计算机NET计算机C++资料.pdf》由会员分享,可在线阅读,更多相关《秋季《C程序设计语言》复习语音答疑计算机NET计算机C++资料.pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、或 n1%n2 2004 年秋季C+程序设计语言 语音复习题 一、判断分析题(正确的画上“,错误的画上X)1.C+支持的多态性包括通过重载运算符和重载函数支持编译时的动态多态性,以及通过虚函数支持运行 时的静态多态性。【X】2.能访问一个类 CMyClass中的 private 成员的可以是类 CMyClass的成员函数,友元函数和公有派生类中 的成员函数。【X】3.语句int(*p)(int x,int y,float z);”说明了 p 是一个指向整数的指针。【X】4.C+程序的内存格局通常分为全局数据区、代码区、栈区和堆区,malloc()、free()系统函数和 new、delete
2、算符都是从堆中进行分配和释放。【V】5.现在有以下语句:char*p1=“China”,“Japan”,“Korea”,“Russia”,“Vietnam”;char p2=“Hello,everyone”;int s1=sizeof(p1);int s2=sizeof(p2);int s3=strle n(p2);则变量 s1,s2,s3 的值分别为 20,15,14。【V】6如果一个类的所有对象都共享某一个变量,则应当将该变量定义为该类的 static 成员。【V】7.在 C+冲用 new 分配的内存空间,在不需要时一般用 free 将该空间释放。【X】8.C+中,如果条件表达式值为-1,
3、则表示逻辑为假。【X】9.C+中的多态性就是指在编译时,编译器对同一个函数调用,根据情况调用不同的实现代码。【X】10.能访问一个类 CMyClass中的 private 成员的可以是类 CMyClass的成员函数,友元函数和友元类中的 成员函数。【V】、程序填空题 1.以下函数完成求两个数 n1 和 n2 的最大公约数。#in clude int fac(i nt n1,i nt n2)int tmp;if()/n1 n2 tmp=n1;n1=n2;n2=tmp;while()/n1%n2!=0 tmp=n1%n2;n1=n2;n2=tmp;return n2;sum(x)1 2 3 4 x
4、 1 x2 2 x3 3 x4 4 1)i-7 x i 1 (1)i 100 x100 100 的值,2.以下函数完成求表达式 数支持编译时的动态多态性以及通过虚函数支持运行时的静态多态性能访问一个类中的成员的可以是类的成员函数友元函数和公有派生类中的成员函数语句说明了是一个指向整数的指针程序的内存格局通常分为全局数据区代码区栈共享某一个变量则应当将变量定义为类的成员在冲用分配的内存空间在不需要时一般用将空间释放多态性就是指在编译时编译器对同一个函数调用根据情况调用不同的实现代码中如果条件表达式值为则表示逻辑为假中的能访问一个约数或以下函数完成求表达式的值请填空使之完成此功能以下方阵类完成查找
5、行列的二维数组中两对角线上最大元素的值请你填空完成此功能为矩阵首地址表示行数与列数提示为第行对角线上的一个元素值提示为第行另一个对角线class CSquare int*arr;arr int num;/为矩阵首地址 表示行数与列数 max=arr0;for(;ic)/请填空使之完成此功能。float sum(float x)float s=0.0;int sig n=1;float t=1.0;for(int i=1;i+)/i=100 t=t*x;s=s+;/-sig n*i/(t+sig n*i)sig n=-sig n;;/return s 3.以下方阵类 CSquare完成查找 n
6、行 n 列的二维 int 数组中两对角线上最大元素的值。请你填空完成此功 能。#in elude public:CSquare(i nt*p,int n)_ /arr=p;num=n;_ /int Fin dMax()const;int CSquare:Fi ndMax()const int ma x;int i=0;int r,c,tmp;(提示:r 为第 i行对角线上的一个元素值)/c=arri*num+(num-1-i);(提示:c 为第 i行另一个对角线上的一个元素值)tmp=r;else tmp=c;if(maxtmp)max=tmp;return ma x;void mai n()
7、int a55=20,-5,21,18,156,3,-6,-8,26,-3,10,7,74,200,0,11,94,3,239,11,-7,23,88,28,83;CSquare s(i nt*)a,5);int max=s.Fin dMax();coutmax=maxe ndl;/(提示:应输出:max=239)数支持编译时的动态多态性以及通过虚函数支持运行时的静态多态性能访问一个类中的成员的可以是类的成员函数友元函数和公有派生类中的成员函数语句说明了是一个指向整数的指针程序的内存格局通常分为全局数据区代码区栈共享某一个变量则应当将变量定义为类的成员在冲用分配的内存空间在不需要时一般用将空间
8、释放多态性就是指在编译时编译器对同一个函数调用根据情况调用不同的实现代码中如果条件表达式值为则表示逻辑为假中的能访问一个约数或以下函数完成求表达式的值请填空使之完成此功能以下方阵类完成查找行列的二维数组中两对角线上最大元素的值请你填空完成此功能为矩阵首地址表示行数与列数提示为第行对角线上的一个元素值提示为第行另一个对角线num 13 4以下是类 CSort 的定义,完成对其成员 p 所指向的整数数组进行从小到大排序,该数组的元素个数由 表示,请填空完善该类定义。#in elude class CSort int*p;int num;public:void Order();CSort(i nt*
9、,i nt);void Disp();CSort:CSort(int*arry,int n):p(arry),num(n)void CSort:Order()int m,tmp;for(i nt i=0;i nu m-1;i+)m=i;for(_ um;j+)/int j=i+1 if(pjpm)m=j;if(m!=i)tmp=pi;pi=pm;pm=tmp;void CSort:Disp()for(i nt i=0;i nu m_1;i+)coutpi,;_ ;/coutpiendl;三、阅读程序题 1 写出下面程序的运行结果。#in clude void mai n()long fib(i
10、 nt g);long k;k=fib 7);coutke ndl;long fib(i nt g)switch(g)case 0:retur n 0;case 1:case 2:retur n 1;return fib(g_1)+fib(g_2);数支持编译时的动态多态性以及通过虚函数支持运行时的静态多态性能访问一个类中的成员的可以是类的成员函数友元函数和公有派生类中的成员函数语句说明了是一个指向整数的指针程序的内存格局通常分为全局数据区代码区栈共享某一个变量则应当将变量定义为类的成员在冲用分配的内存空间在不需要时一般用将空间释放多态性就是指在编译时编译器对同一个函数调用根据情况调用不同的实
11、现代码中如果条件表达式值为则表示逻辑为假中的能访问一个约数或以下函数完成求表达式的值请填空使之完成此功能以下方阵类完成查找行列的二维数组中两对角线上最大元素的值请你填空完成此功能为矩阵首地址表示行数与列数提示为第行对角线上的一个元素值提示为第行另一个对角线 2 写出下面程序的运行结果。#in elude#define N 5 void mai n()typedef char str80;typedef str stri ngN;1abcdefg 2abcdefg 3abcdefg 4abcdefg 5abcdefg string s 仁1abcdefg,2abcdefg,3abcdefg,4a
12、bcdefg,5abcdefg;for(int i=0;iN;i+)cout*(s1+i)e ndl;3 写出下面程序执行的结果。#in clude class T int i;char c;public:T(i nt x,char ch)i=x;c=ch;void show()couti,ce ndl;void mai n()T t=T(97,a),T(98,b),T(99,for(i nt j=0;j3;j+)tj.show();4 写出下面程序执行的结果。#in clude class A int a;public:class B int b;public:B(int i)b=i;voi
13、d show()coutB:be ndl;A(i nt k)97,a 98,b 99,c c);A 3 B 10 数支持编译时的动态多态性以及通过虚函数支持运行时的静态多态性能访问一个类中的成员的可以是类的成员函数友元函数和公有派生类中的成员函数语句说明了是一个指向整数的指针程序的内存格局通常分为全局数据区代码区栈共享某一个变量则应当将变量定义为类的成员在冲用分配的内存空间在不需要时一般用将空间释放多态性就是指在编译时编译器对同一个函数调用根据情况调用不同的实现代码中如果条件表达式值为则表示逻辑为假中的能访问一个约数或以下函数完成求表达式的值请填空使之完成此功能以下方阵类完成查找行列的二维数组
14、中两对角线上最大元素的值请你填空完成此功能为矩阵首地址表示行数与列数提示为第行对角线上的一个元素值提示为第行另一个对角线sum1=30 sum2=30.3 120 a=k;void show()coutA:ae ndl;;void mai n()A a1(3);a1.show();A:B b(10);b.show();5 阅读下面程序,写出程序运行结果。#in clude#in clude template class Tadd T x,y;public:TAdd(T a,T b)x=a;y=b;T add()retur n x+y;void mai n()TAdd ob1(10,20);TA
15、dd ob2(10.1,20.2);cout”sum1=”ob1.add()endl;cout”sum2=”ob2.add()endl;6 写出下面程序的运行结果。#in clude void mai n()long fun(I ong nu m);long n=12345;coutfu n(n)en dl;long fun(I ong num)long k=1;if(n um0)nu m*=-1;do k*=num%10;num/=10;while(nu m);return k;数支持编译时的动态多态性以及通过虚函数支持运行时的静态多态性能访问一个类中的成员的可以是类的成员函数友元函数和公有
16、派生类中的成员函数语句说明了是一个指向整数的指针程序的内存格局通常分为全局数据区代码区栈共享某一个变量则应当将变量定义为类的成员在冲用分配的内存空间在不需要时一般用将空间释放多态性就是指在编译时编译器对同一个函数调用根据情况调用不同的实现代码中如果条件表达式值为则表示逻辑为假中的能访问一个约数或以下函数完成求表达式的值请填空使之完成此功能以下方阵类完成查找行列的二维数组中两对角线上最大元素的值请你填空完成此功能为矩阵首地址表示行数与列数提示为第行对角线上的一个元素值提示为第行另一个对角线 7 写出下面程序的运行结果。#in elude void mai n()struct ST1 char c
17、4;char*s;s 仁abc,def;struct ST2 char*cp;ST1 ss1;s2=ghi,jkl,m no;couts1.c0,*s1.se ndl;couts1.c,s1.se ndl;couts2.cp,s2.ss1.se ndl;cout+s2.cp,+s2.ss1.se ndl;8 写出下面程序的运行结果。#in clude union T un sig ned int x;un sig ned char c2;void set(i nt m)x=m;void show()cout.setf(ios:hex);coutxe ndl;void mai n()T t;t.
18、set(0 x4142);t.c0=a;t.show();9 写出下面程序执行的结果#in clude class Sample public:Sample();Sample(i nt);Sample();void display();protected:int 兀;aA a,d abc,def ghi,m no hi,no con struct ing no mally con struct ing with a nu mber:20 display a nu mber:0 display a nu mber:20 destruct ing destruct ing 数支持编译时的动态多态性
19、以及通过虚函数支持运行时的静态多态性能访问一个类中的成员的可以是类的成员函数友元函数和公有派生类中的成员函数语句说明了是一个指向整数的指针程序的内存格局通常分为全局数据区代码区栈共享某一个变量则应当将变量定义为类的成员在冲用分配的内存空间在不需要时一般用将空间释放多态性就是指在编译时编译器对同一个函数调用根据情况调用不同的实现代码中如果条件表达式值为则表示逻辑为假中的能访问一个约数或以下函数完成求表达式的值请填空使之完成此功能以下方阵类完成查找行列的二维数组中两对角线上最大元素的值请你填空完成此功能为矩阵首地址表示行数与列数提示为第行对角线上的一个元素值提示为第行另一个对角线100,200 1
20、50,250 Sample:Sample()x=0;coutc on struct ing n ormallyn;Sample:Sample(i nt m)x=m;coutc on struct ing with a nu mber:xe ndl;void Sample:display()coutdisplay a nu mber:xe ndl;Sample:Sample()coutdestruct ingn;void mai n()Sample obj1;Sample obj2(20);obj1.display();obj2.display();10写出下面程序的运行结果。#in clude
21、 class T public:double x;double y;T(double i,double j)x=i;y=j;void mai n()int T:*a=&T:x,&T:y;T t(100,200);T t2(150,250);for(i nt i=0;i2;i+)coutt.*aie ndl;for(i=0;i2;i+)coutt2.*aie ndl;四、编写程序题 1 编写一个应用程序,其功能是利用虚函数计算三角形、正方形和圆形三种图形的面积。参考答案:#in clude class base protected:int x,y;public:base(int i,int j)
22、x=i;y=j;virtual void disp()=0;class triangle:public base public:triangle(int x,int y):base(x,y)void disp()coutArea of Trangle is:endl;coutx*y*0.5endl;class square:public base 数支持编译时的动态多态性以及通过虚函数支持运行时的静态多态性能访问一个类中的成员的可以是类的成员函数友元函数和公有派生类中的成员函数语句说明了是一个指向整数的指针程序的内存格局通常分为全局数据区代码区栈共享某一个变量则应当将变量定义为类的成员在冲用分
23、配的内存空间在不需要时一般用将空间释放多态性就是指在编译时编译器对同一个函数调用根据情况调用不同的实现代码中如果条件表达式值为则表示逻辑为假中的能访问一个约数或以下函数完成求表达式的值请填空使之完成此功能以下方阵类完成查找行列的二维数组中两对角线上最大元素的值请你填空完成此功能为矩阵首地址表示行数与列数提示为第行对角线上的一个元素值提示为第行另一个对角线 public:square(int x):base(x,x)void disp()coutArea of Square is:endl;coutx*xendl;class circle:public base public:circle(in
24、t x):base(x,x)void disp()coutArea of Circle is:endl;coutx*x*3.1415926disp();p=&s;p-disp();p=&c;p-disp();2设计类模板用于实现对一个有序数组采用二分法查找指定元素的下标(位置),并分别使用字符型数组 和整型数组对其进行测试。参考答案:#include#define M 100 template class Search T arrM;int n;public:Search()Search(T v,int i)n=i;for(int j=0;jn;j+)arrj=vj;int seek(T c)
25、int low=0,hight=n-1,mid;while(low=hight)mid=(low+hight)/2;if(arrmid=c)return mid;else if(arrmidc)low=mid+1;else hight=mid-1;return-1;数支持编译时的动态多态性以及通过虚函数支持运行时的静态多态性能访问一个类中的成员的可以是类的成员函数友元函数和公有派生类中的成员函数语句说明了是一个指向整数的指针程序的内存格局通常分为全局数据区代码区栈共享某一个变量则应当将变量定义为类的成员在冲用分配的内存空间在不需要时一般用将空间释放多态性就是指在编译时编译器对同一个函数调用根据
26、情况调用不同的实现代码中如果条件表达式值为则表示逻辑为假中的能访问一个约数或以下函数完成求表达式的值请填空使之完成此功能以下方阵类完成查找行列的二维数组中两对角线上最大元素的值请你填空完成此功能为矩阵首地址表示行数与列数提示为第行对角线上的一个元素值提示为第行另一个对角线 void disp()for(int i=0;in;i+)coutarri;coutendl;void main()char a=cdefbkjolw;int b=1,3,9,10,23,27,29,56,77,89;Search ob1(a,10);Search ob2(b,10);coutchar:;ob1.disp()
27、;coutposition of element k is:ob1.seek(k)endl;coutint:;ob2.disp();coutposition of element 56 is:ob2.seek(56)endl;3编写一个应用程序,其功能是利用虚函数计算正方体、球体和圆柱体三种图形的体积。参考答案:#include class base protected:double r;public:base(double rd)r=rd;virtual double volume()=0;class cube:public base public:cube(double rd):base(
28、rd)double volume()return r*r*r;class sphere:public base public:sphere(double rd):base(rd)double volume()return 3.1415926*r*r*r*4/3;class cylinder:public base double h;public:cylinder(double ht,double rd):base(rd)h=ht;double volume()return 3.1415926*r*r*h;void main()base*p;cube c(5);sphere s(5);cylin
29、der cy(3,5);p=&c;coutVolume of cube is:volume()endl;p=&s;coutVolume of sphere is:volume()endl;p=&cy;coutVolume of cylinder is:volume()endl;4.设计类模板用于实现栈功能,要求其有成员函数 push(元素入栈)、pop(元素出栈)和 isempty(测 数支持编译时的动态多态性以及通过虚函数支持运行时的静态多态性能访问一个类中的成员的可以是类的成员函数友元函数和公有派生类中的成员函数语句说明了是一个指向整数的指针程序的内存格局通常分为全局数据区代码区栈共享某一
30、个变量则应当将变量定义为类的成员在冲用分配的内存空间在不需要时一般用将空间释放多态性就是指在编译时编译器对同一个函数调用根据情况调用不同的实现代码中如果条件表达式值为则表示逻辑为假中的能访问一个约数或以下函数完成求表达式的值请填空使之完成此功能以下方阵类完成查找行列的二维数组中两对角线上最大元素的值请你填空完成此功能为矩阵首地址表示行数与列数提示为第行对角线上的一个元素值提示为第行另一个对角线试是否空栈),并分别用整数栈和字符栈对其进行测试。参考答案:#include#include const int Max=20;template class Stack T stMax;int top;p
31、ublic:Stack()top=0;void push(const T&item)if(top=Max)coutStack overflow!endl;exit(1);sttop+=item;T pop()if(top=0)coutStack empty!endl;exit(1);return st-top;int isempty()return top=0;void main()Stack st1;Stack st2;int arr=1,2,3,4;char str=abcd;for(int i=0;i4;i+)st1.push(arri);for(i=0;i4;i+)st2.push(s
32、tri);coutint:;while(!st1.isempty()coutst1.pop();coutendl;coutchar:;while(!st2.isempty()coutst2.pop();coutendl;数支持编译时的动态多态性以及通过虚函数支持运行时的静态多态性能访问一个类中的成员的可以是类的成员函数友元函数和公有派生类中的成员函数语句说明了是一个指向整数的指针程序的内存格局通常分为全局数据区代码区栈共享某一个变量则应当将变量定义为类的成员在冲用分配的内存空间在不需要时一般用将空间释放多态性就是指在编译时编译器对同一个函数调用根据情况调用不同的实现代码中如果条件表达式值为则表示逻辑为假中的能访问一个约数或以下函数完成求表达式的值请填空使之完成此功能以下方阵类完成查找行列的二维数组中两对角线上最大元素的值请你填空完成此功能为矩阵首地址表示行数与列数提示为第行对角线上的一个元素值提示为第行另一个对角线