c,c 笔试题

发布 2024-04-17 03:10:11 阅读 3067

c,c++笔试题:

一道c语言笔试题。

设一数据库人员档案表为如下结构:name(姓名)、address(地址)、teleno (**号码)、image (相片数据);存储长度:8bytes、20bytes、12bytes、变长的二进制数据;若将数据库中的档案记录信息存入文件,其中相片数据信息数据可能或有或无,且即使有,数据信息亦不定长。

问题:每一记录存储于文件时,其相片数据要求按它的实际长度来存放,试设计一数据结构,并解释各成员变量含义。

一些c语言笔试题。

一、请填写bool , float, 指针变量与“零值”比较的 if 语句。(10分)

1. 请写出 bool flag 与“零值”比较的 if 语句。(3分)

标准答案:if ( flag )

if ( flag )

如下写法均属不良风格,不得分。

if (flag ==true)

if (flag ==1 )

if (flag ==false)

if (flag ==0)

2. 请写出 float x 与“零值”比较的 if 语句。(4分)

标准答案示例:

const float epsinon = 0.00001;

if ((x >=epsinon) &x <=epsinon)

不可将浮点变量用“==或“!=与数字比较,应该设法转化成“>=或“<=此类形式。

如下是错误的写法,不得分。

if (x ==0.0)

if (x !=0.0)

c/c++笔试题来自。

3. 请写出 char *p 与“零值”比较的 if 语句。(3分)

标准答案:if (p ==null)

if (p !=null)

如下写法均属不良风格,不得分。

if (p ==0)

if (p !=0)

if (p)

if (!二、以下为windows nt下的32位c++程序,请计算sizeof的值(10分)

char str hello” ;

char *p = str ;

int n = 10;

1. 请计算。

sizeof (str ) 6 (2分)

sizeof ( p ) 4 (2分)

sizeof ( n ) 4 (2分)

void func ( char str[100])

请计算。sizeof( str ) 4 (2分)

void *p = malloc( 100 );

请计算。sizeof ( p ) 4 (2分)

三、简答题(25分)

1、头文件中的 ifndef/define/endif 干什么用?(5分)

答:防止该头文件被重复引用。

#include 和 #include “ 有什么区别?(5分)

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

对于#include “ 编译器从用户的工作路径开始搜索

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、请简述以下两个for循环的优缺点(5分)

for (i=0; ii++)

if (condition)

dosomething();

elsedootherthing();

优点:程序简洁。

缺点:多执行了n-1次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。

if (condition)

for (i=0; ii++)

dosomething();

elsefor (i=0; ii++)

dootherthing();

优点:循环的效率高。

缺点:程序不简洁。

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

c/c++笔试题来自。

请问运行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个函数。

c/c++笔试题来自。

标准答案:/ 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’;

elseint length = strlen(str);

m_data = new char[length+1]; 若能加 null 判断则更好

strcpy(m_data, str);

/ 拷贝构造函数。

string::string(const string &other) /3分。

int length = strlen(

m_data = new char[length+1]; 若能加 null 判断则更好

strcpy(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(

m_data = new char[length+1]; 若能加 null 判断则更好。

strcpy(m_data,

/ (4)返回本对象的引用 //3分。

return *this;

SQL笔试题笔试题

家庭住址,联系 create table stu 学号int 姓名varchar 8 年龄int,性别varchar 4 家庭地址varchar 50 联系 int 历varchar 6 3 修改学生表的结构,删除一列信息,家庭住址alter table stu drop column家庭地址4 向...

笔试题 笔试题目大全

一 选择题。选择题有单项选择 双项选择和多项选择三种类型,多项选择题是选择题中难度最大的一种,它并不指定正确答案的个数,可能只有一个是正确的,也可能两个是正确的,也可能全部是正确的。二 判断题。这类试题看似简单,但如思路不对,同样会造成错误。三 填空题。填空题的答案是唯一的,要用简明 准确 完整的语...

AS笔试题

测试题。考生 rita,cathy,监考 jerry,jack,ludy 时间 2009 10 21 11 00 19 00 制度 在考试前,切断考生的网络,在考试过程中,不允许与他人讨论及向他人请教。1 写一段 判断一个数是否为素数 只有1和它自己两个因数的数为素数 2 求一个数 x 为奇数还是偶...