文档详情

C++总结(HZAU)讲义.doc

发布:2017-02-09约1.74万字共22页下载文档
文本预览下载声明
1、说明上面三种描述的区别; const char *p : 是一个指向const对象的指针变量,能p++不能(*p)++ const位于星号的左侧,则const就是用来修饰指针所指向的变量 指针指向为常量; char * const p: 是一个const指针变量,能(*p)++,不能p++ const位于星号的右侧,const就是修饰指针本身,即指针本身是常量 char const *p : 是一个指向const对象的const指针变量,p++和(*p)++都不可以 2、面的函数定义是一个求阶乘(例:1*2*3*...*N)的递归调用函数。假定n 0。请填空。 long fac(int n) { long f; if (n==0) f=1; else f=( n*fac(n-1) ); return (f); } (6分) 例如: n=5 fac(5) 5*fac(4) 4*fac(3) 3*fac(2) 2*fac(1) 1*fac(0) 3、是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?   答:是的。只要在父类声明了是虚函数,继承它的子类的同名函数不加virtual修饰也是虚函数 4、编程输入一个字符串,将其逆序后输出。(使用C/C++均可)  #include iostream #include string using namespace std; int main() { string s; cins; int i; for(i=0;is.size()/2;i++) { char tmp=s[i]; s[i]=s[s.size()-i-1]; s[s.size()-i-1]=tmp; } coutsendl; couts.size()endl; return 0; } 用指针的方法,将字符串“ABCD1234efgh”前后对调显示 #include stdio.h #include string.h int main() { char str[] = ABCD1234efgh; int length = strlen(str); char * p1 = str; char * p2 = str + length - 1; while(p1 p2) { char c = *p1; *p1 = *p2; *p2 = c; ++p1; --p2; } printf(str now is %s\n,str); system(pause); return 0; } 5、下面是C语言中两种if语句判断方式。请问哪种写法更好?为什么? int n; if (n == 10) // 第一种判断方式 if (10 == n) // 第二种判断方式 第二种 第一种容易失误写成if(n=10),if判断条件理解成将10这个整型常量赋值给n,如果赋值成功,则条件表达式为真,与想要判断两个值是否相等的本意大相径庭。而且这种错误编译时并不会报错,很难被发现。写成10==n时,就算写成了10=n,因常量不能为左值,编译器会报错。 6、下面代码有什么错误? Void test1() { char string[10]; char *str1=0123456789; strcpy(string, str1); } 越界。str1等价于str1[11]={0,1,2,3,4,5,6,7,8,9,\0};string[10]应该为string[11]。 7、 C++是面向对象的语言,关注怎么解决同类问题,不关注具体实现。 C是面向过程,关注具体事件的解决(就事论事) (1)C++是对C语言的扩充,C++兼容C语言 (2)C++的源程序扩展名由C语言的.c 改为了.cpp .cc (3)C++隐藏了一些C语言的底层实现,增加了许多类库,增加了bool类型 (4)C++并加入了面向对象的机制,是一个面向对象的编程语言,而C语言是面向过程的 (5)C++用new/delete取代了malloc()/free(), 增加了构造/析构函数调用处理机制 8、编程在不用第三方参数的情况下,交换两个参数的值 #include iostream using namespace std; void swap(
显示全部
相似文档