【正文】
可見(jiàn)的,這個(gè)變量的存儲(chǔ)類型應(yīng)該被說(shuō)明為 ____。 A) extern B) register C) auto D) static 【 】在 C 語(yǔ)言中,函數(shù)的數(shù)據(jù)類型是指 ____。 A) 與參數(shù) a 的類型相同 B) void 型 C) 沒(méi)有返回值 D) 無(wú)法確定 【 】定義一個(gè)函數(shù)實(shí)現(xiàn)交換 x 和 y 的值,并將結(jié)果正確返回。 A) swapa(int x,int y) B) swapb(int *x,int *y) { int temp; { int temp; temp=x; x=y; y=temp; temp=x; x=y; y=temp; } } C) swapc(int *x,int *y) D) swapd(int *x,int *y) { int temp; { int *temp; temp=*x; *x=*y; *y=temp; temp=x; x=y; y=temp; } } 【 】求一個(gè)角的正弦函數(shù)值的平方。 A) sqofsina(x) float x; { return(sin(x)*sin(x)); } B) double sqofsinb(x) 8 float x; { return(sin((double)x)*sin((double)x)); } C) double sqofsinc(x) { return(((sin(x)*sin(x)); } D) sqofsind(x) float x; { return(double(sin(x)*sin(x))); 【 】一個(gè)函數(shù)內(nèi)有數(shù)據(jù)類型說(shuō)明語(yǔ)句如下: double x,y,z(10); 關(guān)于此語(yǔ)句的解釋,下面說(shuō)法正確的是 ____。 B) z 是一個(gè)函數(shù),小括號(hào)內(nèi)的 10 是它的實(shí)參的值。 D) 語(yǔ)句中有錯(cuò)誤。 A) printf(%f,fun1(a,b)); B) printf(%f,fun1(amp。b)); C) printf(%f,fun1(*a,*b)); D) 調(diào)用時(shí)發(fā)生錯(cuò)誤 【 】下面函數(shù)的功能是 ____。 A) C語(yǔ)言允許函數(shù)的遞歸調(diào)用 B) C語(yǔ)言中的 continue 語(yǔ)句,可以通過(guò)改變程序的結(jié)構(gòu)而省略 C) 有些遞歸程序是不能用非遞歸算法實(shí)現(xiàn)的 D) C 語(yǔ)言中不允許在函數(shù)中再定義函數(shù) 【 】已知: int a, *y=amp。 A) scanf(%d, amp。 A) p 是一個(gè)指向一維數(shù)組的指針變量 B) p 是指針變量,指向一個(gè)整型數(shù)據(jù) C) p 是一個(gè)指向函數(shù)的指針,該函數(shù)的返回值是一個(gè)整型 D) 以上都不對(duì) 【 】設(shè)有說(shuō)明 int (*p)[4];其中的標(biāo)識(shí)符 p 是 。 A) p=s+5; B) s=p+s; C) s[2]=p[4]; D) *p=s[0]; 【 】已知: char s[100]; int i;則引用數(shù)組元素的錯(cuò)誤的形式是 。 A) s=12345; B) *s=12345; C) ps=12345; D) *ps=12345; 【 】已知: char a[3][10]={BeiJing,ShangHai,TianJin}, *pa=a;不能正確顯示字符串ShangHai的語(yǔ)句是 。a[1][0]); 【 】已知: int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*ptr)[3]=a,*p=a[0]; 則以下能夠正確表示數(shù)組元素 a[1][2]的表達(dá)式是 。 A) p+=2,*(p++) B) p+=2,*++p C) p+=2,*p++ D) p+=2,++*p 【 】已知: int a[]={1,2,3,4}, y, *p=a;則執(zhí)行語(yǔ)句 y = (*++p);之后 , 數(shù)組 a 各元素的值變?yōu)?______。 A) 1 B) 2 C) 3 D) 4 【 】已知: int a[ ]={1,3,5,7}, y *p= a;為使變量 y 的值為 3,下列語(yǔ)句正確的是 ____。 A) x B) *(ptr) C) x[6] D) *(ptr) 10 【 】函數(shù)的功能是交換變量 x 和 y 中的值,且通過(guò)正確調(diào)用返回交換的結(jié)果。 A) funa (int *x, int *y) B) funb (int x, int y) { int *p; { int t; p=x; *x=*y; *y=*p; t=x; x=y; y=t; } } C) func (int *x, int *y) D) func (int *x, int *y) { *x=*y; *y=*x; { *x=*x+*y; *y=*x*y; *x=*x*y; } } 【 】有定義如下: struct sk { int a; float b; }data ,*p; 如果 p=amp。 A)( *) . B) (*p).a C) p D) 【 】已知: struct st { int n; struct st *next; }; static struct st a[3]={1,amp。a[2],5,amp。 printf(%d,++(pnextn)); A) p=amp。a[1]; C) p=amp。a[3]; 【 】已知: struct person { char name[10]; int age; }class[10]={LiMing,29,ZhangHong,21,WangFang,22}; 下述表達(dá)式中,值為 72 的一個(gè)是 ____。 A) 4 B) 5 C) 6 D) 7 【 】已知: union { int i; char c; float a; }test; 則 sizeof(test)的值是 。 A) 266 B) 256 C) 10 D) 1 【 】若有以下程序段: struct dent { int n; int *m; }; int a=1,b=2,c=3; struct dent s[3] = { {101,amp。b},{103,amp。 A) (p++)m B) *(p++)m C) (*p).m D) *(++p)m 【 】若有以下說(shuō)明語(yǔ)句,則對(duì)結(jié)構(gòu)變量 pup 中 sex 域的正確引用是 。pup; A) B) p C) (*p). D) (*p).sex 【 】以下對(duì)結(jié)構(gòu)變量 stul 中成員 age 的非法引用是 。stu1; A) B) C) page D) (*p).age 【 】若有以下定義和語(yǔ)句: union data { int i; char c; float f; }a; int n; 則以下語(yǔ)句正確的是 。a39。 A) p = (struct sk *)amp。; D) *p = ; 【 】已知 enum week {sun,mon,tue,wed,thu,fri,sat}day;則正確的賦值語(yǔ)句是 ____。 printf(%d,ren=white); A) 0 B) 1 C) 3 D) 4 【 】已知 enum name{zhao=1,qian,sun,li}man;執(zhí)行下述程序段后的輸出是 ____。 A) enem a={ one,two,three }; B) enem a { one=9,two=1,three }; C) enem a={one,two,three}; D) enem a {one,two,three}; 13 【 】C語(yǔ)言中標(biāo)準(zhǔn)輸入文件 stdin 是指 。 A) fp=fopen(file, r); B) fp=fopen(file, a+); C) fp=fopen(file, w); D) fp=fopen(39。 A) 1 B) TRUE C) 0 D) 1 【 】 fscanf 函數(shù)的正確調(diào)用形式是 。 A) 只寫 B) 追加 C) 讀或讀 /寫 D) 參考答案 B 和 C 都正確 【 】已知宏定義 define N 3 define Y(n) ((N+1)*n) 執(zhí)行語(yǔ)句 z=2*(N+Y(5+1));后,變量 z 的值是 ____。 A) 1 B) 3 C) 9 D) 10 【 】已知宏定義如下: define PR printf define NL \n define D %d define D1 DNL 若程序中的語(yǔ)句是 PR(D1,a);經(jīng)預(yù)處理后展開為 ____。 【 】答案: D 【 】答案: D 【 】答案: A 【 】答案: A 注釋: int 型表示整數(shù)的范圍是 32768~ 32767。 【 】答案: B 注釋:長(zhǎng)整型數(shù) 32768 在計(jì)算機(jī)內(nèi)的表示是 1000 0000 0000 0000,以一般整型進(jìn)行輸出時(shí),此數(shù)恰是 32768 的補(bǔ)碼。 【 】答案: A 注釋: C 語(yǔ)言中, int 型的負(fù)數(shù)是采用補(bǔ)碼表示的。字符常量必須用單引號(hào)括起來(lái),所以 B 是錯(cuò)誤的;在單引號(hào)或雙引號(hào)內(nèi)的反斜線 39。用于表示轉(zhuǎn)義字符, A 選項(xiàng)在無(wú)引號(hào)時(shí)使用反斜線是錯(cuò)誤的; C 選項(xiàng)單引號(hào)內(nèi)出現(xiàn)反斜線表示 它與后面的數(shù)字組成一個(gè)轉(zhuǎn)義字符;單引號(hào)只允許括起一個(gè)字符, D 選項(xiàng)在單引號(hào)內(nèi)出現(xiàn) 4 個(gè)字符,是錯(cuò)誤的。 【 】答案: A 【 】答案: B 【 】答案: A 【 】答案: C 【 】答案: B 注釋:?jiǎn)渭儚?C 語(yǔ)言語(yǔ)法來(lái)說(shuō),選項(xiàng) B、 C 都是正確的,但是選項(xiàng) C 中第一個(gè)運(yùn)算的兩個(gè)對(duì)象都是整型常數(shù),其結(jié)果也是整型數(shù) 0,最后的運(yùn)算結(jié)果也就是 0 了。由于條件運(yùn)算符的結(jié)合性是從右向左,所以括號(hào)可以省略。 【 】答案: C 【 】答案: B 【 】答案: B 注釋:當(dāng)通過(guò)一個(gè)運(yùn)算對(duì)象即可決定邏輯運(yùn)算 amp。的結(jié)果時(shí),則對(duì)另一個(gè)運(yùn)算對(duì)象不做處理。題中表達(dá)式引用了數(shù)組前 3 個(gè)元素。 【 】答案: D 【 】答案: C 注釋:在 C 語(yǔ)言中, 經(jīng)常用一個(gè)變量來(lái)作為邏輯表達(dá)式,其含義就是:當(dāng)變量的值不為 0 時(shí)關(guān)系成立。 【 】答案: A 【 】答案: C 【 】答案: C 【 】答案: D 注釋:當(dāng)除數(shù) y 為 0 時(shí),程序發(fā)生溢出錯(cuò)誤。 【 】答案: D 注釋: D 選項(xiàng)缺少字符串結(jié)束標(biāo)志。 【 】答案: A 【 】答案: D 注釋:這里首先要明確一些基本概念。 變量的作用域因變量的存儲(chǔ)類型不同而不同。 【 】答案: A 【 】答案: A 注釋:它和參數(shù) a 一樣,數(shù)據(jù)類型說(shuō)明被省略,按照 C 語(yǔ)言的規(guī)定,在這種情況下,表示它們是 int 型。 【 】答案: B 【 】答案: D 【 】答案: D 注釋:主調(diào)函數(shù)中 b=0,在執(zhí)行 fun1 函數(shù)里的除法時(shí)發(fā)生溢出錯(cuò)誤。 【 】答案: C 注釋:要注意與說(shuō)明語(yǔ)句 int (*p)[ ]; 的區(qū)別。 【 】答案: C 注釋:題干中由于 *和 p被小括號(hào)括起,所以 p 應(yīng)被解釋為一個(gè)指針,而后的下標(biāo)運(yùn)算符 []說(shuō)明所指向的對(duì)象是一個(gè)有 4 個(gè) int 型元素的一維數(shù)組;如果是 int (*p)(),則是指向函數(shù)的指針。 【 】答案: B 注釋:選 項(xiàng) B 有兩處錯(cuò)誤,一是數(shù)組名是常量,不能出現(xiàn)的賦值好的左側(cè),二是指針變量只能和整數(shù)做加,不能和作為地址常量的數(shù)組名相加。 【 】答案: C 【 】答案: C 注釋: a 是二維數(shù)組名, a+1 中的 1 不是 1 個(gè)字節(jié),而是數(shù)組的 一行 ,即 10 個(gè)字節(jié),所以 a+1是第二個(gè)字符串的首地址, A 選項(xiàng)正確。 *a 是第一個(gè)字符串的首地址,加 1 是第一個(gè)字符串中第二個(gè)字符的地址,選項(xiàng) C 的輸出是 beiJing。a[1][0]是對(duì)第二個(gè)字符 17 串的第一個(gè)字符做取地址運(yùn)算,得到該地址就是字符串 ShangHai的首地址。 【 】答案: A 注釋: p 是一個(gè)一級(jí)指針,選項(xiàng) B 中對(duì)它進(jìn)行了兩次 *運(yùn)算是錯(cuò)誤的。根據(jù)以上分析,選項(xiàng) D 對(duì) ptr 進(jìn)行了兩次地址操作( *和 []),所以結(jié)果應(yīng)是數(shù)據(jù),但是它加 1 后指向數(shù)組第二行,根據(jù)后面 []中 2 它的地址增加兩個(gè)一維數(shù)組的長(zhǎng)度,就指向數(shù)組的最后一行,再做 *運(yùn)算就是數(shù)10,即 a[3][0]。 【 】答案: B 【 】答案: C 注釋:使用 C 對(duì) p進(jìn)行賦值,則 pnext 是 a[0]的地址,引用其成員 n 再做前增 1 運(yùn)算,結(jié)果就是 2。 266 的二進(jìn)制表示是100001010,存放在存儲(chǔ)單元的低端兩個(gè)字節(jié),如下圖: 高字節(jié) 0 0 0 0 0 0 0 1 低字節(jié) 0 0 0 0 1 0 1 0 引用 進(jìn)行輸出,只取最低的第一個(gè)字節(jié)。表達(dá)式 *(p++)m 的含義是先取出 m 的內(nèi)容(變量 a 的值),然后指針 p 再