【正文】
組的指針,它所指 向的數(shù)組有三個(gè)元素,對(duì)于這樣一個(gè)指針,對(duì)它進(jìn)行兩次 **運(yùn)算才能取出地址單元中所存的數(shù)據(jù), C 選項(xiàng)中 *ptr 表示數(shù)組第一行的首地址,該地址是一維數(shù)組的地址, +3 表示加上三個(gè)它所指向的數(shù)據(jù)類型的長度,所以 (*ptr+1)+2 是數(shù)組中數(shù)值 4 的地址。注意,對(duì)于二維數(shù)組來說,做一次 *或 []運(yùn)算的結(jié)果仍是地址量,做兩次才是取數(shù)值。選項(xiàng) D 中的 amp。在 C 編譯系統(tǒng)中對(duì)二維數(shù)組名可這樣理解 (注意,這里僅是理解 ): a 指向一個(gè)一維數(shù)組,故 (a+1)是指向 a[1]的, *(a+1)就是取 a[1]的值,它保存第二個(gè)字符串 ShangHai的首地址,所以選項(xiàng) B 也正確。 【 】答案: D 注釋: s 作為數(shù)組名是地址常量,而 s++是 s=s+1, C 語言不允許對(duì)常量進(jìn)行賦值。對(duì)于 int *p[4],則根據(jù)運(yùn)算符的優(yōu)先級(jí),先考慮 p和 []運(yùn)算符的關(guān)系,所以它就是一個(gè)指針數(shù)組了。說明語句 int (*p)[ ]; 說明的是一個(gè)指向數(shù)組的指針。 【 】答案: B 【 】答案: C 【 】答案: D 注釋:在答案 D 中,正確的函數(shù)調(diào)用應(yīng)當(dāng)是: printf(%d, *y)。 【 】答案: C 注釋:函數(shù) swapa 是值傳遞,函數(shù)的執(zhí)行結(jié)果不能返回;函數(shù) swapb 中變量 temp 不是指針變量,所以它不能接受地址量,用指針變量 x 為它賦值是不對(duì)的;函數(shù) swap 中雖然指針變量交換了地址,即它們的指向的目標(biāo)變量進(jìn)行了交換,但是目標(biāo)變量并沒有行值的交換。 auto 和 register 類型的變量的作用域是說明變量的當(dāng)前函數(shù);外部變量的作用域是整個(gè)程序,即外部變量的作用域可以跨越多個(gè)文件;內(nèi)部靜態(tài)變量(定義在一個(gè)函數(shù)內(nèi)部的 static 型的變量)的作用域是當(dāng)前函數(shù),外部靜態(tài)變量(定義在函數(shù)外面的 static 型的變量)的作用域是當(dāng)前文件,即可以跨越同一文件中的不同函數(shù)。在 C 語言中,程序與文件是不同的概念,一個(gè)程序可以由一個(gè)文件組成,也可以由多個(gè)文件組成;一個(gè)文件中又可以包含多個(gè)函數(shù);函數(shù)是構(gòu)成 C 程序的 基本單位。 【 】答案: C 16 注釋:此處函數(shù)形參是一個(gè)指針變量,接受實(shí)參的地址,而不是一個(gè)數(shù)組。 【 】答案: C 【 】答案: A 【 】答 案: C 【 】答案: C 注釋:答案 C 的賦值號(hào)左側(cè)是數(shù)組 s 的首地址,是一個(gè)常量,賦值號(hào)右側(cè)是一個(gè)字符串常量,不可能將一個(gè)字符串常量賦給一個(gè)地址常量。 【 】答案: D 注釋: break 語句僅可跳出 switch 語句,不會(huì)跳出 while 循環(huán),這是一個(gè)死循環(huán)。 【 】答案 : A 【 】答案: D 【 】答案: B 【 】答案: B 【 】答案: B 【 】答案: A 【 】答案: C 【 】答案: C 【 】答案: C 【 】答案: D 【 】答案: D 【 】答案: C 】答案: D 注釋: scanf 函數(shù)返回值是輸入數(shù)據(jù)的個(gè)數(shù), printf 函數(shù)的返回值是輸出的字符個(gè)數(shù)。 【 】答案: D 【 】答案: B 注釋:數(shù)組元素在內(nèi)存中按行排列,此數(shù)組的前 3 個(gè) 元素的值分別是 1,表達(dá)式中雖然數(shù)組下標(biāo)的寫法似乎每行有 3 個(gè)元素,和定義時(shí)的 3 行 2 列不一致,但是 C 語言引用數(shù)組元素時(shí)是根據(jù)數(shù)組的首地址和給出的下標(biāo)進(jìn)行運(yùn)算決定元素的地址。amp。它的運(yùn)算順序是先算出右邊的條件表達(dá) 15 式 cd?c:d的值,然后求條件表達(dá)式 ab?a:3 的值。 【 】答案: C 【 】答案: A 注釋:將條件表達(dá)式增加一個(gè)括號(hào),此式變?yōu)?ab?a:(cd?c:d),它的運(yùn)算順序就清楚了。 【 】答案: C 【 】答案: D 注釋:空字符和空格符是不同的兩個(gè)字符,空格符的 ASCII 碼值是 32,空字符的 ASCII 值是 0。\39。 【 】答案: D 【 】答案: C 注釋:變量 c 是字符型,可用字符常量為它賦值。 【 】答案: C 注釋:長整型數(shù) 65539 在計(jì)算機(jī)內(nèi)的表示是 0001 0000 0000 0000 0011,以一般整型進(jìn)行輸出時(shí),僅將右側(cè) 16 位二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)。 【 】答案: D 注釋:整型常量 1 在計(jì)算機(jī)中表示為補(bǔ)碼 1111 1111 1111 1111,用十六進(jìn)制顯示這個(gè)數(shù)時(shí),最左邊的 1 不會(huì)被解釋為符號(hào)位,而是與右邊其它位共同轉(zhuǎn)換為十六進(jìn)制數(shù)。 A) printf(%d\n,a); B) printf(%d\n,a); C) printf(%d\n, a); D) 原語句錯(cuò)誤 14 【單項(xiàng)選擇題參考答案】 【 】答案 : A 注釋: int 是 C 語言的關(guān)鍵字 【 】答案 : B 【 】答案: A 【 】答案: B 注釋: include 是預(yù)處理命令; scanf 是函數(shù)名; type 不是 C 語言的關(guān)鍵字。 A) 42 B) 48 C) 52 D) 出錯(cuò) 【 】已知宏定義 define SQ(x) x*x,執(zhí)行語句 printf(%d,10/SQ(3));后的輸出結(jié)果是 ____。 A) fscanf (文件指針 , 格式字符串 , 輸出列表 ); B) fscanf (格式字符串 , 輸出列表 , 文件指針 ); C) fscanf (格式字符串 , 文件指針 , 輸出列表 ); D) fscanf (文件指針 , 格式字符串 , 輸入列表 ); 【 】使用 fgetc 函數(shù),則打開文件的方式必須是 。file, r+); 【 】當(dāng)順利執(zhí)行了文件關(guān)閉操作時(shí), fclose 函數(shù)的返回值是 。 A) 鍵盤 B) 顯示器 C) 鼠標(biāo) D) 硬盤 【 】要打開一個(gè)已存在的非空文件 file用于修改,選擇正確的語句____。 man=0; switch(man) { case 0: printf(People\n); case 1: printf(Man\n); case 2: printf(Woman\n); default: printf(Error\n); } A) People B) Man C) Woman D)Error 【 】下述關(guān)于枚舉類型名的定義中,正確的是 ____。 A) sun=0; C) san=day; D) sun=mon; D) day=sun; 【 】已知 enum color {red,yellow=2,blue,white,black}ren;執(zhí)行下述語句的輸出結(jié)果是 ____。; B) p = (struct sk *); C) p = amp。,}; C) printf(%d\n,a); D) n=a; 【 】已知: struct sk { int a; int age; }date,*p; 如果要使指針 p 指向 data 中的成員 a,正確的賦值語句是 ____。 A) a=5; B) a={2,39。 struct student { int age; int num; 12 }stu1,*p; p=amp。 struct pupil { char name[20]; int sex; }pup,*p; p=amp。c} }; struct dent *p=s; 則以下表達(dá)式中值為 2 的是 。a},{102,amp。 A) 4 B) 5 C) 6 D) 7 【 】已知: union u_type { int i; char ch; float a; }temp; 現(xiàn)在執(zhí)行 =266; printf(%d,)的結(jié)果是 。 A) class[0]age + class[1]age+ class[2]age B) class[1].name[5] C) person[1].name[5] D) clasename[5] 【 】已知: struct { int i; char c; float a; 11 }test; 則 sizeof(test)的值是 。a[2]; D) p=amp。a[0]; B) p=amp。a[0]},*p; 如果下述語句的顯示是 2,則對(duì) p 的賦值是 ____。a[1],3,amp。data;則對(duì)于結(jié)構(gòu)變量 data 的成員 a 的正確引用是 ____。能正確執(zhí)行此功能的函數(shù)是 。 A) y=++*p++; B) y=++(*p++); C) y=(++*p)++; D) y=(*++p)++; 【 】已知: int x[ ]={ 1,3,5,7,9,11 }, *ptr=x;則能夠正確引用數(shù)組元素的語句是 。 A) 0,1,3,4 B) 1,1,3,4 C) 1,2,2,4 D) 1,2,3,3 變量 y 的值是 ____。 A) *(*(a+1)+2) B) *(*(p+5)) C) (*ptr+1)+2 D) *((ptr+1)[2]) 【 】已知: int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12}, *p=a;則值為 3 的表達(dá)式是 。 A) printf(%s,a+1); B) printf(%s,*(a+1)); C) printf(%s,*a+1); D) printf(%s,amp。 A) s[i+10] B) *(s+i) C) *(i+s) D) *((s++)+i) 【 】已知: char s[6], *ps=s;則正確的賦值語句是 。 A) 4 個(gè)指向整型變量的指針變量 B) 指向 4 個(gè)整型變量的函數(shù)指針 C) 一個(gè)指向具有 4 個(gè)整型元素的一維數(shù)組的指針 D) 具有 4 個(gè)指向整型變量的指針元素的一維指針數(shù)組 【 】已知: char s[10], *p=s, 則在下列語句中,錯(cuò)誤的語句是 。a); B) scanf(%d, y); C) printf(%d, a); D) printf(%d, y); 9 【 】說明語句 int (*p)( ); 的含義是 。a;則下列函數(shù)調(diào)用中錯(cuò)誤的是 。 a(s1,s2) char s1[],s2[]; { while(s2++=s1++) ; } A) 字符串比較 B) 字符 串復(fù)制 C) 字符串連接 D) 字符串反向 【 】在下列結(jié)論中,只有一個(gè)是錯(cuò)誤的,它是 。a,amp。 【 】已知函數(shù)定義如下: float fun1(int x,int y) { float z; z=(float)x/y; return(z); } 主調(diào)函數(shù)中有 int a=1,b=0;可以正確調(diào)用此函數(shù)的語句是 ____。 C) z 是一個(gè)變量,小括號(hào)內(nèi)的 10 是它的初值。 A) z 是一個(gè)數(shù)組,它有 10 個(gè)元素。能夠?qū)崿F(xiàn)此功能的函數(shù)是 ____。能夠?qū)崿F(xiàn)此功能的是 ____。 A) 函數(shù)返回值的數(shù)據(jù)類型 B) 函數(shù)形參的數(shù)據(jù)類型 C) 調(diào)用該函數(shù)時(shí)的實(shí)參的數(shù)據(jù)類型 D) 任意指定的數(shù)據(jù)類型 【 】已知如下定義的函數(shù): fun1(a) { printf(\n%d,a); } 則該函數(shù)的數(shù)據(jù)類型是 ____。 A) 靜態(tài)變量 B) 動(dòng)態(tài)變量 C) 外部變量 D) 內(nèi)部變量 【 】在一個(gè) C 源程序文件中 , 若要定義一個(gè)只允許在該源文件中所有函數(shù)使用的變量,則該變量需要使用的存儲(chǔ)類別是 。}; 【 】對(duì)函數(shù)形參的說明有錯(cuò)誤的是 ____。,39。,39。,39。,39。,39。,39。,39。}; D) char str[8]={ 39。,39。,39。,39。,39。,39。,39。,39。 A) char str[]=shanghai; B) char str[]={shanghai}; C) char str[9]={39。g39。n39。i39。j39。i39。e39。B39。 A) int a[][]={1,2,3,4,5,6}; B) int a[2][]={1,2,3,4,5,6}; C) int a[][3]={1,2,3,4,5,6}; D) int a[2,3]={1,2,3,4,5,6}; 【 】對(duì)字符數(shù)組 s 賦值 ,不合法的一個(gè)是 ____。 A) 空格 B) n C) 不定 D) 數(shù)組定義有誤 【 】若用數(shù)組名作為函數(shù)調(diào)用時(shí)的實(shí)參,則實(shí)際上傳遞給 形參的是 。 A) 3 B) 4 C) 5 D) 6 【 】已知 int x=12,y=3;執(zhí)行下述程序后, 變量 x 的值是 ____。amp。 A) for(i=1,s=0; (s=s+i*i)=1000; n=i++) ; B) for(i=1,s=0; (s=s+i*i)=1000; n=++i) ; C) for(i=1,s=0; (s=s+i*++i)=1000; n=i) ; D) for(i=1,s=0; (s=s+i*i++)=1000; n=i) ; 【 】下面的 for 語句 。 A