文档章节

感觉不错的一些笔试题

刘大神
 刘大神
发布于 2016/07/08 09:37
字数 1101
阅读 19
收藏 0

1.试写出程序结果:

int  a=4;

int  &f(int  x)

{    a=a+x;

      return  a;

}

int main(void)

{    int   t=5;

     cout<<f(t)<<endl;  a = 9

    f(t)=20;             a = 20

    cout<<f(t)<<endl;     t = 5,a = 20  a = 25

     t=f(t);                a = 30 t = 30

    cout<<f(t)<<endl;  }    t = 60

}

 

 

2.

char str1[] = "abc";
char str2[] = "abc";

const char str3[] = "abc";
const char str4[] = "abc";

const char *str5 = "abc";
const char *str6 = "abc";

char *str7 = "abc";
char *str8 = "abc";

cout << ( str1 == str2 ) << endl;//0  分别指向各自的栈内存
cout << ( str3 == str4 ) << endl;//0  分别指向各自的栈内存
cout << ( str5 == str6 ) << endl;//1指向文字常量区地址相同

cout << ( str7 == str8 ) << endl;//1指向文字常量区地址相同

结果是:0 0 1 1

解答:str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。

 

 

3.

int i = 1;
int j = i++;
if((i>j++) && (i++ == j)) i+=j;

答:
i = 5

 

4.

输出下面程序结果。

#include <iostream.h>

class A
{
public:
virtual void print(void)
{
cout<<"A::print()"<<endl;
}
};
class B:public A
{
public:
virtual void print(void)
{
cout<<"B::print()"<<endl;
};
};
class C:public B
{
public:
virtual void print(void)
{
cout<<"C::print()"<<endl;
}
};
void print(A a)
{
a.print();
}
void main(void)
{
A a, *pa,*pb,*pc;
B b;
C c;
pa=&a;
pb=&b;
pc=&c;
a.print();
b.print();
c.print();
pa->print();
pb->print();
pc->print();
print(a);
print(b);
print(c);
}

A:
A::print()
B::print()
C::print()
A::print()
B::print()
C::print()
A::print()
A::print()
A::print()

 

 

 

5.

void GetMemory(char *p){
p=(char *)malloc(100);
}
void Test(void){
char *str=NULL;
GetMemory=(str);
strcpy(str,"hello world");
printf(str);
}

A:错误--参数的值改变后,不会传回
GetMemory并不能传递动态内存,Test函数中的 str一直都是 NULL。
strcpy(str, "hello world");将使程序崩溃。

