c++软件开发笔试题目
学习啦在线学习网 C++代码· C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。下面就由学习啦小编为大家介绍一下c++软件开发笔试题目的文章,欢迎阅读。
c++软件开发笔试题目篇1
1、(4分)用变量a给出下面的定义
学习啦在线学习网 a) 一个整型数;
b)一个指向整型数的指针;
学习啦在线学习网 c)一个指向指针的指针,它指向的指针是指向一个整型数;
d)一个有10个整型的数组;
e)一个有10个指针的数组,该指针是指向一个整型数;
f)一个指向有10个整型数数组的指针;
g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数;
h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数
答案:
a)int a
学习啦在线学习网 b)int *a;
学习啦在线学习网 c)int **a;
d)int a[10];
学习啦在线学习网 e)int *a [10];
学习啦在线学习网 f) int (*a)[10]
g)int (*a)(int)
h) int( *a[10])(int)
2、(4分)请写出以下语句的输出结果:
Int i=43;
Int j=5;
学习啦在线学习网 Double f=25.45181;
学习啦在线学习网 a) printf(“i=%d,j=%d,f=%3.2f”,i,j,f);
b) printf(“i=%x,j=%06d,i/j=%d”,i,j,i/j);
答案:
A)i=43,j=5,f=25.45
(说明:本来应该输出最小3位有效数字,25.5,但是由于限定了2位小数,所以强制有2位小数,有效数字的个数就起不到强制作用了。如果是%3.1,则输出为25.5)
B)i=2B ,j=000005,i/j=8
(%x显示的是一个无符号的0x 16进制的整数,%06d输出的是6位数,不够6位数,前面补0,i/j两个整数相除,只取商的整数值)
3、(2分)请完成以下宏定义:
a)用预处理指令#define 声明一个常数,用以表明1年中有多少个秒(忽略闰年问题) b)写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个
答案:
a)#define SECONDS (365*24*60*60)UL
学习啦在线学习网 b) #define MIN(a,b) ((A)<(B)?(A):(B))
扩展:MAX宏 #define MAX ((A)>(B)?(A):(B))
学习啦在线学习网 ABS宏 #define ABS (((X)>0)?(X):(-(X)))
4、(6分)以下为32为windows下的c++程序,请计算:
a)
char str[]=”hello”;
学习啦在线学习网 char *p=str;
请计算:
sizeof(str)=6
sizeof(p)=4
strlen(p)=5
答案:6,字符串数组以
c++软件开发笔试题目
C++代码· C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。下面就由学习啦小编为大家介绍一下c++软件开发笔试题目的文章,欢迎阅读。
c++软件开发笔试题目篇1
1、(4分)用变量a给出下面的定义
a) 一个整型数;
b)一个指向整型数的指针;
学习啦在线学习网 c)一个指向指针的指针,它指向的指针是指向一个整型数;
学习啦在线学习网 d)一个有10个整型的数组;
e)一个有10个指针的数组,该指针是指向一个整型数;
f)一个指向有10个整型数数组的指针;
g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数;
h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数
答案:
a)int a
学习啦在线学习网 b)int *a;
c)int **a;
学习啦在线学习网 d)int a[10];
e)int *a [10];
学习啦在线学习网 f) int (*a)[10]
学习啦在线学习网 g)int (*a)(int)
h) int( *a[10])(int)
2、(4分)请写出以下语句的输出结果:
Int i=43;
学习啦在线学习网 Int j=5;
Double f=25.45181;
学习啦在线学习网 a) printf(“i=%d,j=%d,f=%3.2f”,i,j,f);
b) printf(“i=%x,j=%06d,i/j=%d”,i,j,i/j);
答案:
A)i=43,j=5,f=25.45
学习啦在线学习网 (说明:本来应该输出最小3位有效数字,25.5,但是由于限定了2位小数,所以强制有2位小数,有效数字的个数就起不到强制作用了。如果是%3.1,则输出为25.5)
B)i=2B ,j=000005,i/j=8
(%x显示的是一个无符号的0x 16进制的整数,%06d输出的是6位数,不够6位数,前面补0,i/j两个整数相除,只取商的整数值)
3、(2分)请完成以下宏定义:
a)用预处理指令#define 声明一个常数,用以表明1年中有多少个秒(忽略闰年问题) b)写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个
答案:
a)#define SECONDS (365*24*60*60)UL
学习啦在线学习网 b) #define MIN(a,b) ((A)<(B)?(A):(B))
扩展:MAX宏 #define MAX ((A)>(B)?(A):(B))
学习啦在线学习网 ABS宏 #define ABS (((X)>0)?(X):(-(X)))
4、(6分)以下为32为windows下的c++程序,请计算:
a)
char str[]=”hello”;
学习啦在线学习网 char *p=str;
请计算:
学习啦在线学习网 sizeof(str)=6
sizeof(p)=4
学习啦在线学习网 strlen(p)=5
答案:6,字符串数组以\0(空格为结尾,所以str数组空间大小为5+1)
4,计算的是指针的长度。
5,strlen函数区的字符指针str的长度,不包括空字符。
b)
学习啦在线学习网 void func(char str[100])
{
Void *p=malloc(100);
}
请计算:
sizeof(str)=100,:表示在内存中预分配的内存大小。
sizeof (p)=4
c)
int a[3]={1,2,3};
int b=sizeof(a)/sizeof(a[0]); sizeof(a)求的是数组的大小。
请计算:
b=3,对的。
学习啦在线学习网 5、(2分) 设有定义:int n=0,*p=&n,**q=&p; 则以下选项中,正确的赋值语句是(d) a)p=1; b)*q=2; c)q=p; d)*p=5;
(c)改成q=&p; 才对。
6、(2分)const关键字的用途?(至少说明两种)
答案:
(1)可以定义 const 常量
学习啦在线学习网 (2)const 可以修饰函数的参数、返回值,甚至函数的定义体。被const 修饰的东 西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
学习啦在线学习网 (3)const可以用来修饰指针变量,控制指针变量的存取规则。
c++软件开发笔试题目篇2
学习啦在线学习网 1、(2分)typedef的c语言中频繁用以声明一个已经存在的数据类型的同义词。也可以用以预处理器做类似的事情。例如:
#define dps struct s*
Typedef struct s * tps;
学习啦在线学习网 以上两种情况的意图都是要定义dps和tps作为一个指向结构s指针。哪种方法更好一些呢?(如果有的话)为什么? 考虑安全性还是用typedef好,宏定义在编译时是不检查的,只是简单替换,而typedef编译时要检查的 typedef,而且typedef,define并非等价,如#define string1 char *
typedef char *string2;第二种才能达到预想效果, string1 a,b;
得到的b是char
define是做替换的,typedef 则是重新定义一种数据类型的。可以向int型一样使用的。
#define FIND(struct,e) (size_t) &(((struct*)0)->e)
学习啦在线学习网 typedef是语句( 以';'结尾)
学习啦在线学习网 Typedef。它在自己的作用域内给一个已经存在的类型一个别名
2、(8分) 以下是一组有关内存知识的问题,请仔细看题,回答:
学习啦在线学习网 Void GetMemory(char *p)
{
P=(char *)malloc(100);
}
学习啦在线学习网 Void Test(void)
{
学习啦在线学习网 Char *str=Null;
GetMemory(str);
Strcpy(str,”hello world”);
Printf(str);
}
学习啦在线学习网 请问运行Test函数会有什么样的结果?
学习啦在线学习网 a)__________程序崩溃,运行时错误___________________________
char *GetMemory(void)
{
Char p[]=”hello world”);
Return p;
}
学习啦在线学习网 Void Test(void)
{
学习啦在线学习网 Char *str=NULL;
学习啦在线学习网 Str=GetMemory();
Printf(str);
}
学习啦在线学习网 请问运行Test函数会有什么结果?
b)_______________ hello world ________________________________
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函数会有什么结果?
学习啦在线学习网 c)_______ hello __________________________________________
void Test(void)
{
Char *str=(char *)malloc(100);
Strcpy(str,”hello”);
Free(str);
If(str!=NULL)
{
Strcpy(str,”world”);
Printf(str);
}
}、
请问运行test函数会有什么样的结果?
d)_______程序崩溃:因为释放str指针后,没有将指针置为null,所以指针变为野指针了。再执行cpy时会因为找不到指针的指向而导致程序崩溃,请编程时,注意这一点。 __________________________________________
3、(6分)请写出以下程序的输出结果:
Class A
{
Public:
A()
学习啦在线学习网 { Printf(“A constructed.\n”);}
学习啦在线学习网 Virtual ~A()
学习啦在线学习网 {printf(“A deconstructed.\n”);}
学习啦在线学习网 Virtual void Fn()
学习啦在线学习网 {printf(“A fn called.\n”);} };
Class B:public A
{
Public:
B()
{printf(“B constructed.\n”);} Virtual ~B()
学习啦在线学习网 {printf(“B deconstructed.\n”);} Virtual void Fn()
{printf(“B fn called.\n”);} };
Class C:public B
{
Public:
C()
{printf(“C constructed.\n”);} Virtual ~C()
学习啦在线学习网 {printf(“C deconstructed.\n”);} Virtual void Fn()
{printf(“C fn called.\n”);} };
学习啦在线学习网 Void main(int argc,char* grgv[]) {
学习啦在线学习网 A *pA=new B;
If(pA!=NULL)
pA->fn();
学习啦在线学习网 B *pB=static_cast(pA);
学习啦在线学习网 If(pB!=NULL)
pB->fn();
C * pC=static_cast(pA); If(pC!=NULL)
学习啦在线学习网 pC->fn();
delete pA;
}
Answer:
学习啦在线学习网 A constructed
B constructed
B fn called
学习啦在线学习网 B fn called
B fn called
学习啦在线学习网 B deconstructed
A deconstructed
c++软件开发笔试题目篇3
1.(2分)以下说法错误的是:()
A)指针和引用作为函数参数都可以改变实参
B)指针和引用都可以在定义后任意的改变指向,引用是不可以改变的。
学习啦在线学习网 C)引用必须在创建的时候初始化,而指针则不需要
D)不能空引用,但是可以有空指针
学习啦在线学习网 2、(2分) 运算符的重载形式有两种,重载为_重载为类的内部成员函数____________和_重载为类的友元函数______________________
3、(2分) main主函数执行完毕后,是否可能会再执行一段代码?请说明理由? 可以使用注册函数让程序在推出main之后,程序终止之前执行自定义的一些代码!
全局对象的构造函数会在main 函数之前执行
学习啦在线学习网 利用atexit()函数可以在程序终止前完成一些“清理”工作——如果将指向一组函数的指针传递给atexit()函数,那么在程序退出main()函数后(此时程序还未终止)就能自动调用这组函数。在使用atexit()函数时你要注意这样两点:
main 之前:预编译 全局变量的初始化等
学习啦在线学习网 main 之后:全局变量的释放
学习啦在线学习网 main函数执行之前,主要就是初始化系统相关资源
学习啦在线学习网 mainCRTStartup中被调用的
在main之前会调用一系列初始化函数来初始化这个进程
而在main之后会调用exit(int)来进行进程的清理工作。可以用_onexit 注册一个函数
,可以用_onexit 注册一个函数,它会在main 之后执行int fn1(void), fn2(void), fn3(void), fn4 (void);
学习啦在线学习网 可能会执行一些注册过的Hook
注意,atexit()以栈的方式注册函数,后注册的函数会先执行。
_onexit和atexit()一样是以占的方式注册函数的,后注册的函数会被先执行。
学习啦在线学习网 void main( void )
4,计算的是指针的长度。
学习啦在线学习网 5,strlen函数区的字符指针str的长度,不包括空字符。
b)
学习啦在线学习网 void func(char str[100])
{
学习啦在线学习网 Void *p=malloc(100);
}
请计算:
学习啦在线学习网 sizeof(str)=100,:表示在内存中预分配的内存大小。
sizeof (p)=4
c)
int a[3]={1,2,3};
int b=sizeof(a)/sizeof(a[0]); sizeof(a)求的是数组的大小。
请计算:
b=3,对的。
5、(2分) 设有定义:int n=0,*p=&n,**q=&p; 则以下选项中,正确的赋值语句是(d) a)p=1; b)*q=2; c)q=p; d)*p=5;
(c)改成q=&p; 才对。
学习啦在线学习网 6、(2分)const关键字的用途?(至少说明两种)
答案:
学习啦在线学习网 (1)可以定义 const 常量
(2)const 可以修饰函数的参数、返回值,甚至函数的定义体。被const 修饰的东 西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
(3)const可以用来修饰指针变量,控制指针变量的存取规则。
c++软件开发笔试题目篇2
学习啦在线学习网 1、(2分)typedef的c语言中频繁用以声明一个已经存在的数据类型的同义词。也可以用以预处理器做类似的事情。例如:
#define dps struct s*
Typedef struct s * tps;
以上两种情况的意图都是要定义dps和tps作为一个指向结构s指针。哪种方法更好一些呢?(如果有的话)为什么? 考虑安全性还是用typedef好,宏定义在编译时是不检查的,只是简单替换,而typedef编译时要检查的 typedef,而且typedef,define并非等价,如#define string1 char *
typedef char *string2;第二种才能达到预想效果, string1 a,b;
学习啦在线学习网 得到的b是char
学习啦在线学习网 define是做替换的,typedef 则是重新定义一种数据类型的。可以向int型一样使用的。
#define FIND(struct,e) (size_t) &(((struct*)0)->e)
typedef是语句( 以';'结尾)
Typedef。它在自己的作用域内给一个已经存在的类型一个别名
学习啦在线学习网 2、(8分) 以下是一组有关内存知识的问题,请仔细看题,回答:
Void GetMemory(char *p)
{
P=(char *)malloc(100);
}
Void Test(void)
{
Char *str=Null;
学习啦在线学习网 GetMemory(str);
Strcpy(str,”hello world”);
Printf(str);
}
学习啦在线学习网 请问运行Test函数会有什么样的结果?
a)__________程序崩溃,运行时错误___________________________
char *GetMemory(void)
{
Char p[]=”hello world”);
Return p;
}
Void Test(void)
{
Char *str=NULL;
Str=GetMemory();
Printf(str);
}
请问运行Test函数会有什么结果?
b)_______________ hello world ________________________________
学习啦在线学习网 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函数会有什么结果?
c)_______ hello __________________________________________
void Test(void)
{
Char *str=(char *)malloc(100);
Strcpy(str,”hello”);
Free(str);
If(str!=NULL)
{
Strcpy(str,”world”);
Printf(str);
}
}、
请问运行test函数会有什么样的结果?
d)_______程序崩溃:因为释放str指针后,没有将指针置为null,所以指针变为野指针了。再执行cpy时会因为找不到指针的指向而导致程序崩溃,请编程时,注意这一点。 __________________________________________
学习啦在线学习网 3、(6分)请写出以下程序的输出结果:
Class A
{
Public:
A()
{ Printf(“A constructed.\n”);}
Virtual ~A()
{printf(“A deconstructed.\n”);}
学习啦在线学习网 Virtual void Fn()
{printf(“A fn called.\n”);} };
学习啦在线学习网 Class B:public A
{
Public:
B()
{printf(“B constructed.\n”);} Virtual ~B()
{printf(“B deconstructed.\n”);} Virtual void Fn()
学习啦在线学习网 {printf(“B fn called.\n”);} };
Class C:public B
{
Public:
C()
学习啦在线学习网 {printf(“C constructed.\n”);} Virtual ~C()
学习啦在线学习网 {printf(“C deconstructed.\n”);} Virtual void Fn()
{printf(“C fn called.\n”);} };
学习啦在线学习网 Void main(int argc,char* grgv[]) {
A *pA=new B;
学习啦在线学习网 If(pA!=NULL)
学习啦在线学习网 pA->fn();
学习啦在线学习网 B *pB=static_cast(pA);
If(pB!=NULL)
pB->fn();
C * pC=static_cast(pA); If(pC!=NULL)
学习啦在线学习网 pC->fn();
学习啦在线学习网 delete pA;
}
Answer:
A constructed
学习啦在线学习网 B constructed
学习啦在线学习网 B fn called
B fn called
学习啦在线学习网 B fn called
学习啦在线学习网 B deconstructed
A deconstructed
c++软件开发笔试题目篇3
学习啦在线学习网 1.(2分)以下说法错误的是:()
学习啦在线学习网 A)指针和引用作为函数参数都可以改变实参
学习啦在线学习网 B)指针和引用都可以在定义后任意的改变指向,引用是不可以改变的。
C)引用必须在创建的时候初始化,而指针则不需要
学习啦在线学习网 D)不能空引用,但是可以有空指针
2、(2分) 运算符的重载形式有两种,重载为_重载为类的内部成员函数____________和_重载为类的友元函数______________________
学习啦在线学习网 3、(2分) main主函数执行完毕后,是否可能会再执行一段代码?请说明理由? 可以使用注册函数让程序在推出main之后,程序终止之前执行自定义的一些代码!
学习啦在线学习网 全局对象的构造函数会在main 函数之前执行
学习啦在线学习网 利用atexit()函数可以在程序终止前完成一些“清理”工作——如果将指向一组函数的指针传递给atexit()函数,那么在程序退出main()函数后(此时程序还未终止)就能自动调用这组函数。在使用atexit()函数时你要注意这样两点:
学习啦在线学习网 main 之前:预编译 全局变量的初始化等
学习啦在线学习网 main 之后:全局变量的释放
main函数执行之前,主要就是初始化系统相关资源
mainCRTStartup中被调用的
在main之前会调用一系列初始化函数来初始化这个进程
而在main之后会调用exit(int)来进行进程的清理工作。可以用_onexit 注册一个函数
,可以用_onexit 注册一个函数,它会在main 之后执行int fn1(void), fn2(void), fn3(void), fn4 (void);
学习啦在线学习网 可能会执行一些注册过的Hook
注意,atexit()以栈的方式注册函数,后注册的函数会先执行。
学习啦在线学习网 _onexit和atexit()一样是以占的方式注册函数的,后注册的函数会被先执行。
学习啦在线学习网 void main( void )