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 为奇数还是偶...