[公选领导笔试案例题]想要参选领导选拔的同志们,下面这一则笔试案例题是与公选有关的,本站建议大家了解一下。 案例: 日前,某地人民法院开庭审理了一起特殊的行政诉讼案:由于对政府部门数次改变小区的...+阅读
是当时面创维数字的笔试题,题目比较简单,只涉及到了基本的C语法,没有考到数据结构以及算法,试题在前面说明这套题并不能反映应聘者实际的软件开发及编程能力。
一、请填写BOOL , float, 指针变量 与零值比较的 if 语句。(10分)
请写出 BOOL flag 与零值比较的 if 语句。
if ( flag )
if ( !flag )
请写出 float x 与零值比较的 if 语句。
const float EPSINON = 0.00001;
if ((x = - EPSINON) (x = EPSINON)
不可将浮点变量用==或!=与数字比较,应该设法转化成=或=此类形式。
请写出 char *p 与零值比较的 if 语句。
if (p == NULL)
if (p != NULL)
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
char str[] = Hello ;
char *p = str ;
int n = 10;
请计算
sizeof (str ) = 6 (2分)
sizeof ( p ) = 4 (2分)
sizeof ( n ) = 4
void Func ( char str[100])
{
请计算
sizeof( str ) = 4 (2分)
}
void *p = malloc( 100 );
请计算
sizeof ( p ) = 4 (2分)
三、简答题(25分)
1、头文件中的 ifndef/define/endif 干什么用?(5分)
答:防止该头文件被重复引用。
2、&emspinclude filename.h 和 &emspinclude filename.h 有什么区别?(5分)
答:对于&emspinclude filename.h ,编译器从标准库路径开始搜索 filename.h
对于&emspinclude filename.h ,编译器从用户的工作路径开始搜索 filename.h
3、const 有什么用途?(请至少说明两种)(5分)
答:(1)可以定义 const 常量
(2)const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern C? (5分)
答:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为: void foo(int x, int y);
该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。
C++提供了C连接交换指定符号externC来解决名字匹配问题。
四、有关内存的思考题(每小题5分,共20分)
一.
void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, hello world);
printf(str);
}
请问运行Test函数会有什么样的结果?
答:试题传入GetMemory( char *p )函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的值,执行完 char *str = NULL; GetMemory( str ); 后的str仍然为NULL;
二.
char *GetMemory(void)
{
char p[] = hello world;
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test函数会有什么样的结果?
答:可能是乱码。 char p[] = hello world;
return p;
的p[]数组为函数内的局部自动变量,在函数返回后,内存已经被释放。这是许多程序员常犯的错误,其根源在于不理解变量的生存期。
三.
void GetMemory2(char **p, int num)
{
p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(str, 100);
strcpy(str, hello);
printf(str);
}
请问运行Test函数会有什么样的结果?
答:
(1)能够输出hello (2 )Test函数中也未对malloc的内存进行释放。
(3)GetMemory避免了试题1的问题,传入GetMemory的参数为字符串指针的指针,但是在GetMemory中执行申请内存及赋值语句
p = (char *) malloc( num );
后未判断内存是否申请成功,应加上: if ( *p == NULL ) {
... 进行申请内存失败处理
}
四.
void Test(void)
{
char *str = (char *) malloc(100);
strcpy(str, hello);
free(str);
if(str != NULL)
{
strcpy(str, world);
printf(str);
}
}
请问运行Test函数会有什么样的结果?
答:执行 char *str = (char *) malloc(100); 后未进行内存是否申请成功的判断;另外,在free(str)后未置str为空,导致可能变成一个野指针,应加上: str = NULL;
五、编写strcpy函数(10分)
已知strcpy函数的原型是
char *strcpy(char *strDest, const char *strSrc);
其中strDest是目的字符串,strSrc是源字符串。
(1)不调用C++/C的字符串库函数,请编写函数 strcpy
char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) (strSrc !=NULL)); 2分
char *address = strDest; 2分
while( (*strDest++ = * strSrc++) != \0 ) 2分
NULL ;
return address ; 2分
}
(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
答:为了实现链式表达式。 2分
例如 int length = strlen( strcpy( strDest, hello world) );
六、编写类String的构造函数、析构函数和赋值函数(25分)
已知类String的原型为:
class String
{
public:
String(const char *str = NULL); 普通构造函数
String(const String other); 拷贝构造函数
String(void); 析构函数
String operate =(const String other); 赋值函数
private:
char *m_data; 用于保存字符串
};
请编写String的上述4个函数。
标准答案:
String的析构函数
String::
String(void) 3分
{
delete [] m_data;
由于m_data是内部数据类型,也可以写成 delete m_data;
}
String的普通构造函数
String::String(const char *str) 6分
{
if(str==NULL)
{
m_data = new char[1]; 若能加 NULL 判断则更好
*m_data = \0;
}
else
{
int length = strlen(str);
m_data = new char[length+1]; 若能加 NULL 判断则更好
strcpy(m_data, str);
}
}
拷贝构造函数
String::String(const String other) 3分
{
int length = strlen(other.m_data);
m_data = new char[length+1]; 若能加 NULL 判断则更好
strcpy(m_data, other.m_data);
}
赋值函数
String String:perate =(const String other) 13分
{
(1) 检查自赋值 4分
if(this == other)
return *this;
(2) 释放原有的内存资源 3分
delete [] m_data;
(3)分配新的内存资源,并复制内容 3分
int length = strlen(other.m_data);
m_data = new char[length+1]; 若能加 NULL 判断则更好
strcpy(m_data, other.m_data);
(4)返回本对象的引用 3分
return *this;
}
延伸阅读:
绿盟科技笔试经验下面分享两位网友到绿盟科技笔试的经历 网友一:笔试绿盟受挫 被绿盟鄙视是肯定的了,卷子答的太差,考完了,心中只有四个字学艺不精啊! 12点开始,2点结束,卷子题量很大,好像一共27、8...
MTK笔试总结小编我很久没在本站上发表文章张了,下面就让我来跟大家谈谈我的MTK笔试心得吧! 今年年要开始找工作了,本着积累经验的目的,跑去做了下MTK的笔试题,笔试的内容主要是C++。 因为开发...
民生证券笔试经验总结一下我参加民生证券的笔试所考的题型吧!或许这对以后的求职者会有帮助。 民生证券的笔试是在中财主教学楼考的,主要分为两部分,第一部分是行测,历时一小时;第二部分为专业笔...
计算机类笔试经验下面是计算机考试类的笔经介绍 首先是要有充分的准备,我知道有很多人报考了公务员,教师招聘等考试,他们只是抱着一种试试看的心理,没怎么复习。在这里我想告诉真正想考试的人:不...
2011年质检员笔试题目以下是2011年质检员笔试题目,现分享给大家练习练习。一章 概述 1、国家验收标准:一个标准、16个规范(P9+建筑节能验收规范) 2、省验收及控制标准:住宅工程控制标准、建筑节能验收...
税法类笔试题目以下分享是笔试题目是与税法有关的,大家敬请阅读: 税法类: 不能转嫁的税的类型 矿石进口需缴税(关税,增值税) 增值税一般纳税人符合的条件 对于纳税人的要求(在中国境内有住所或者...
安信证券笔试心得下面跟大家分享的是一位网友的安信证券笔试心得。 事先在网上看到该公司只招硕博,貌似要求很高,宣讲会的时候,一个典型国企中年男士,不停地讲一些很没条理的东西,试图说服大家加...
民生证券笔试心得以下是小编参加完民生证券笔试后总结出的笔试题型!分享给大家了解一下,或许这对以后的求职者会有帮助。 民生证券的笔试是在中财主教学楼考的,主要分为两部分,第一部分是行测,历...
浪潮软件研发笔试今天下午2点小编我到浪潮去参加了笔试,笔试前填写了一份浪潮的职位申请表,很多与我简历中的内容都重复,所以填写的有些不耐烦,后面几项还有点意思。 是否可以外驻:可以 是否服从...