日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

迎战校招训练题

發(fā)布時(shí)間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 迎战校招训练题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、雙空

編譯器可以根據(jù)硬件特性選擇合適的類型長度,但要遵循如下限制:short與int類型至少為___C___位,long至少為__D____位,并且short類型不長于int類型,int類型不得長于long類型。

A. 4 ? ?B.8 ?C.16 D. 32 E. 64

二、

如下結(jié)構(gòu)體在64位機(jī)器上的大小為__D_字節(jié)。

struct s1 {char a;union{short b;char c:2,d:1;};int *e; }; A.4 B. 11 C. 13 D. 16 E. 18解析:這里考了struct的字節(jié)問題,需要考慮對(duì)齊。并且union 的字節(jié)取成員變量的最大字節(jié),即2.a是一個(gè)指針,在64位系統(tǒng)下是8字節(jié),所以考慮上對(duì)齊為16字節(jié)。

三、

以下程序輸出結(jié)果是_C_____

#include <stdio.h>void main() {int a = 1, b = 1;a+++b;printf("a=%d,b=%d", a, b); }A.1,1 ? ?B.1,2 ? ? ?C.2,1 ? ? ?D.2,2
解析:

a+++b=a++ + b=(a++)+b

四、

以下程序輸出的是__D_____

#include <stdio.h>void main() {int a = 5;int b;b = ++a;printf("a=%d,b=%d", a, b); }A.5,5 ? ? ?B.5,6 ? ? ? ?C.6,5 ? ? ? D.6,6
五、

請(qǐng)問以下程序輸出結(jié)果是:____B_____

#include<iostream> using namespace std; int main () {int a[][3]={{1,2,3},{4,5,0}},(*pa)[3],i; pa=a; for(int i=0;i<3;i++) {if (i<2){pa[1][i]=pa[1][i]-1;}else{pa[1][i]=1;}} printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}A.6 ? ? ?B.7 ? ? ? ? C.8 ? ? ? ? D.9 ? ? ? ? E.10 ? ? ? ? ? ? F.以上答案不對(duì)
解析:

這里的 int?(*pa)[3],實(shí)際上定義了一個(gè)指向由三個(gè)元素組成的一維數(shù)組,令pa=a,所以pa完全代替了a,所以后面的賦值,也就是對(duì)a的賦值,因此答案是B
六、

若有定義:int A[3][4];能表示數(shù)組元素A[1][1]的是____B_____

A. (A[1]+1) ? ? B.*(&A[1][1]) ? ? ?C.(*(A+1)[1]) ? ? ? D.*(A+5)

解析:

A.?(A[1]+1) 表示A[1][1]的地址,B.正確 C.正確的分解順序是(A+1)[1]=*(A+1+1)=*(A+2):表示第二行第0列的首地址,然后再加上*,就表示A[2][0]. ? D.越界

注意:[ ]的優(yōu)先級(jí)優(yōu)于*或者&

七、

(多選)

定義一個(gè)函數(shù)指針變量pfun,使下面的賦值語句沒有編譯警告,且無編譯錯(cuò)誤:

int test(void) {return 0; } pfun=test;
請(qǐng)選擇:_____A, B____

A. int (*pfun)(void);

B.typedef ?int(*PFUN)(void);

PFUN pfun;

C. int* (pfun)(void);

D.int *(*pfun)(void);

解析;本題考了函數(shù)指針,其中A是常規(guī)的做法,B、typedef的典型用法,typedef有兩種用法,一種是創(chuàng)建別名,另一種是掩飾復(fù)合類型,如數(shù)組和指針。

例如,你不用像下面這樣重復(fù)定義有 81 個(gè)字符元素的數(shù)組: char line[81];
? ? ? ?char text[81];
只需這樣定義,Line類型即代表了具有81個(gè)元素的字符數(shù)組,使用方法如下: typedef char Line[81];Line text,line;getline(text);或者如上面的題中的用法。
八、

定義變量a,包含10個(gè)函數(shù)指針的數(shù)組,函數(shù)帶一個(gè)整型變量,返回值為整型:___C_____

A. int a[10]() ? ?B. (int*) a[10] ?C.int (*a[10])() ?D.int *(a()[10])
九、

已知

struct point{int a;int *b; }p;p.a=300;p.b=(int*)500; 則 p.a+p.b的值是_B____

A.800 ? B.1700 ?C.2300 D.1100?
解析;

p.b=(int*)500;將500轉(zhuǎn)化為指針,實(shí)際上就是pb取了500的八進(jìn)制數(shù),一般地址取十六進(jìn)制(用printf("%X",p.b)輸出)。然后p.a+p.b實(shí)際上就是將p.b的地址往后移了300*4=1200字節(jié),(int為4個(gè)字節(jié))所以實(shí)際上等于500+300*4=1700

參考:

1.?為什么整數(shù)可以轉(zhuǎn)換為指針

2.?int *p=(int *)100; 數(shù)字轉(zhuǎn)換成int類型的指針?

3.c語言 一個(gè)指針值加上一個(gè)整型值是什么意思?

十、

