
软件开发工程师笔试题_c++软件开发笔试题目.docx
13页软件开发工程师笔试题_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[101]) { Void *p=malloc(101); } 请计算: sizeof(str)=101,:表示在内存中预安排的内存大小 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(101); } 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,101); Strcpy(str,hello); Printf(str); } 请问运行Test函数会有什么结果? c)_______ hello __________________________________________ void Test(void) { Char *str=(char *)malloc(101); 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!=N。
