一、選擇題(1)~(10)每小題2分,(11)-(50)每小題1分,共60分)
下列各題A)、B)、C)、D)四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的,請(qǐng)將正確選項(xiàng)涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。
(1)數(shù)據(jù)結(jié)構(gòu)中,與所使用的計(jì)算機(jī)無關(guān)的是數(shù)據(jù)的________。
A)存儲(chǔ)結(jié)構(gòu) B)物理結(jié)構(gòu) C)邏輯結(jié)構(gòu) D)物理和存儲(chǔ)結(jié)構(gòu)
答案:C
評(píng)析:數(shù)據(jù)結(jié)構(gòu)概念一般包括3個(gè)方面的內(nèi)容,數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)及數(shù)據(jù)上的運(yùn)算集合。數(shù)據(jù)的邏輯結(jié)構(gòu)只抽象的反映數(shù)據(jù)元素之間的邏輯關(guān)系,而不管它在計(jì)算機(jī)中的存儲(chǔ)表示形式。
(2)棧底至棧頂依次存放元素A、B、C、D,在第五個(gè)元素E入棧前,棧中元素可以出棧,
則出棧序列可能是________。
A)ABCED B)DBCEA C)CDABE D)DCBEA
答案:D
評(píng)析:棧操作原則上"后進(jìn)先出",棧底至棧頂依次存放元素A、B、c、D,則表明這4個(gè)元素中D是最后進(jìn)棧,B、c處于中間,A最早進(jìn)棧。所以出棧時(shí)一定是先出D,再出c,最后出A。
(3)線性表的順序存儲(chǔ)結(jié)構(gòu)和線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)分別是________。
A)順序存取的存儲(chǔ)結(jié)構(gòu)、隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)
B)隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)、順序存取的存儲(chǔ)結(jié)構(gòu)
C)隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)、隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)
D)任意存取的存儲(chǔ)結(jié)構(gòu)、任意存取的存儲(chǔ)結(jié)構(gòu)
答案:B
評(píng)析:順序存儲(chǔ)結(jié)構(gòu)中,數(shù)據(jù)元素存放在一組地址連續(xù)的存儲(chǔ)單元中,每個(gè)數(shù)據(jù)元素地址可通過公式LOC(ai)。LOC(a1)+(i-1)L計(jì)算得到,從而實(shí)現(xiàn)了隨機(jī)存取。對(duì)于鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),要對(duì)某結(jié)點(diǎn)進(jìn)行存取,都得從鏈的頭指針指向的結(jié)點(diǎn)開始,這是一種順序存取的存儲(chǔ)結(jié)構(gòu)。
(4)在單鏈表中,增加頭結(jié)點(diǎn)的目的是________。
A)方便運(yùn)算的實(shí)現(xiàn) B)使單鏈表至少有一個(gè)結(jié)點(diǎn)
C)標(biāo)識(shí)表結(jié)點(diǎn)中首結(jié)點(diǎn)的位置 D)說明單鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)實(shí)現(xiàn)
答案:A
評(píng)析:頭結(jié)點(diǎn)不僅標(biāo)識(shí)了表中首結(jié)點(diǎn)的位置,而且根據(jù)單鏈表(包含頭結(jié)點(diǎn))的結(jié)構(gòu),只要掌握了表頭,就能夠訪問整個(gè)鏈表,因此增加頭結(jié)點(diǎn)目的是為了便于運(yùn)算的實(shí)現(xiàn)。
(5)軟件設(shè)計(jì)包括軟件的結(jié)構(gòu)、數(shù)據(jù)接口和過程設(shè)計(jì),其中軟件的過程設(shè)計(jì)是指________。
A)模塊間的關(guān)系 B)系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述
C)軟件層次結(jié)構(gòu) D)軟件開發(fā)過程
答案:B
評(píng)析:軟件設(shè)計(jì)包括軟件結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)和過程設(shè)計(jì)。其中結(jié)構(gòu)設(shè)計(jì)是定義軟件系統(tǒng)各主要部件之間的關(guān)系;數(shù)據(jù)設(shè)計(jì)是將分析時(shí)創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義;接口設(shè)計(jì)是描述軟件內(nèi)部、軟件和操作系統(tǒng)之間及軟件與人之間如何通信;過程設(shè)計(jì)則是把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程性描述。
(6)為了避免流程圖在描述程序邏輯時(shí)的靈活性,提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程 圖,通常也把這種圖稱為________。
A)PAD圖 B)N-S圖 C)結(jié)構(gòu)圖 D)數(shù)據(jù)流圖
答案:B
評(píng)析:常見的過程設(shè)計(jì)工具有:程序流程圖、N-S圖、PAD圖和HIPO圖。其中,為了避免流程圖在描述程序邏輯時(shí)的靈活性,提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,通常也把這種圖稱為N-S圖。
(7)數(shù)據(jù)處理的最小單位是________。
A)數(shù)據(jù) B)數(shù)據(jù)元素 C)數(shù)據(jù)項(xiàng) D)數(shù)據(jù)結(jié)構(gòu)
答案:C
評(píng)析:數(shù)據(jù)處理的最小單位是數(shù)據(jù)項(xiàng);由若干數(shù)據(jù)項(xiàng)組成數(shù)據(jù)元素;而數(shù)據(jù)是指能夠被計(jì)算機(jī)識(shí)別、存儲(chǔ)和加工處理的信息載體;數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)之間的相互關(guān)系和數(shù)據(jù)運(yùn)算。
(8)下列有關(guān)數(shù)據(jù)庫(kù)的描述,正確的是________。
A)數(shù)據(jù)庫(kù)是一個(gè)DBF文件 B)數(shù)據(jù)庫(kù)是一個(gè)關(guān)系
C)數(shù)據(jù)庫(kù)是一個(gè)結(jié)構(gòu)化的數(shù)據(jù)集合 D)數(shù)據(jù)庫(kù)是一組文件
答案:C
評(píng)析:數(shù)據(jù)庫(kù)(Database,簡(jiǎn)稱DB)是數(shù)據(jù)的集合,它具有統(tǒng)一的結(jié)構(gòu)形式并存放于統(tǒng)一的存儲(chǔ)介質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,并可被各個(gè)應(yīng)用程序所共享。數(shù)據(jù)庫(kù)中的數(shù)據(jù)具有"集成"、"共享"之特點(diǎn)。
(9)單個(gè)用戶使用的數(shù)據(jù)視圖的描述稱為 ______ 。
A)外模式 B)概念模式 C)內(nèi)模式 D)邏輯模式
答案:A
評(píng)析:外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式;全局?jǐn)?shù)據(jù)視圖的描述稱為概念模式,即數(shù)據(jù)庫(kù)中全部數(shù)據(jù)的整體邏輯結(jié)構(gòu)的描述;物理存儲(chǔ)數(shù)據(jù)視圖的描述稱為內(nèi)模式,即數(shù)據(jù)庫(kù)在物理存儲(chǔ)方面的描述;存儲(chǔ)模式即為內(nèi)模式。
(10)需求分析階段的任務(wù)是確定______。
A)軟件開發(fā)方法 B)軟件開發(fā)工具 C)軟件開發(fā)費(fèi)用 D)軟件系統(tǒng)功能
答案:D
評(píng)析:需求分析是軟件定義時(shí)期的最后一個(gè)階段,它的基本任務(wù)就是詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對(duì)象(組織、部門、企業(yè)等),充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在此基礎(chǔ)上確定新系統(tǒng)的功能。
(11)若變量a是int類型,并執(zhí)行了語句:a='A'+1.6;,則正確敘述是______。
A)a的值是字符C B)a的值是浮點(diǎn)型
C)不允許字符型和浮點(diǎn)型相加 D)a的值是字符'A'的ASCII值加上l
答案:D
評(píng)析:在賦值表達(dá)式中,賦值符右邊的值的類型會(huì)自動(dòng)轉(zhuǎn)換成賦值符左邊的變量的類型。在本題中,先用"A"的ASCII碼值加上1.46得到66.46,然后將它強(qiáng)制轉(zhuǎn)換成int型,轉(zhuǎn)換后,實(shí)數(shù)的小數(shù)部分全部
(12)若以下選項(xiàng)中變量已正確定義,則正確的賦值語句是______。
A)x1=26.8%3; B)1+2=x2; C)x3=0x12; D)x4=1+2=3;
答案:C
評(píng)析:賦值符號(hào)"="就是賦值運(yùn)算符,它的作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量。如果賦值運(yùn)算符兩側(cè)的類型不一致,但都是數(shù)值型或字符型時(shí),在賦值時(shí)要進(jìn)行類型轉(zhuǎn)換,所以選項(xiàng)A錯(cuò)誤。在賦值表達(dá)式中,賦值運(yùn)算符的左側(cè)必須是一個(gè)變量,所以選項(xiàng)B、D錯(cuò)誤。選項(xiàng)C是將一個(gè)十六進(jìn)制數(shù)賦值給變量x3。
(13)以下程序段的輸出結(jié)果是______。
int a=1234;
printf("%2d\n",a);
A)12 B)34 C)1234 D)提示出錯(cuò)、無結(jié)果
答案:C
評(píng)析:本題主要考查對(duì)primf函數(shù)域?qū)捗枋龇睦斫,在這里我們要特別注意:輸出數(shù)據(jù)的實(shí)際精度并不主要決定于格式項(xiàng)中的域?qū)捙c精度,也不決定于輸入的數(shù)據(jù)精度,而主要決定于數(shù)據(jù)在機(jī)器內(nèi)的存儲(chǔ)精度。
(14)以下選項(xiàng)中不屬于C語言的類型的是______。
A)signed short int B)unsigned char
C)signed long D)long short
答案:D
評(píng)析:c語言中歸納起來,基本類型數(shù)據(jù)有以下幾種:
[signed]char;unsigned char;[signed]short[int];unsigned short[int];[signed]long[int];unsigned long[int];float;double.
(15)設(shè)有定義:int a,*pa=&a;以下scanf語句能正確為變量a讀入數(shù)據(jù)的是______。
A)scanf("%d",B); B)scanf("%d",a);
C)scanf("%d",&pa); D)scanf("%d",*pa);
答案:C
評(píng)析:scanf函數(shù)要求其中的輸入項(xiàng)必須是地址形式,比如:普通變量的地址、數(shù)組名、指針變量等。對(duì)于普通變量,地址形式為:&變量名;當(dāng)一個(gè)普通變量的地址賦予了一個(gè)指針變量名,scanf函數(shù)的輸入項(xiàng)處就可以直接寫這個(gè)指針變量名。
(16)以下程序的輸出結(jié)果是______。
main()
{int a=5,b=4,c=6,d;
printf("%d\n",d=a>c?(a>c?a:C):(b));
}
A)5 B)4 C)6 D)不確定
答案:B
評(píng)析:本題最重要的分析d=a>c?(a>c?a:C):(b)),首先運(yùn)算括號(hào)內(nèi)的式子a>c?a:c,它的值是c的值6,即式子化成d=a>c?6:4。顯然a=c,所以將4賦給d。
(17)以下程序中,while循環(huán)的循環(huán)次數(shù)是______ 。
main()
{ int i=0:
while(i<10)
{if(i<1)continue;
if(i==5)break;
i++:
}
……
}
A)1 B)10 C)6 D)死循環(huán),不能確定次數(shù)
答案:D
評(píng)析:進(jìn)入循環(huán)后,先執(zhí)行一個(gè)條件語句,如果i的值小于l,那么直接進(jìn)入下一輪循環(huán),因?yàn)閕的初始值是0,小于l,故直接進(jìn)入下一輪循環(huán),又因?yàn)閕的值始終沒有改變,所以這個(gè)循環(huán)成了死循環(huán)。
(18)有以下程序:
main()
{
char k;int i;
for(i=1;i<3;i++)
{
scanf("%c",&k);
switch(k)
{
case'0':printf["another\n"];
case'1':printf["number\n");
}
}
}
程序運(yùn)行時(shí),從鍵盤輸入:0l<回車>,程序執(zhí)行后輸出結(jié)果是______。
A)another B)another C)another D)number
number number number number
another number
答案:C
評(píng)析:switch語句是多分支選擇語句,執(zhí)行完一個(gè)case后面的語句后,流程控制轉(zhuǎn)移到下一個(gè)case繼續(xù)執(zhí)行。"case常量表達(dá)式"只是起語句標(biāo)號(hào)作用,并不是在該處進(jìn)行條件判斷。在執(zhí)行switch語句時(shí),根據(jù)switch后面表達(dá)式的值找到匹配的入口標(biāo)號(hào),就從此標(biāo)號(hào)開始執(zhí)行下去,不再進(jìn)行判斷。
(19)以下程序的輸出結(jié)果是______。
main()
{Int a=O,i;
for(i=1;i<5;i++)
{switch(i)
{ case 0:
case 3:a+=2:
case l:
case 2:a+=3:
default:a+=5;
}
}
printf("%d\n",a)
}
A)3l B)13 C)10 D)20
答案:A
評(píng)析:switch結(jié)構(gòu)的執(zhí)行過程同上題。
(20)己定義c為字符型常量,則下列語句中正確的是______。
A)C='97' B)c="97" C)c=97 D)c="a"
答案:C
評(píng)析:字符變量占內(nèi)存一個(gè)字節(jié),只能放一個(gè)字符;字符常量為單引號(hào)括起的單個(gè)字符;字符串常量為雙引號(hào)括起的一串字符(可以0個(gè)字符,即"",稱為空串)。選項(xiàng)c為字符ASCII碼的整數(shù)形式。
(21)以下程序的輸出結(jié)果是_________。
main()
f int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);
}
A)l B)0 C)非0的數(shù) D)-1
答案:A
評(píng)析:!a值為0,故!a&&!b的值為0,!c的值為l,而0IIl的值應(yīng)該是l。所以答案是A。
(22)以下程序的輸出結(jié)果是_________。
#include<stdio.h>
main()
{int i=0,a=0;
while(i<20)
{for(;;)
{if((i%10)==0)break;
else I--:
}
i+=ll;a+=i;
}
printf("%d\n",a);
}
A)21 B)32 C)33 D)11
答案:B
評(píng)析:本題中,有兩個(gè)循環(huán)語句。首先,i=0,進(jìn)入while循環(huán),for語句中對(duì)循環(huán)沒有任何條件,故直接進(jìn)入for循環(huán),因?yàn)?%10結(jié)果還是O,所以跳出for循環(huán),執(zhí)行i+:11,i的值變?yōu)?1,執(zhí)行a+=i,a的值變?yōu)?1:接著進(jìn)入下一輪while循環(huán),在for循環(huán)中,因?yàn)閕的值是11,對(duì)10取余結(jié)果為l,所以執(zhí)行i自減,i的值變成10,進(jìn)入又一輪for循環(huán),因?yàn)?0%10==0,所以跳出for循環(huán),執(zhí)行i+=1l,i的值變成21,執(zhí)行a+=i,也就是將21+1 1的和賦給a,a=32,因?yàn)榇藭r(shí)i的值不再小于20,所以結(jié)束循環(huán),
故輸出結(jié)果是32。
(23)有以下程序:
int n(int x,int y)
{retum x>y?x:y;}
Int f2(int x,int y)
{return x>y?y:x;)
main()
{ int a=4,b=3,c=5,d,e,f;
d=f1(a,b);d=fl(d,C);
e=f2(a,b);e=f2(e,C);
f=a+b+C-d-e;
printf("%d,%d,%d\n",d,e,f);
}
程序運(yùn)行后的輸出結(jié)果是_________ 。
A)3,4,5 B)5,3,4 C)5,4,3 D)3,5,4
答案:B
評(píng)析:函數(shù)n是一個(gè)求兩個(gè)整數(shù)中最大值的函數(shù),函數(shù)f2是一個(gè)求兩個(gè)整數(shù)中最小值的函數(shù)。在main函數(shù)中兩次調(diào)用函數(shù)n,求得變量a、b、、c中的最大值賦值給d;兩次調(diào)用函數(shù)f2,求得變量a、b、c中的最小值賦值給e;表達(dá)式a+b+c-d-e得到中間值,輸出5,3,4。
(24)以下程序的輸出結(jié)果是_________。
int f()
{static int i=0;
int s=1:
s+=i;i++;
return s;
}
main()
{inti,a=0;
for(i=0;i<5;j++)a+=f();
printf("%d\n",a);
}
A)20 B)24 C)25 D)15
答案:D
評(píng)析:靜態(tài)變量,在編譯時(shí)就為其分配了存儲(chǔ)空間,程序一開始執(zhí)行便被建立,直到該程序執(zhí)行結(jié)束都存在,而不像動(dòng)態(tài)變量只存在于函數(shù)或分程序被調(diào)用期間。在函數(shù)多次被調(diào)用的過程中靜態(tài)局部變量的值具有可繼承性。
(25)已定義以下函數(shù):
fun(int *p)
{retum *p;}
該函數(shù)的返回值是______ 。
A)不確定的值 B)形參p中存放的值 C)形參p所指存儲(chǔ)單元中的值 D)形參p的地址值
答案:C.
評(píng)析:函數(shù)首部fun(int*p)中+p表示這是一個(gè)指針變量,指向整型數(shù)據(jù),用來從主調(diào)函數(shù)接收地址;而語句return *p;中的*p代表p所指向存儲(chǔ)單元中的值。
(26)若有以下程序
#include<stdio.h>
Void f(int n);
main()
{void f(int n);
f(5);
}
Void f(int n)
{print("%d\n",n);}
則以下敘述中不正確的是______ 。
A)若只在主函數(shù)中對(duì)函數(shù)f進(jìn)行說明,則只能在主函數(shù)中正確調(diào)用函數(shù)f
B)若在主函數(shù)前對(duì)函數(shù)f進(jìn)行說明,則在主函數(shù)和其后的其它函數(shù)中都可以正確調(diào)用函數(shù)f
C)對(duì)于以上函數(shù)程序,編譯時(shí)系統(tǒng)會(huì)提示出錯(cuò)信息;提示對(duì)f函數(shù)重復(fù)說明
D)函數(shù)f無返回值,所以可用void將其類型定義為無值型
答案:C
評(píng)析:一個(gè)函數(shù)在一個(gè)文件中的定義只能有一次,但對(duì)它的聲明卻可以有很多個(gè)。一個(gè)函數(shù)可以正確調(diào)用在當(dāng)前函數(shù)之前聲明的函數(shù)。
[NextPage]
(27)有以下程序段:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是______。
A)5 B)6 C)8 D)9
答案:D
評(píng)析:數(shù)組a各元素a[O]~a[9]的值依次為1~10;在程序的說明部分,指針變量p初始化為&a[3](即a+3),則p[5]相當(dāng)于·(p+5),相當(dāng)于a[8],所以執(zhí)行語句b=p[5];后,b的值為9。
(28)在C語言中,形參的缺省存儲(chǔ)類是______。
A)auto B)register C)static D)extern
答案:A
評(píng)析:程序進(jìn)行編譯時(shí),并不為形式參數(shù)分配存儲(chǔ)穿間。只有在被調(diào)用時(shí),形式參數(shù)才臨時(shí)地占有存儲(chǔ)空間。形式參數(shù)用關(guān)鍵字auto作存儲(chǔ)類別的聲明時(shí),關(guān)鍵字"auto"可以省略,auto不寫則隱含確定為"自動(dòng)存儲(chǔ)類別",它屬于動(dòng)態(tài)存儲(chǔ)方式。
(29)有以下定義:
#include<stdio.h>
char a[10],*b=a;
不能給數(shù)組a輸入字符串的語句是______。
A)gets(a); B)gets(a[0]); C)gets(&a[0]); D)gets(b);
答案:B
評(píng)析:函數(shù)gets的格式為:gets(字符數(shù)組名)
c語言中,字符數(shù)組名代表數(shù)組的首元素地址,即&a[O],字符指針變量lb值也為數(shù)組a的首地址,選項(xiàng)A、c、D均能給數(shù)組a輸入字符串。選項(xiàng)B中a[O]為數(shù)組元素,是一個(gè)數(shù)據(jù)變量。
(30)若指針p已正確定義,要使p指向兩個(gè)連續(xù)的整型動(dòng)態(tài)存儲(chǔ)單元,不正確的語句是 ______.
A)p=2*(int*)malloc(sizeof(int)); B)p=(int*)malloc(2*sizeof(int))
C)p=(int*)malloc(2*2) D)p=(int*)calloc(2,sizeof(int))
答案:A
評(píng)析:malloe函數(shù)的作用是在內(nèi)存開辟指定大小的存儲(chǔ)空問,并將此存儲(chǔ)空間的地址作為函數(shù)值帶回,它的原型為void。malloe(unsigned int size),函數(shù)值為指針,這個(gè)指針是指向void類型。如果要將此返回地址賦給一個(gè)指向特定類型的指針變量,則應(yīng)進(jìn)行強(qiáng)制類型轉(zhuǎn)換。
calloc函數(shù)的模型是:void*calloc(unsigned int num,unsigned int size)作用是分配num個(gè)大小為size字節(jié)的空間。
(31)下面程序段的輸出結(jié)果是______ 。
main()
{
char strl [10]={'s','t','u','d','e','n','t'};
printf("%d\n",strlen(strl));
}
A)7 B)8 C)10 D)存在語法錯(cuò)誤
答案:A
評(píng)析:strlen()函數(shù)得到字符串的長(zhǎng)度,返回值為數(shù)值型。字符數(shù)組初始化,若提供的初值個(gè)數(shù)大于數(shù)組長(zhǎng)度,則按語法錯(cuò)誤處理。如果初值個(gè)數(shù)小于數(shù)組長(zhǎng)度,則只將這些字符賦給數(shù)組中前面那些元素,其余的元素自動(dòng)定義為空字符。
(32)以下程序的輸出結(jié)果是______。
main()
{int x=040;
printf("%o\n",x<<1);
}
A)100 B)80 C)64 D)32
答案:A
評(píng)析:040用二進(jìn)制表示就是00100000,左移一位,得到的值應(yīng)該是01000000,化成八進(jìn)制應(yīng)該是0100。
(33)下面程序運(yùn)行后的輸出結(jié)果是______。
main()
{
char arr[2][4];
strcpy(arr[0],"you");strcpy(arr[1],"me");
arr[0][3]='&';
print"%s\n",arr[0]);
}
A)you&me B)you C)me D)err
答案:A
評(píng)析:在主函數(shù)中定義了一個(gè)2*4的二維字符數(shù)組,執(zhí)行strcpy(arr[O]"fIyou");后,arr[0]={'y''o','u','\0'},執(zhí)行strcpy(arr[1],"me");后arr[1]={ 'm', 'e','\0',不定},當(dāng)執(zhí)行完arr[O][3];'&';從arr[O]開始的存儲(chǔ)空間中的字符依次是'y','o','u','&','m','e','\0',故執(zhí)行printf("%s\n",arr[O]);后的輸出結(jié)果為"you&me",選A。
(34)若要打開A盤上的user子目錄下名為abc.txt的文本文件進(jìn)行讀、寫操作,下面符合 此要求的函數(shù)調(diào)用是______。
A)fopen("A:\user\abc.txt","r") B)fopen("A:\\user\\abc.txt","r+")
C)fopen("A:\user\abc.txt","rb") D)fopen("A:\\user\\abc.txt","w")
答案:B
評(píng)析:本題考查點(diǎn)是fopen函數(shù)中文件使用方式的指定。
文件使用方式"r",表示以"只讀"方式打開一個(gè)字符文件。
文件使用方式"r+",表示以"讀寫"方式打開一個(gè)字符文件。
文件使用方式""rb",表示以"只讀"方式打開一個(gè)二進(jìn)制文件。
文件使用方式"w",表示以"只寫"方式打開一個(gè)字符文件。
(35)以下不能正確進(jìn)行字符串賦初值的語句為______。
A)char str[5]= "good! " B)char str[]="good! "
C)char *str="good! " D)char str[5]={'g','0','o','d'}
答案:A
評(píng)析:用字符串作初值為字符數(shù)組賦值時(shí),系統(tǒng)總會(huì)自動(dòng)在字符串的末尾補(bǔ)上一個(gè)"\O",如選項(xiàng)A中定義的話,把第6個(gè)字符也就是"\0"賦給str數(shù)組,但此數(shù)組只含5個(gè)元素,而放到了s仃數(shù)組之后的存儲(chǔ)單元中,這就可能會(huì)破壞其它數(shù)據(jù)區(qū)或程序本身。
(36)有以下程序:
#include<string.h>
main(int argc,char*argv[])
{
int i,len=O;
for(i=1;i<argc;i+=2)len+=strlen(argv[i]);
Print("%d\n",len);
}
經(jīng)編譯連接后生成可執(zhí)行文件ex.exe,若運(yùn)行時(shí)輸入以下帶參數(shù)的命令行
ex abcd efg h3 k44
運(yùn)行后輸出結(jié)果是______。
A)14 B)12 C)8 D)6
答案:C
評(píng)析:main函數(shù)的第一個(gè)參數(shù)argc是int型變量,用來統(tǒng)計(jì)命令行中的字符串個(gè)數(shù),本題輸入帶參數(shù)的命令行"ex abed efg h3 k44<回車>",argc的值是5;第二個(gè)參數(shù)是字符型指針數(shù)組,長(zhǎng)度由argc的值決定,每個(gè)數(shù)組元素存放一個(gè)指向字符串?dāng)?shù)據(jù)的指針。for語句將命令行中兩個(gè)字符串a(chǎn)bed和h3的長(zhǎng)度進(jìn)行累加,放在變量len中。
(37)若有下面的說明和定義:
struct test
{ int ml;char m2;float m3;
union uu{char ul[5];int u2[2];}ua;
}myaa;
則sizeof(stuct test)的值是______。
A)12 B)16 C)14 D)9
答案:A
評(píng)析:在定義了結(jié)構(gòu)體變量后,系統(tǒng)會(huì)為之分配內(nèi)存單元,在內(nèi)存中一個(gè)整型占2個(gè)字節(jié),一個(gè)字符占1個(gè)字節(jié),一個(gè)數(shù)組元素占1個(gè)字節(jié),一個(gè)浮點(diǎn)型占4個(gè)字節(jié)。結(jié)構(gòu)體變量所占內(nèi)存長(zhǎng)度是各成員占的內(nèi)存長(zhǎng)度之和;而共用體變量所占的內(nèi)存長(zhǎng)度等于最長(zhǎng)的成員的長(zhǎng)度。所以test在內(nèi)存中占12個(gè)字節(jié)(2+l+4+5=12)。
(38)若有定義:int aa[8];,則以下謄達(dá)式中不能代表數(shù)組元素aa[1]的地址的是______。
A)&aa[0]+l B)&aa[1] C)aa[0]++ D)aa+1
答案:C
評(píng)析:答案A中&aa[0]表示aa[0]的地址,加上1就是aa[1]的地址。同樣aa[1]的地址也可以直接用&aa[1]或aa+l表示。
(39)下面敘述中正確的是______。
A)全局變量的作用域一定比局部變量的作用域范圍大
B)靜態(tài)類別變量的生存期貫穿于整個(gè)程序的運(yùn)行期間
C)函數(shù)的形參都屬于全局變量
D)未在定義語句中賦值的auto變量和static變量的初值都是隨機(jī)值
答案:B
評(píng)析:c語言中,全局變量的作用范圍是從定義處到程序結(jié)束,因此全局變量的定義點(diǎn)直接影響其作用范圍,因此選項(xiàng)A錯(cuò)誤。靜態(tài)(statiC)存儲(chǔ)類別變量是在程序編譯時(shí)分配存儲(chǔ)空間,該類別變量在整個(gè)程序運(yùn)行期間占據(jù)著固定的存儲(chǔ)單元,當(dāng)多次調(diào)用其所在的函數(shù)時(shí),該類別變量的值為上一次調(diào)用的值,直至整個(gè)程序結(jié)束運(yùn)行后才釋放該變量所占存儲(chǔ)單元。因此選項(xiàng)B正確,選項(xiàng)D錯(cuò)誤。c語言規(guī)定:函數(shù)的形參是auto型局部變量,因此選項(xiàng)c錯(cuò)誤。
(40)以下程序的輸出結(jié)果是______ 。
f(int b[],int m,int n)
{jnt i,s=0;
for(i=m;i<n;i=i+2)s=s+b[i];
return s;
)
main()
{int x,a[]:{1,2,3,4,5,6,7,8,9};
x=f(a,3,7);
printf("%d\n",x);
)
A)10 B)18 C)8 D)15
答案:A
評(píng)析:本題中,主函數(shù)調(diào)用f函數(shù),在f函數(shù)中執(zhí)行了兩次循環(huán),第一次i=3,s=0+b[i]:4,然后i的值被修改成5,仍然滿足循環(huán)條件,進(jìn)入第二輪循環(huán),s=4+b[5]=4+6=10,隨后,i的值被修改成7,不再滿足循環(huán)條件,退出循環(huán),返回s的值。所以最后輸出結(jié)果是10。
(41)若有以下定義和語句:
int s[4][5],(*ps)[5];
ps=s;
則對(duì)s數(shù)組元素的正確引用形式是______ 。
A)ps+l B)*(ps+3) C)ps[0][2] D)*(ps+1)+3
答案:C
評(píng)析:選項(xiàng)A得到的是s數(shù)組第一行的地址,選項(xiàng)B得到的是s數(shù)組第三行第零列元素的地址,而選項(xiàng)D得到的是s數(shù)組第一行第三列元素的地址。只有選項(xiàng)c正確引用了ps數(shù)組第零行第二列的元素。
(42)以下程序的輸出結(jié)果是______。
main()
{int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
fbr(j=I;J<=I;J++)t=t+b[i][b[j][j]];
printf("%d\n",t);
}
A)3 B)4 C)l D)9
答案:B
評(píng)析:`兩個(gè)循環(huán)語句嵌套使用,在第一次外循環(huán)中,i=0,執(zhí)行內(nèi)循環(huán)時(shí),將j賦值為i的值O,執(zhí)行一次t=t+b[i][b[j][j]],得到t=1,退出內(nèi)循環(huán),接著進(jìn)入第二次外循環(huán),在第二次外循環(huán)結(jié)束時(shí)t=2,然后執(zhí)行第三次外循環(huán),得到t=4,退出循環(huán),輸出t的值。
(43)有以下程序:
#definef (x)X*X
main()
{
int i:
i=f(4+4)/f(2+2);
printf("%d\n",i);
}
程序運(yùn)行后的輸出結(jié)果是______。
A)28 B)22 C)16 D)4
答案:A
評(píng)析:主函數(shù)中f(4+4)/f(2+2)可按帶參宏定義展開為4+4*4+4/2+2*2+2(千萬不要隨意地添加括號(hào)),求得結(jié)果為28。
(44)以下程序的輸出結(jié)果是______。
#inclue<stdio.h>
#inclue<string.h>
main()
{char b1[8]="goddwer",b2[8],*pb=bl+3;
while(--pb>=b1) strcpy(b2,pb);
print("%dha",strlen(b2));
)
A)8 B)3 C)l D)7
答案:D
評(píng)析:每次執(zhí)行循環(huán),都是將pb指針指向的內(nèi)容復(fù)制到b2中,第一次循環(huán)中,將b1[2]~b1[7]六個(gè)字符復(fù)制到b2中,第二次循環(huán),將b[1]~b[7]七個(gè)字符復(fù)制到b2中,第三次循環(huán),將b1數(shù)組的全部?jī)?nèi)容復(fù)制到b2中。而后一次復(fù)制會(huì)覆蓋前面的復(fù)制,最后b2的實(shí)際長(zhǎng)度應(yīng)該是八,而strlen()函數(shù)測(cè)出的是一個(gè)字符串中"\O"之前的全部字符的個(gè)數(shù),所以最后輸出的值是70
(45)在說明語句:int *f();中,標(biāo)識(shí)符f代表的是______。
A)一個(gè)用于指向整型數(shù)據(jù)的指針變量
B)一個(gè)用于指向一維數(shù)組的行指針
C)一個(gè)用于指向函數(shù)的指針變量
D)一個(gè)返回值為指針型的函數(shù)名
答案:D
評(píng)析:一個(gè)函數(shù)在編譯時(shí)被分配給一個(gè)入口地址,這個(gè)入口地址就稱為函數(shù)的指針?梢杂靡粋(gè)指針變量指向函數(shù),然后通過該指針變量調(diào)用此函數(shù)。Int*f()表示f是一個(gè)函數(shù),它帶回一個(gè)指針值,這個(gè)指針是指向一個(gè)整型數(shù)據(jù)的。
(46)下面函數(shù)中,可以把整數(shù)以二進(jìn)制形式存放到文件中的函數(shù)是______。
A)fprintf函數(shù) B)fread函數(shù) C)fwrite函數(shù) D)fputc函數(shù)
答案:C
評(píng)析:ANSI c標(biāo)準(zhǔn)提出設(shè)置兩個(gè)函數(shù)(fread和fwrite),用來讀寫一個(gè)數(shù)據(jù)塊。它們的一般調(diào)用形式為:
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
其中:buffer是一個(gè)指針;size是要讀寫的字節(jié)數(shù);count是要進(jìn)行讀寫多少個(gè)size字節(jié)的數(shù)據(jù)項(xiàng);
fb是指文件型指針。如果文件以二進(jìn)制形式打開,用fread和fwrite函數(shù)就可以讀寫任何類型的信息。
(47)不合法的main函數(shù)命令行參數(shù)表示形式是______。
A)main(int a,char*c[]) B)main(int arc,char **arv)
C)main(int argc,char *argv) D)main(int argv,char *arge[])
答案:C
評(píng)析:本題主要考查了對(duì)main函數(shù)參數(shù)的了解,main函數(shù)可以有兩個(gè)形參,一般形式是:main(int argc,char*argv[]),也就是說,它的第一個(gè)形參是一個(gè)整型變量,第二個(gè)形參是一個(gè)指針數(shù)組,其元素指向字符型數(shù)據(jù)。
(48)以下程序的輸出結(jié)果是______.
int x=3;
main()
{int i;
for(i=l;i<x;i++)incre();
}
incre()
{ static int x=l;
X*=x+l:
printf("%Di",x);
}
A)3 3 B)2 2 C)2 6 D)2 5
答案:C
評(píng)析:incre()中定義一個(gè)靜態(tài)局部變量x,它的作用范圍僅限于本函數(shù)中,而不會(huì)影響main()函數(shù)中的x值。
(49)有以下結(jié)構(gòu)體說明和變量的定義,且如圖所示指針p指向變量a,指針q指向變量b。則不能把結(jié)點(diǎn)b連接到結(jié)點(diǎn)a之后的語句是________。
struct node
{ char data;
struct node *next;
}a,b,*p=&a,*q=&b;
A)a.next=q; B)p.next=&b; C)p->next=&b; D)(*p).next=q;
答案:B
評(píng)析:由于p是一個(gè)指向struct node型的指針變量,要訪問該指針變量指向的結(jié)構(gòu)體成員,必須使用->運(yùn)算符或"(*p).成員"的形式,故選項(xiàng)B是錯(cuò)誤的。
(50)若有以下定義:
struct link
{ int data;
struct link*next;
}a,b,c,*p,*q;
且變量a和b之間已有如圖所示的鏈表結(jié)構(gòu):
指針p指向變量a,q指向變量c。則能夠把c插入到a和b之間并形成新的鏈表的語句組是______。
A)a.next=c;c.next=b; B)p.next=q;q.next=p.next;
C)p->next=&c;q->next=p->next; D)(*p).next=q;(*q).next=&b;
答案:D
評(píng)析:本題考的是指針的運(yùn)用。即先將元素a的指針指向q指針?biāo)赶虻脑丶碿,然后將c的指針指向b元素,采取的是直接取元素地址的方式。
二、填空題(每空2分,共40分)
請(qǐng)將每一個(gè)空的正確答案寫在答題卡的【1】至【20】序號(hào)的橫線上,答在試卷上不得分。
(1)算法的基本特征是可行性、確定性、 【1】 和擁有足夠的情報(bào)。
答案:【1】有窮性
評(píng)析:算法是指解題方案的準(zhǔn)確而完整的描述。它有4個(gè)基本特征,分別是可行性、確定性、有窮性和擁有足夠的情報(bào)。
(2)順序存儲(chǔ)方法是把邏輯上相鄰的結(jié)點(diǎn)存儲(chǔ)在物理位置 【2】 的存儲(chǔ)單元中。
答案:【2】相鄰
評(píng)析:常用的存儲(chǔ)表示方法有4種,順序存儲(chǔ)、鏈?zhǔn)酱鎯?chǔ)、索引存儲(chǔ)、散列存儲(chǔ)。其中,順序存儲(chǔ)方法是把邏輯上相鄰的結(jié)點(diǎn)存儲(chǔ)在物理位置也相鄰的存儲(chǔ)單元中。
(3)Jackson結(jié)構(gòu)化程序設(shè)計(jì)方法是英國(guó)的M.Jackson提出的,它是一種面向 【3】 的設(shè)計(jì)方法。
答案:【3】數(shù)據(jù)結(jié)構(gòu)
評(píng)析:結(jié)構(gòu)化分析方法主要包括:面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法(SA-Structured analysis),面向數(shù)據(jù)結(jié)構(gòu)的Jackson方法(JSD-Jackson system development method)和面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化數(shù)據(jù)系統(tǒng)開發(fā)方法(DSSD-Data structured system development method)。
(4)數(shù)據(jù)庫(kù)設(shè)計(jì)分為以下6個(gè)設(shè)計(jì)階段:需求分析階段、 【4】 、邏輯設(shè)計(jì)階段、物理 設(shè)計(jì)階段、實(shí)施階段、運(yùn)行和維護(hù)階段。
答案:【4】概念設(shè)計(jì)階段或數(shù)據(jù)庫(kù)概念設(shè)計(jì)階段
評(píng)析:數(shù)據(jù)庫(kù)設(shè)計(jì)分為以下6個(gè)設(shè)計(jì)階段:需求分析階段、概念設(shè)計(jì)階段、邏輯設(shè)計(jì)階段、物理設(shè)計(jì)階段、實(shí)施階段及數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)階段。
(5)數(shù)據(jù)庫(kù)保護(hù)分為:安全性控制、 【5】 、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。
答案:【5】完全性控制
評(píng)析:考查考生對(duì)數(shù)據(jù)庫(kù)基本知識(shí)的了解。
安全性控制:防止未經(jīng)授權(quán)的用戶有意或無意存取數(shù)據(jù)庫(kù)中的數(shù)據(jù),以免數(shù)據(jù)被泄露、更改或破壞;完整性控制:保證數(shù)據(jù)庫(kù)中數(shù)據(jù)及語義的正確性和有效性,防止任何對(duì)數(shù)據(jù)造成錯(cuò)誤的操作;并發(fā)性控制:正確處理好多用戶、多任務(wù)環(huán)境下的并發(fā)操作,防止錯(cuò)誤發(fā)生;數(shù)據(jù)的恢復(fù):當(dāng)數(shù)據(jù)庫(kù)被破壞或數(shù)據(jù)不正確時(shí),使數(shù)據(jù)庫(kù)能恢復(fù)到正確的狀態(tài)。
(6)設(shè)有int x=ll;,則表達(dá)式(x++ *1/3)的值為 【6】 。
答案:【6】3
評(píng)析:白增自減運(yùn)算符的作用是使變量的值增1或減1,如:
++i,--i (在使用i之前,先使i的值加(減)1)
i++,i-- (在使用i之后,使i的值加(減)1)
所以表達(dá)式(x++*1/3)的值即11/3的值:3。
(7)若從鍵盤輸入58,則以下程序的輸出結(jié)果是 【7】 。
main()
{ int a;
Scanf("%d",&a);
If(a>50)printf("%d",a);
If(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
答案:【7】585858
評(píng)析:本題首先為a輸入一個(gè)值58,然后執(zhí)行三個(gè)判斷語句,在每一個(gè)判斷中,如果滿足判斷條件的話,就輸出a,因?yàn)槿闻袛啵瑮l件都滿足,所以三次輸出a。
(8)下列程序運(yùn)行的結(jié)果是 【8】 。
#include<stdio.h>
main()
{
int x=l,i=l:
fOr(;x<50;i++)
{if(x>=10)break;
if(x%2!=1)
{x+=3;continue;}
x-=1;
}
printf("x=%d,i=%d\n",x,i);
}
答案:【8】x=11,i=11
評(píng)析:本題程序段通過for循環(huán)語句實(shí)現(xiàn)當(dāng)x的值為奇數(shù)時(shí),x自減1:當(dāng)x為偶數(shù)時(shí)自加3的功能。程序共執(zhí)行了11次循環(huán),當(dāng)x=11時(shí)退出循環(huán)。
(9)以下程序的輸出結(jié)果是 【9】 。
main()
fint a=177;
printf("%o\n",a);
}
答案:【9】261
評(píng)析:本題考點(diǎn)是printf函數(shù)的格式字符。"%0"表示以八進(jìn)制整數(shù)形式輸出。
(10)以下程序的輸出結(jié)果是【10】 。
main()
{int a:O;
a+=(a=8);
printf("%d\n",a);
}
答案:【10】16
評(píng)析:本題主要考的是運(yùn)算符的優(yōu)先級(jí)。
A+=(a=8)可以寫成a:=a+(a=8)的形式,括號(hào)的優(yōu)先級(jí)高于"+",而"+"的優(yōu)先級(jí)又高于"=",所以先執(zhí)行括號(hào)內(nèi)的運(yùn)算,將a賦值為8,然后再執(zhí)行+運(yùn)算。
(11)以下定義的結(jié)構(gòu)體類型擬包含兩個(gè)成員,其中成員變量info用來存放整型數(shù)據(jù);成 員變量link是指向自身結(jié)構(gòu)的指針。請(qǐng)將定義補(bǔ)充完整。
struct node
{int info;
【11】 link;
};
答案:【11】struct node*
評(píng)析:本題考的是如何定義一個(gè)指向結(jié)構(gòu)體變量的指針。
一個(gè)結(jié)構(gòu)體變量指針就是該變量所占據(jù)的內(nèi)存段的起始地址?梢栽O(shè)一個(gè)指針變量,用來指向一個(gè)結(jié)構(gòu)體變量,此時(shí)該指針變量的值是結(jié)構(gòu)體變量的起始地址。指針變量也可以用來指向結(jié)構(gòu)體數(shù)組中的元素。
(12)以下程序的輸出結(jié)果是 【12】 。
main()
{int s,i;
for(s=O,i=O;i<3;i++,s+=i);
printf("%d\n",s);
}
答案:【12】6
評(píng)析:在逗號(hào)表達(dá)式內(nèi)按自左至右順序求解,因此本題共執(zhí)行三次循環(huán),具體情形如下:
第一次當(dāng)i=O時(shí),執(zhí)行i++,s+=i,則i=l,s=l:
第二次當(dāng)i=l時(shí),執(zhí)行i++,s+=i,則i=2,s=3;
第三次當(dāng)i=2時(shí),執(zhí)行i++,s+=i,則i=3,s=6。
當(dāng)i=3后退出循環(huán)。
(13)以下程序的輸出結(jié)果是 【13】 。
main()
{char *p="abcdefgh",*r;
1ong *q;
q=(1ong*)p;
q++;
r=(char*)q;
printf("%s\n",r);
}
答案:【13】efgh
評(píng)析:指針變量p,r指向字符型數(shù)據(jù),而指針變量q指向長(zhǎng)整型數(shù)據(jù)。首先通過類型轉(zhuǎn)換將指針p的值賦給q,然后執(zhí)行q自加,因?yàn)閝是定義為指向長(zhǎng)整型數(shù)據(jù)的變量,而長(zhǎng)整型數(shù)據(jù)一般占4個(gè)字節(jié)的空間,所以實(shí)際上,q的值增加了4,當(dāng)再將q的值經(jīng)過強(qiáng)行類型轉(zhuǎn)換賦給r的時(shí)候,實(shí)際上這時(shí)候r是指向了字符e,所以最后打印字符串時(shí),得到的結(jié)果是"efgh"。
(14)以下程序的輸出結(jié)果是 【14】 。
main()
{int x=0;
sub(&x,8,1);
printf("%d\n",x);
}
sub(int *a,int n,int k、
{if(k<=n) sub(a,n/2,2*k);
*a+:k:
}
答案:【14】7
評(píng)析:本題是一個(gè)遞歸調(diào)用。
主函數(shù)中調(diào)用sub函數(shù)流程如下:
sub(*x,8,1)-sub(*x,4,2)-sub(*x,2,4)-x=x+k=4
︱ ︱
x=x+k=7 x=x+k=6
(15)以下程序可以將從鍵盤輸入的十進(jìn)制數(shù)(1ong型)以二到十六進(jìn)制數(shù)的形式輸出,請(qǐng)?zhí)羁铡?BR> #include<stdio.h>
main()
{char b[16]={'O','l','2','3','4','5','6','7','8',
'9','A','B',C','D','E','F'};
int c[64],d,i=0,base;
long n:
print("Enter a number:\n");scanlf["%1d',&n);
print("Enter new base:\n");scanf("%ld",&base);
do
{
C[i]= 【15】
i++;n=n/base;
}while [n!=0);
pdntf("'Transmite new base:\n");
f0"--i;i>=O;--i)
{ d=c[I];
printf("%c",b 【16】 。
}
}
答案:【15】n%base
【16】[d]
評(píng)析:進(jìn)制轉(zhuǎn)換的除余取整法。在循環(huán)中,是先對(duì)數(shù)n整除以base取余作為轉(zhuǎn)換后的base進(jìn)制數(shù)的第i位存放到數(shù)組元素c[i】中,然后對(duì)n整除以base的商作同樣的操作,直到商為O為止,故第一空為n%base。
由于存入到數(shù)組c中的各個(gè)元素為對(duì)應(yīng)數(shù)制在十進(jìn)制上表示的各位的權(quán)值,在輸出時(shí)必須將其轉(zhuǎn)換成對(duì)應(yīng)的字符輸出,而在數(shù)組b中對(duì)應(yīng)存放了各個(gè)數(shù)對(duì)應(yīng)的字符,故第二空應(yīng)填[d]。
(16)設(shè)有如下宏定義
#define MYSWAP(z,x,y) {z=x;x=f;y=z;}
以下程序段通過宏調(diào)用實(shí)現(xiàn)變量a,b內(nèi)容的交換,請(qǐng)?zhí)羁铡?BR> float a=5,b=16,c;
MYSWAPI( 【17】 ,a,b);
答案:【17】c
評(píng)析:本題最重要的是理解宏MYSWAP(z,x,y)的作用:通過z實(shí)現(xiàn)x,y的內(nèi)容交換。所以MYSWAP(c,a,b)可以通過c實(shí)現(xiàn)a,b內(nèi)容的交換。
(17)以下程序用來統(tǒng)計(jì)文件字符的個(gè)數(shù),請(qǐng)?zhí)羁铡?BR> #include "stdio.h"
main ()
{FILE *fp;long num=0;
if((fp=fopen("fname.dat","r"))==NULl)
{printf("Open error\n");,exit,(O);}
while( 【18】 )
{num++;}
Printf["num=%ld\n",num];
Fclose(fp);
)
答案:【18】fgetc(fp)!=EOF或!feof(fp)
評(píng)析:本程序考的是龜etc函數(shù)。
此函數(shù)的功能是從指針變量印所指向的文件中讀入一個(gè)字符,如果執(zhí)行龜etc函數(shù)時(shí)遇到文件結(jié)束符,則函數(shù)返回文件結(jié)束符EOF。
(18)以下程序用來輸出結(jié)構(gòu)體變量ex所占存儲(chǔ)單元的字節(jié)數(shù),請(qǐng)?zhí)羁铡?BR> struct st
{char *name;double score;};
main()
{ struct st ex;
print("ex size:%d\n",sizeof( 【19】 ));
}
答案:【19】ex
評(píng)析:sizeof函數(shù)計(jì)算已知類型所占的字節(jié)數(shù)。sizeof(ex)即計(jì)算結(jié)構(gòu)體變量ex在內(nèi)存中所占的字節(jié)數(shù)。
(19)以下程序中,select函數(shù)的功能是:在N行M列的二維數(shù)組中,選出一個(gè)最大值作為函數(shù)值返回,并通過形參傳回此最大值所在的行下標(biāo),請(qǐng)?zhí)羁铡?BR> #define N 3
#define M 3
select(int a[N][M],int *n)
{int i,j,row=O,colum=O;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n=row;
retum( 【20】 );
}
main()
{int a[N][M]={9,11,23,6,l,15,9,17,20),max,n;
max=select(a,&n);
printf("max=%d,line=%d\n",max,n);
}
答案:【20】a[row][colum]
評(píng)析:本題通過判斷語句,將較大值的行下標(biāo)賦給row,列下標(biāo)賦給colum,循環(huán)結(jié)束后,a[row][colum]中是數(shù)組元素的最大值,所以應(yīng)該把它的行下標(biāo)賦給*n,將a[row][colum]的值返回。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |