c++軟件開發(fā)筆試題目
C++代碼· C++設(shè)計成靜態(tài)類型、和C同樣高效且可移植的多用途程序設(shè)計語言。下面就由學(xué)習(xí)啦小編為大家介紹一下c++軟件開發(fā)筆試題目的文章,歡迎閱讀。
c++軟件開發(fā)筆試題目篇1
1、(4分)用變量a給出下面的定義
a) 一個整型數(shù);
b)一個指向整型數(shù)的指針;
c)一個指向指針的指針,它指向的指針是指向一個整型數(shù);
d)一個有10個整型的數(shù)組;
e)一個有10個指針的數(shù)組,該指針是指向一個整型數(shù);
f)一個指向有10個整型數(shù)數(shù)組的指針;
g)一個指向函數(shù)的指針,該函數(shù)有一個整型參數(shù)并返回一個整型數(shù);
h)一個有10個指針的數(shù)組,該指針指向一個函數(shù),該函數(shù)有一個整型參數(shù)并返回一個整型數(shù)
答案:
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分)請寫出以下語句的輸出結(jié)果:
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
(說明:本來應(yīng)該輸出最小3位有效數(shù)字,25.5,但是由于限定了2位小數(shù),所以強制有2位小數(shù),有效數(shù)字的個數(shù)就起不到強制作用了。如果是%3.1,則輸出為25.5)
B)i=2B ,j=000005,i/j=8
(%x顯示的是一個無符號的0x 16進(jìn)制的整數(shù),%06d輸出的是6位數(shù),不夠6位數(shù),前面補0,i/j兩個整數(shù)相除,只取商的整數(shù)值)
3、(2分)請完成以下宏定義:
a)用預(yù)處理指令#define 聲明一個常數(shù),用以表明1年中有多少個秒(忽略閏年問題) b)寫一個“標(biāo)準(zhǔn)”宏MIN,這個宏輸入兩個參數(shù)并返回較小的一個
答案:
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,字符串?dāng)?shù)組以
c++軟件開發(fā)筆試題目
C++代碼· C++設(shè)計成靜態(tài)類型、和C同樣高效且可移植的多用途程序設(shè)計語言。下面就由學(xué)習(xí)啦小編為大家介紹一下c++軟件開發(fā)筆試題目的文章,歡迎閱讀。
c++軟件開發(fā)筆試題目篇1
1、(4分)用變量a給出下面的定義
a) 一個整型數(shù);
b)一個指向整型數(shù)的指針;
c)一個指向指針的指針,它指向的指針是指向一個整型數(shù);
d)一個有10個整型的數(shù)組;
e)一個有10個指針的數(shù)組,該指針是指向一個整型數(shù);
f)一個指向有10個整型數(shù)數(shù)組的指針;
g)一個指向函數(shù)的指針,該函數(shù)有一個整型參數(shù)并返回一個整型數(shù);
h)一個有10個指針的數(shù)組,該指針指向一個函數(shù),該函數(shù)有一個整型參數(shù)并返回一個整型數(shù)
答案:
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分)請寫出以下語句的輸出結(jié)果:
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
(說明:本來應(yīng)該輸出最小3位有效數(shù)字,25.5,但是由于限定了2位小數(shù),所以強制有2位小數(shù),有效數(shù)字的個數(shù)就起不到強制作用了。如果是%3.1,則輸出為25.5)
B)i=2B ,j=000005,i/j=8
(%x顯示的是一個無符號的0x 16進(jìn)制的整數(shù),%06d輸出的是6位數(shù),不夠6位數(shù),前面補0,i/j兩個整數(shù)相除,只取商的整數(shù)值)
3、(2分)請完成以下宏定義:
a)用預(yù)處理指令#define 聲明一個常數(shù),用以表明1年中有多少個秒(忽略閏年問題) b)寫一個“標(biāo)準(zhǔn)”宏MIN,這個宏輸入兩個參數(shù)并返回較小的一個
答案:
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,字符串?dāng)?shù)組以\0(空格為結(jié)尾,所以str數(shù)組空間大小為5+1)
4,計算的是指針的長度。
5,strlen函數(shù)區(qū)的字符指針str的長度,不包括空字符。
b)
void func(char str[100])
{
Void *p=malloc(100);
}
請計算:
sizeof(str)=100,:表示在內(nèi)存中預(yù)分配的內(nèi)存大小。
sizeof (p)=4
c)
int a[3]={1,2,3};
int b=sizeof(a)/sizeof(a[0]); sizeof(a)求的是數(shù)組的大小。
請計算:
b=3,對的。
5、(2分) 設(shè)有定義: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關(guān)鍵字的用途?(至少說明兩種)
答案:
(1)可以定義 const 常量
(2)const 可以修飾函數(shù)的參數(shù)、返回值,甚至函數(shù)的定義體。被const 修飾的東 西都受到強制保護(hù),可以預(yù)防意外的變動,能提高程序的健壯性。
(3)const可以用來修飾指針變量,控制指針變量的存取規(guī)則。
c++軟件開發(fā)筆試題目篇2
1、(2分)typedef的c語言中頻繁用以聲明一個已經(jīng)存在的數(shù)據(jù)類型的同義詞。也可以用以預(yù)處理器做類似的事情。例如:
#define dps struct s*
Typedef struct s * tps;
以上兩種情況的意圖都是要定義dps和tps作為一個指向結(jié)構(gòu)s指針。哪種方法更好一些呢?(如果有的話)為什么? 考慮安全性還是用typedef好,宏定義在編譯時是不檢查的,只是簡單替換,而typedef編譯時要檢查的 typedef,而且typedef,define并非等價,如#define string1 char *
typedef char *string2;第二種才能達(dá)到預(yù)想效果, string1 a,b;
得到的b是char
define是做替換的,typedef 則是重新定義一種數(shù)據(jù)類型的。可以向int型一樣使用的。
#define FIND(struct,e) (size_t) &(((struct*)0)->e)
typedef是語句( 以';'結(jié)尾)
Typedef。它在自己的作用域內(nèi)給一個已經(jīng)存在的類型一個別名
2、(8分) 以下是一組有關(guān)內(nèi)存知識的問題,請仔細(xì)看題,回答:
Void GetMemory(char *p)
{
P=(char *)malloc(100);
}
Void Test(void)
{
Char *str=Null;
GetMemory(str);
Strcpy(str,”hello world”);
Printf(str);
}
請問運行Test函數(shù)會有什么樣的結(jié)果?
a)__________程序崩潰,運行時錯誤___________________________
char *GetMemory(void)
{
Char p[]=”hello world”);
Return p;
}
Void Test(void)
{
Char *str=NULL;
Str=GetMemory();
Printf(str);
}
請問運行Test函數(shù)會有什么結(jié)果?
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函數(shù)會有什么結(jié)果?
c)_______ hello __________________________________________
void Test(void)
{
Char *str=(char *)malloc(100);
Strcpy(str,”hello”);
Free(str);
If(str!=NULL)
{
Strcpy(str,”world”);
Printf(str);
}
}、
請問運行test函數(shù)會有什么樣的結(jié)果?
d)_______程序崩潰:因為釋放str指針后,沒有將指針置為null,所以指針變?yōu)橐爸羔樍?。再?zhí)行cpy時會因為找不到指針的指向而導(dǎo)致程序崩潰,請編程時,注意這一點。 __________________________________________
3、(6分)請寫出以下程序的輸出結(jié)果:
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++軟件開發(fā)筆試題目篇3
1.(2分)以下說法錯誤的是:()
A)指針和引用作為函數(shù)參數(shù)都可以改變實參
B)指針和引用都可以在定義后任意的改變指向,引用是不可以改變的。
C)引用必須在創(chuàng)建的時候初始化,而指針則不需要
D)不能空引用,但是可以有空指針
2、(2分) 運算符的重載形式有兩種,重載為_重載為類的內(nèi)部成員函數(shù)____________和_重載為類的友元函數(shù)______________________
3、(2分) main主函數(shù)執(zhí)行完畢后,是否可能會再執(zhí)行一段代碼?請說明理由? 可以使用注冊函數(shù)讓程序在推出main之后,程序終止之前執(zhí)行自定義的一些代碼!
全局對象的構(gòu)造函數(shù)會在main 函數(shù)之前執(zhí)行
利用atexit()函數(shù)可以在程序終止前完成一些“清理”工作——如果將指向一組函數(shù)的指針傳遞給atexit()函數(shù),那么在程序退出main()函數(shù)后(此時程序還未終止)就能自動調(diào)用這組函數(shù)。在使用atexit()函數(shù)時你要注意這樣兩點:
main 之前:預(yù)編譯 全局變量的初始化等
main 之后:全局變量的釋放
main函數(shù)執(zhí)行之前,主要就是初始化系統(tǒng)相關(guān)資源
mainCRTStartup中被調(diào)用的
在main之前會調(diào)用一系列初始化函數(shù)來初始化這個進(jìn)程
而在main之后會調(diào)用exit(int)來進(jìn)行進(jìn)程的清理工作??梢杂胈onexit 注冊一個函數(shù)
,可以用_onexit 注冊一個函數(shù),它會在main 之后執(zhí)行int fn1(void), fn2(void), fn3(void), fn4 (void);
可能會執(zhí)行一些注冊過的Hook
注意,atexit()以棧的方式注冊函數(shù),后注冊的函數(shù)會先執(zhí)行。
_onexit和atexit()一樣是以占的方式注冊函數(shù)的,后注冊的函數(shù)會被先執(zhí)行。
void main( void )
4,計算的是指針的長度。
5,strlen函數(shù)區(qū)的字符指針str的長度,不包括空字符。
b)
void func(char str[100])
{
Void *p=malloc(100);
}
請計算:
sizeof(str)=100,:表示在內(nèi)存中預(yù)分配的內(nèi)存大小。
sizeof (p)=4
c)
int a[3]={1,2,3};
int b=sizeof(a)/sizeof(a[0]); sizeof(a)求的是數(shù)組的大小。
請計算:
b=3,對的。
5、(2分) 設(shè)有定義: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關(guān)鍵字的用途?(至少說明兩種)
答案:
(1)可以定義 const 常量
(2)const 可以修飾函數(shù)的參數(shù)、返回值,甚至函數(shù)的定義體。被const 修飾的東 西都受到強制保護(hù),可以預(yù)防意外的變動,能提高程序的健壯性。
(3)const可以用來修飾指針變量,控制指針變量的存取規(guī)則。
c++軟件開發(fā)筆試題目篇2
1、(2分)typedef的c語言中頻繁用以聲明一個已經(jīng)存在的數(shù)據(jù)類型的同義詞。也可以用以預(yù)處理器做類似的事情。例如:
#define dps struct s*
Typedef struct s * tps;
以上兩種情況的意圖都是要定義dps和tps作為一個指向結(jié)構(gòu)s指針。哪種方法更好一些呢?(如果有的話)為什么? 考慮安全性還是用typedef好,宏定義在編譯時是不檢查的,只是簡單替換,而typedef編譯時要檢查的 typedef,而且typedef,define并非等價,如#define string1 char *
typedef char *string2;第二種才能達(dá)到預(yù)想效果, string1 a,b;
得到的b是char
define是做替換的,typedef 則是重新定義一種數(shù)據(jù)類型的??梢韵騣nt型一樣使用的。
#define FIND(struct,e) (size_t) &(((struct*)0)->e)
typedef是語句( 以';'結(jié)尾)
Typedef。它在自己的作用域內(nèi)給一個已經(jīng)存在的類型一個別名
2、(8分) 以下是一組有關(guān)內(nèi)存知識的問題,請仔細(xì)看題,回答:
Void GetMemory(char *p)
{
P=(char *)malloc(100);
}
Void Test(void)
{
Char *str=Null;
GetMemory(str);
Strcpy(str,”hello world”);
Printf(str);
}
請問運行Test函數(shù)會有什么樣的結(jié)果?
a)__________程序崩潰,運行時錯誤___________________________
char *GetMemory(void)
{
Char p[]=”hello world”);
Return p;
}
Void Test(void)
{
Char *str=NULL;
Str=GetMemory();
Printf(str);
}
請問運行Test函數(shù)會有什么結(jié)果?
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函數(shù)會有什么結(jié)果?
c)_______ hello __________________________________________
void Test(void)
{
Char *str=(char *)malloc(100);
Strcpy(str,”hello”);
Free(str);
If(str!=NULL)
{
Strcpy(str,”world”);
Printf(str);
}
}、
請問運行test函數(shù)會有什么樣的結(jié)果?
d)_______程序崩潰:因為釋放str指針后,沒有將指針置為null,所以指針變?yōu)橐爸羔樍?。再?zhí)行cpy時會因為找不到指針的指向而導(dǎo)致程序崩潰,請編程時,注意這一點。 __________________________________________
3、(6分)請寫出以下程序的輸出結(jié)果:
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++軟件開發(fā)筆試題目篇3
1.(2分)以下說法錯誤的是:()
A)指針和引用作為函數(shù)參數(shù)都可以改變實參
B)指針和引用都可以在定義后任意的改變指向,引用是不可以改變的。
C)引用必須在創(chuàng)建的時候初始化,而指針則不需要
D)不能空引用,但是可以有空指針
2、(2分) 運算符的重載形式有兩種,重載為_重載為類的內(nèi)部成員函數(shù)____________和_重載為類的友元函數(shù)______________________
3、(2分) main主函數(shù)執(zhí)行完畢后,是否可能會再執(zhí)行一段代碼?請說明理由? 可以使用注冊函數(shù)讓程序在推出main之后,程序終止之前執(zhí)行自定義的一些代碼!
全局對象的構(gòu)造函數(shù)會在main 函數(shù)之前執(zhí)行
利用atexit()函數(shù)可以在程序終止前完成一些“清理”工作——如果將指向一組函數(shù)的指針傳遞給atexit()函數(shù),那么在程序退出main()函數(shù)后(此時程序還未終止)就能自動調(diào)用這組函數(shù)。在使用atexit()函數(shù)時你要注意這樣兩點:
main 之前:預(yù)編譯 全局變量的初始化等
main 之后:全局變量的釋放
main函數(shù)執(zhí)行之前,主要就是初始化系統(tǒng)相關(guān)資源
mainCRTStartup中被調(diào)用的
在main之前會調(diào)用一系列初始化函數(shù)來初始化這個進(jìn)程
而在main之后會調(diào)用exit(int)來進(jìn)行進(jìn)程的清理工作??梢杂胈onexit 注冊一個函數(shù)
,可以用_onexit 注冊一個函數(shù),它會在main 之后執(zhí)行int fn1(void), fn2(void), fn3(void), fn4 (void);
可能會執(zhí)行一些注冊過的Hook
注意,atexit()以棧的方式注冊函數(shù),后注冊的函數(shù)會先執(zhí)行。
_onexit和atexit()一樣是以占的方式注冊函數(shù)的,后注冊的函數(shù)會被先執(zhí)行。
void main( void )