- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C的总结(HZAU)
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(int a,int b )//使用引用可真实
文档评论(0)