(多選) 以下程序輸出__A,B_____
? ? ?printf("%d",55^0xAA);

A. 157 ?B.0x9D ? C.127 D.128

解析: ?55(二進(jìn)制):110111 ?0xAA(二進(jìn)制):10101010 二者取異或運(yùn)算得:10011101------>十進(jìn)制(157),十六進(jìn)制(0x9D)

十一、

? ?以下程序輸出的是_____C_____

int a,b;a=1;b=32;printf("%d,%d\n",a<<b,1<<32);
A.0,0 ? B.0,1 ? ? ?C.1,0 ? ?D.1,1

?解析; ? 左移或者右移把握一個(gè)標(biāo)準(zhǔn),就是移位運(yùn)算時(shí),byte、short和char類型移位后的結(jié)果會(huì)變成int類型,對(duì)于byte、short、char和int進(jìn)行移位時(shí),規(guī)定實(shí)際移動(dòng)的次數(shù)是移動(dòng)次數(shù)除以32的余數(shù),也就是移位33次和移位1次得到的結(jié)果相同。移動(dòng)long型的數(shù)值時(shí),規(guī)定實(shí)際移動(dòng)的次數(shù)是移動(dòng)次數(shù)和64的余數(shù),也就是移動(dòng)66次和移動(dòng)2次得到的結(jié)果相同。

而且左移時(shí)高位移出(舍棄),低位的空位補(bǔ)零。右移時(shí),若是負(fù)數(shù),低位舍棄,高位補(bǔ)1,;若是正數(shù),低位舍棄,高位補(bǔ)0

例如:

int i = 1, j = 0x80000000; //設(shè)int為32位i = i << 33; // 33 % 32 = 1 左移1位,i變成2j = j << 33; // 33 % 32 = 1 左移1位,j變成0,最高位被丟棄int k= 0x80000000; 即二進(jìn)制為100000000 00000000 00000000 00000000k = k>> 1; //k的值不會(huì)變成0x40000000,而會(huì)變成0xc0000000,即二進(jìn)制為11000000 00000000 00000000 000000000
這里a=1,a<<32 //32%32=0,未移位,故a=1, ?但是1<<32,由于越界,直接舍棄高位,所以答案為0,總之記住若是int類型,移動(dòng)的次數(shù)為移動(dòng)次數(shù)與32/64的余數(shù),若是一個(gè)數(shù)常數(shù),則移位超過32/64,直接舍棄高位,為0


十二、

如果數(shù)組a的首地址為65072,每個(gè)整數(shù)為16位的,則下列程序打印輸出的是______C_______

#include <stdio.h> int main() {int a[3][4]={1,3,5,7,9,7,5,3,1,3,5,7};printf("%u\n",a+1);return 0; }A. 65088 ? ?B. 65120 ? ?C. 65080 ? D.65096 E.以上答案都不對(duì)
解析:

? ? ? ?a的首地址:65072,a+1指向a[1][0],離首地址相差4個(gè)int,由于每個(gè)整數(shù)為16位,也就是2字節(jié),所以共相差8個(gè)字節(jié),因此輸出65072+8=65080

十三、

如果數(shù)組a的首地址為50152,則下列程序打印輸出的是______B_______

#include <stdio.h> int main() {int a[3][4]={1,3,5,7,9,7,5,3,1,3,5,7};printf("%u\n",&a+1);return 0; }

A. 50168 ? ?B.50200 ? ? C.50153 ? ? D.50156 ? ??E.以上答案都不對(duì)

解析:

? ?注意到a為二維數(shù)組的首地址,指向第0行,&a+1指向二維數(shù)組的最后一個(gè)元素的下一個(gè)元素,因此:50152+12*4=50200

十四、

請(qǐng)問以下程序輸出結(jié)果是_____C_______

?

int a[3][3]={1,2,3,4,5,6,7,8,9};int (*ptr)[3]=a;printf("%d",(*(ptr+1))[2]);A.4 ? ? B.5 ? ? C.6 ? ? D.7

解析:ptr=a;所以ptr指向a數(shù)組的第0行,然后再看(*(ptr+1))[2]);,看的順序是:ptr+1---->*(ptr+1)------->(*(ptr+1))[2]),依次指向: 1行首地址;1行0列首地址;1行2列元素,即a[1][2],也就是6

十五、多選題

HASH值計(jì)算公式是(MAC[1]^MAC[2]^MAC[3]^MAC[4])%8

下面4個(gè)MAC地址,哪些是不會(huì)發(fā)生hash沖突的___??______

A. 00 d0 f8 01 02 03

B.00 1a a9 7f 78 58

C. 00 00 5e 00 01 cc

D.02 03 05 06 aa fe

解析:?MAC地址是6字節(jié)十六進(jìn)制數(shù)組成的。

A:?d0 ^ f8 ^ 01 ^ 02=11010000 ^?11111000 ^00000001^00000010=00101011=43(10進(jìn)制)

B:1a ^ a9 ^ 7f ?^78=00011010 ^10101001 ^01111111 ^01111000=10110100=180(10進(jìn)制)