修改如下:
char *GetMemory(){
char *p=(char *)malloc(100);
return p;
}
void Test(void){
char *str=NULL;
str=GetMemory(){
strcpy(str,"hello world");
printf(str);
}

6.总结static的应用和作用?
答:(1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
(2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;
(3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;
(4)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;
(5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。

 


7.  总结const的应用和作用?
答:(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;
(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;
(3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;
(4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;
(5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。

8. 已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数 strcpy。

答案:
char *strcpy(char *strDest, const char *strSrc)
{
if ( strDest == NULL || strSrc == NULL)
return NULL ;
if ( strDest == strSrc)
return strDest ;
char *tempptr = strDest ;
while( (*strDest++ = *strSrc++) != ‘/0’)
;
return tempptr ;
}

9. 已知String类定义如下:

class String
{
public:
String(const char *str = NULL); // 通用构造函数
String(const String &another); // 拷贝构造函数
~ String(); // 析构函数
String & operater =(const String &rhs); // 赋值函数
private:
char *m_data; // 用于保存字符串
};

尝试写出类的成员函数实现。

答案:

String::String(const char *str)
{
   if ( str == NULL ) //strlen在参数为NULL时会抛异常才会有这步判断
     {
       m_data = new char[1] ;
       m_data[0] = '/0' ;
     }
   else
    {
       m_data = new char[strlen(str) + 1];
       strcpy(m_data,str);
    }

}

String::String(const String &another)
{
    m_data = new char[strlen(another.m_data) + 1];
    strcpy(m_data,other.m_data);
}

String& String::operator =(const String &rhs)
{
    if ( this == &rhs)
        return *this ;
    delete []m_data; //删除原来的数据,新开一块内存
    m_data = new char[strlen(rhs.m_data) + 1];
    strcpy(m_data,rhs.m_data);
    return *this ;
}

String::~String()
{
    delete []m_data ;
}

© 著作权归作者所有

上一篇: 有趣的redis
刘大神
粉丝 8
博文 21
码字总数 18133
作品 0
朝阳
高级程序员
私信 提问
秋招·完

秋招就快结束了,也该结束这个忙碌里决定未来的日子。虽然我的秋招结束也接近一个月了,在现在才回忆这几个月的忙碌。 想想秋招,我第一份简历投递是在七月二十几日,好像是投递的是阿里。那...

小浊微清
2017/11/08
0
0
一场让我持续懵比的面试

前言 今天面试回来,已经是点。突然想去网吧写这一篇面试总结。今天面了家,感觉还不错。同时也感谢掘金交流群、开发就业交流群、图灵技术交流群里面的大佬对我的鼓励。 DNA.png 第一家 XX科...

cmazxiaoma
2017/11/29
0
0
我过去的一年考研路与未来的半年。

版权声明:本文为博主原创文章,转载请标明出处:http://blog.csdn.net/leafagem https://blog.csdn.net/LeafageM/article/details/89255633 考研路上的一年。 我算了算大概也是去年这个时候...

繁城落叶
04/12
0
0
(转)谈谈我的面经(华为、锐捷、十所、百度、腾讯、360、建行、EMC)

谈谈我的面经(华为、锐捷、十所、百度、腾讯、360、建行、EMC) 首先,感谢那些默默奉献出自己宝贵面试经验以及面试题库的童靴,你们的经验和题库让我得到很多有价值的信息,也得到丰厚了回...

颜建海
2014/07/06
0
3
[转载]9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路

1,简介 毕业答辩搞定,总算可以闲一段时间,把这段求职经历写出来,也作为之前三个半月的求职的回顾。 首先说说我拿到的offer情况: 微软,3面->终面,搞定 百度,3面->终面,口头offer 搜狗...

蟋蟀哥哥
2013/01/10
8.4K
50

没有更多内容

加载失败,请刷新页面

加载更多

重定向又是什么“垃圾”——教你再分类

  前言:之前写了几篇JSP的博客,现在又回过头来看Servlet,温故而知新,再回顾回顾,总会有收获的。以前学习Servlet感觉内容很多,现在看的时候,其实也没多少东西,只需知道Servlet的生命...

SEOwhywhy
13分钟前
0
0
一图胜千言!这10种可视化技术你必须知道

全文共4549字,预计学习时长9分钟 图片来源:Willian Justen deVasconcellos on Unsplash 相比于浩如烟海的数据表格,大部分人还是更喜欢视觉资料,这一点已不足为奇。也是出于这个原因,人们...

读芯术
17分钟前
1
0
Spring Boot 自动配置(auto-configurtion) 揭秘

本章,我们为你揭秘Spring Boot自动配置(Auto Configuration)运行机制,谈到auto-configuration,肯定离不开@EnableAutoConfiguration注解。 package org.springframework.boot.autoconfi...

爱编程的浪子
23分钟前
0
0
RabbitMQ延迟消息的延迟极限是多少?

之前在写Spring Cloud Stream专题内容的时候,特地介绍了一下如何使用RabbitMQ的延迟消息来实现定时任务。最近正好因为开发碰到了使用过程中发现,延迟消息没有效果,消息直接就被消费了的情...

程序猿DD
23分钟前
2
0
MySQL知识库语雀

类型:所有 MySQL知识库 MySQL知识库 06-05 20:57 近期阅读文章 近期已读或者未读文章列表 03-08 10:49 日常脚本 这里是平时工作会用到的一些常用的脚本,作为统一管理 03-08 05:09 培训 03...

rootliu
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部