面试-先到面试网(mian4.com)查询面试公司相关信息招聘会面试网QQ交流群:141667671  登录 快速注册 帮助

搜公司

搜职位

加入分享工资待遇

免费分享12.0000家公司的待遇、评论、面试及工作环境信息!

面试网笔试深圳创维RGB电子有限公司笔试软件开发笔试
深圳创维RGB电子有限公司软件开发笔试试题及答案:
这是当时面创维数字的笔试题,题目比较简单,只涉及到了基本的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、#include 和 #include “filename.h” 有什么区别?(5分)

答:对于#include ,编译器从标准库路径开始搜索 filename.h

对于#include “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连接交换指定符号extern“c”来解决名字匹配问题。

四、有关内存的思考题(每小题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::operate =(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;
}



以下是网友对深圳创维RGB电子有限公司软件开发笔试试题及答案的回答:

报歉,目前还没有相关答案。我来抢答案?
  • 当前共有0条记录,每页0条,当前0/0
  • 上一页
  • 下一页
中南财经政法大学成教 武汉大学成教 武汉理工大学成教 武汉科技大学成教 华中农业大学成教 湖北工业大学成教 湖北中医药大学成教 武汉成人高考网 孝感成人高考网 荆州成人高考网 咸宁成人高考网 宜昌成人高考网 襄阳成人高考网 十堰成人高考网 武汉自考网 黄冈自考网 宜昌自考网 襄阳自考网 十堰自考网 湖北成人高考报名网 湖北自考报名网 湖北大学成教 湖北工业大学成教 湖北中医药大学成教 华中农业大学成教 武汉大学成教网 武汉科技大学成教 武汉理工大学成教 中南财经政法大学成教 上海成考网 上海自考网 中南财经政法大学自考 中南财经政法大学自考 华中师范大学自考招生网 武汉大学自考招生网 武汉大学自考专升本 武汉理工大学自考 湖北大学自考 华中农业大学自考 湖北中医药大学自考 湖北工业大学自考 华中师范大学自考招生网 湖北中医药大学成教 湖北中医药大学成教 武汉理工大学成教 武汉科技大学成教 武汉大学成教 湖北工业大学成教 湖北大学成教 华中农业大学成教 中南财经政法大学成教 华中师范大学成教 湖北中医药大学自考 武汉理工大学自考 武汉大学自考 湖北工业大学自考 湖北大学自考 华中农业大学自考 中南财经政法大学自考 华中师范大学自考
快捷答题卡

昵称:

答案:

(按Ctrl+Enter可快速提交)