C:?00^ 5e ^ 00^ 01=95(10進(jìn)制)

D:03^ 05 ^06^ aa=170(10進(jìn)制)

43%8=3,180%8=4 ,95%8=7 ,170%8=2 好像都不會(huì)沖突啊,怎么做?

十六、

請(qǐng)補(bǔ)齊以下程序____??______

? ? ??

int setx_r(int len) {Lock(cb);g_ptx_ptr->length=len;g_ptx_ptr->str=kmalloc(d_len);if (g_ptx_ptr->str==null||g_ptx_ptr!=OK){_________________;return ERR;}Unlock(ch);Return Success; }A. Lock(cb) B.Unlock(cb) C. break D.不必填寫 E。以上答案都不對(duì)

十七、

以下程序輸出是___D_____

#include <stdio.h> #include <stdlib.h> #include <string.h> #define Max 10 char* test() { char buf[Max]; memset(buf,0,Max); sprintf(buf,"%s","001"); sprintf(buf,"%s%s",buf,buf); return buf;} void main() {printf("%s",test());}A.001 ? ?B.001001 ?C.001001001 ?D.不確定或者運(yùn)行錯(cuò)誤 E.以上答案都不對(duì)

答案: D

解析:由于char* test(),返回的是局部指針,所以一旦函數(shù)調(diào)用結(jié)束,buf分配的內(nèi)存釋放,所以返回的是隨機(jī)的字符。

十八、

請(qǐng)問以下程序輸出結(jié)果是______F____

int i,j; int array[10]; int *ap=array+5; for(i=0;i<10;i++) {array[i]=i; } i=3;j=5; printf("i[array]+j=%d\n",i[array]+j);A.3 ? B.4 ?C. 5 ?D.6 E.7 ?F.8 G.9 ?H.以上答案都不對(duì)
解析: 上面代碼起初我以為是錯(cuò)的,后來實(shí)際編譯一下,可以通過,i[array]相當(dāng)于*(array+i),也就是array[i],所以這里相當(dāng)于array[3]+5=3+5=8

十九、

下面程序片段的運(yùn)算結(jié)果為____C_______

int main () { int x=2016,y=2017,z=2018; z+=x+++y++; printf("%d\n",z);}A.4033 B.4034 C.6051 D.6052
解析: z+=x+++y++,由于++的優(yōu)先級(jí)優(yōu)于+,故左式相當(dāng)于z+=(x++)+(y++);x++,y++,都是先使用后自增,故z=2016+2017+2018=6051

二十、

下面程序的輸出結(jié)果為_______C______

#include<iostream> #include<math.h> //包含了<string.h> using namespace std;char buf[256]; int main () { sprintf(buf+sprintf(buf,"%s","abc\0%de"),"%s","fgh%%di"); printf(buf,112); return 0;}A.abc ? ?B.fgh ? ? C.abcfgh%di ? ? ?D.fgh%de ? ? ?E.abc%de

二十一、下面的輸出結(jié)果是____8_____

char* s = "\\tmp012\012";cout << strlen(s) << endl;解析: 最初拿到這道題,我的答案是7,原因是'\\'使用了轉(zhuǎn)義字符表達(dá)‘\’,后面還有‘\0’,strlen遇到'\0'就停止計(jì)數(shù),所以共有'\\'+'t'+'m'+'p'+'0'+'1'+'2'共7個(gè)字符。其實(shí)錯(cuò)了,'\012',實(shí)際上是用八進(jìn)制表示的字符'\n',表示換行。所以共有8個(gè)字符。實(shí)際上,‘\0’是不會(huì)直接出現(xiàn)在字符串中,編譯器默認(rèn)字符串的末尾為‘\0’。在C++中,除了用八進(jìn)制表示字符,還可以使用'\x**'即一個(gè)十六進(jìn)制表示一個(gè)字符,或者使用ASCII值直接表示。

二十二、下面的輸出結(jié)果是_____53_____

int a[5] = { 9876, 0123, 4567, 2345, 8901 };printf("%x\n", *(a + 1));解析: *(a+1)=a[1]=0123,輸出%x,實(shí)際上輸出16進(jìn)制。而0123是8進(jìn)制,轉(zhuǎn)化為16進(jìn)制為53.
二十三、下面的輸出結(jié)果是_____0____

int a = -6;unsigned int b = 6;cout << a + b << endl;
解析:unsigned int 與int相加時(shí)會(huì)轉(zhuǎn)化為int,再加

二十四、在32位系統(tǒng)下,下面的輸出結(jié)果是__64 ,16, 16, 4_______

int a[4][4];cout << sizeof(a) << endl;cout << sizeof(a[0]) << endl;cout << sizeof(*a) << endl;cout << sizeof(*a+1) << endl;解析:a表示二維數(shù)組,故字節(jié)為4*4*4=64,a[0]或者*a代表0行一維數(shù)組,故字節(jié)為4*4=16,而*a+1表示0行1列元素的地址,是一個(gè)指針,所以字節(jié)為4




總結(jié)

以上是生活随笔為你收集整理的迎战校招训练题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。