C++高级编程练习题(共44页).docx
《C++高级编程练习题(共44页).docx》由会员分享,可在线阅读,更多相关《C++高级编程练习题(共44页).docx(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上1 C+语言基础及过程化程序设计1.1 基础概念1. 函数声明和函数定义有什么区别?答:1) 函数声明是函数的原型,强调函数如何被使用,不包含函数的实现代码;2) 函数定义给出函数的实现代码。2. const char *p1; char * const p2;的区别答:1) const位于星号的左侧, const用来修饰指针所指向的变量,即指针指向为常量;2)const位于星号的右侧,const用来修饰指针本身,即指针本身是常量。3. delete与 delete 区别答:delete只会调用一次析构函数,而delete会调用动态分配的多个对象的析构函数4. 解释堆
2、和栈的区别答:1) 栈:由编译器自动分配释放,存放函数的参数、局部变量等。通常在超出作用域后由系统自动释放。2) 堆:一般由程序员负责分配与释放,若程序员不释放,占用的内存直到程序结束才由OS回收。5. 在什么时候需要使用“常引用”?答:如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。6. 全局变量和局部变量在内存中的区别。答:1) 全局变量储存在静态数据区,程序加载时分配并初始化,程序结束时释放;2) 局部变量在栈中,进入变量作用域后分配,超出其作用域后释放;3) 全局变量不初始化会执行缺省初始化,如整型变量缺省初始化为0,局部变量不初始化不会执行缺
3、省初始化,往往为垃圾值。7. 简述内存的分配方式。答:1) 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。2) 栈上分配,函数内的局部变量和形参在栈上分配。3) 堆上分配,动态分配,用new分配内存,用delete来释放内存。8. 指针的几种典型应用情况。int *pn;-指针数组,每个元素均为指向整型数据的指针。int (*p) n;-指向一维数组的指针,这个一维数组含有n个整型数据。int *p();-返回指向整型指针的函数。int (*p) ();-指向函数的指针,要求函数无参并返回整型。 9. 说明0、0、0、“0”的区别答:0表示整数常量,值为0;
4、0表示ASCII码值为0的字符常量;0表示ASCII码值为48的字符常量;“0”为字符串常量,其中包含0和0两个字符。10. 说明下面程序中存在的问题#includeint main()int arr10, *p=arr;int i;for( ; p*p;for(; ap;+arr)cout*arr0;return 0;答:arr为数组名,对应地址不可修改,不能应用+arr运算。11. 有如下定义,请写出访问a23元素的不同方法int a45;int (*p)5 = a;答:a23、p23、*(a2+3)、*(p2+3)、*(*(a+2)+3)、*(*(p+2)+3)1.2 阅读程序1. 写出
5、下面程序的运行结果。#include using namespace std;int main()double numOne = 2.5;int numTwo = 3;double quotient = numOne/2;coutQuotient: quotientendl;quotient = numTwo/2;coutQuotient: quotientendl;return 0;2. 写出下面程序的运行结果。#include using namespace std;int main()int number = 103;int digit, tens, hundreds;digit = n
6、umber %10;tens = (number/10)%10;hundreds = (number/100)%10;coutHundreds: hundreds, Tens: tens, Digit: digitendl;return 0;3. 运行下面的程序3次,分别输入90、78、60,写出每次程序执行的输出结果。#include using namespace std;int main()int grade;coutgrade;if(grade=85)coutExcellentn;else if(70=grade85)coutPassn;elsecoutFailn;return 0;4
7、. 写出下面程序的运行结果。#include using namespace std;bool check( int score, int baseLine)if( score = baseLine )return true;return false;bool check(int score, int baseLine = 60);int main()int score=65;if( check(score) = true)coutPassed!n;elsecoutFailed!n;if( check(score, 70) = true)coutPassed!n;elsecoutFailed!
8、n;return 0;5. 写出下面程序的运行结果。#include using namespace std;int fun(int a);double fun(double a);char fun(char a);int main()coutfun(3)endl;coutfun(3.6)endl;coutfun(A)endl;coutfun(g)=a& a=A& a=Z)result=a+32;return result;6. 写出下面程序的运行结果。#include using namespace std;int gcd(int m, int n)if(n=0)return m;retur
9、n gcd(n, m%n);int main()cout1:gcd(20,8)endl;cout2:gcd(36,64)endl;return 0;7. 写出下面程序的运行结果,假定输入Hello_123。#include using namespace std;int main()char word50;coutword;for(int i=0; wordi!=0; +i)if(wordi=a & wordi= z )wordi-= 32;coutUpper case: wordendl;return 0;8. 写出下面程序的运行结果,假定输入Hello123_World。#include
10、using namespace std;int main()char word50;coutword;int pos=0;for(int i=0; wordi!=0; +i)if(wordi9 )wordpos=wordi;+pos;wordpos=0;coutresult: wordendl;return 0;9. 写出下面程序的运行结果。#include using namespace std;int main() int i,j; for(i=0;i5;i+) for(j=i;j5;j+) cout *; coutendl; return 0;10. 写出下面程序的运行结果。#inclu
11、de using namespace std;int sum( int a, int b=1, int c=3 )return a+b+c;int main()int sum(int a, int b=3, int c=4);coutsum (2)endl;coutsum (2,5)endl;coutsum (2,3,6)endl; return 0;11. 写出下面程序的运行结果。#include using namespace std;char & elem(char *s, int n)return sn;int main()char str=HelloWorld;elem(str,1)
12、= A;coutstrendl; return 0;12. 写出下面程序的运行结果。#include using namespace std;int x=10; int main()int x=15;coutxendl; cout:xendl; return 0;13. 写出下面程序的运行结果。#include using namespace std;void xhg(int *a,int *b)int *tmp;tmp=b; b=a; a=tmp;cout*a *bendl;int main()int x(5),y(4);xhg(&x,&y);coutx yendl;return 0;14.
13、 写出下面程序的运行结果。#include using namespace std;void xhg(int &a,int &b)int tmp;tmp=b; b=a; a=tmp;couta bendl;int main()int x(5),y(4);xhg(x,y);coutx yendl;return 0;15. 写出下面程序的运行结果。#include using namespace std;int ff(int *a,int size)if(size=1)return a0;return asize-1+ff(a,size-1);int main()int a5=1,2,3,4,5;
14、cout“result:”ff(a,5)endl;return 0;16. 写出下面程序的运行结果。#include using namespace std;void f(const string& s,int n)cout1)f(s,n-1);int main()f(animal,6);coutendl;f(hello,3);return 0;17. 写出下面程序的运行结果。#include using namespace std;int func(int data,int size)int a=data0;int b=data0;for(int i=1;ia) a=datai;if(dat
15、aib) b=datai;return a-b;int main()int a=9,3,2,-1,8,0,4;coutfunc(a,7)endl;coutfunc(a+2,4)endl;return 0;18. 写出下面程序的运行结果。#include #include using namespace std;void f(const string& s,int n)cout1)f(s,n-1);int main()f(animal,6);coutendl;f(hello,3);return 0;19. 写出下面程序的执行结果。#include using namespace std;int
16、fun(int interval) int sum=0, i=0; for(i=0; i100; i+=interval) sum+=i; return sum;int main()coutResult: fun(2)endl;return 0;20. 写出下面程序的执行结果。#include using namespace std;double func( double pData , int size);int main()double array=2.2, 3.8, 6, 5.4;coutResult: func(array, 4)endl;coutResult: func(array,
17、 3)endl;return 0;double func( double pData , int size)double result=0;int i;for(i=0; isize; +i)result+=pDatai;result /= size;return result;2 面向对象程序设计2.1 基础概念1、定义形式如下的类,C+编译器自动为该类产生的四个缺省函数是什么?写出其原型。class MyClass public:void SetX(int);private:int x;答:无参构造函数,拷贝构造函数,析构函数,赋值运算符函数。MyClass();MyClass(const
18、MyClass& );MyClass();MyClass& operator=(const MyClass& );2、定义形式如下的类,写出C+编译器自动生成的拷贝构造函数和赋值运算符函数的定义。class MyClass public:void SetX(int);private:int x;答:MyClass(const MyClass& a) x=a.x; MyClass& MyClass:operator=(const MyClass& a) x=a.x; return *this; 3、拷贝构造函数在哪几种情况下会被调用?答:1)当类的一个对象去初始化该类的另一个对象时;2)如果函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 高级 编程 练习题 44
限制150内