一、選擇題(1)~(10)每小題2分,(11)-(50)每小題1分,共60分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應位置上,答在試卷上不得分。
(1)數(shù)據(jù)結構中,與所使用的計算機無關的是數(shù)據(jù)的________。
A)存儲結構 B)物理結構 C)邏輯結構 D)物理和存儲結構
答案:C
評析:數(shù)據(jù)結構概念一般包括3個方面的內(nèi)容,數(shù)據(jù)的邏輯結構、存儲結構及數(shù)據(jù)上的運算集合。數(shù)據(jù)的邏輯結構只抽象的反映數(shù)據(jù)元素之間的邏輯關系,而不管它在計算機中的存儲表示形式。
(2)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,
則出棧序列可能是________。
A)ABCED B)DBCEA C)CDABE D)DCBEA
答案:D
評析:棧操作原則上"后進先出",棧底至棧頂依次存放元素A、B、c、D,則表明這4個元素中D是最后進棧,B、c處于中間,A最早進棧。所以出棧時一定是先出D,再出c,最后出A。
(3)線性表的順序存儲結構和線性表的鏈式存儲結構分別是________。
A)順序存取的存儲結構、隨機存取的存儲結構
B)隨機存取的存儲結構、順序存取的存儲結構
C)隨機存取的存儲結構、隨機存取的存儲結構
D)任意存取的存儲結構、任意存取的存儲結構
答案:B
評析:順序存儲結構中,數(shù)據(jù)元素存放在一組地址連續(xù)的存儲單元中,每個數(shù)據(jù)元素地址可通過公式LOC(ai)。LOC(a1)+(i-1)L計算得到,從而實現(xiàn)了隨機存取。對于鏈式存儲結構,要對某結點進行存取,都得從鏈的頭指針指向的結點開始,這是一種順序存取的存儲結構。
(4)在單鏈表中,增加頭結點的目的是________。
A)方便運算的實現(xiàn) B)使單鏈表至少有一個結點
C)標識表結點中首結點的位置 D)說明單鏈表是線性表的鏈式存儲實現(xiàn)
答案:A
評析:頭結點不僅標識了表中首結點的位置,而且根據(jù)單鏈表(包含頭結點)的結構,只要掌握了表頭,就能夠訪問整個鏈表,因此增加頭結點目的是為了便于運算的實現(xiàn)。
(5)軟件 設計 包括軟件的結構、數(shù)據(jù)接口和過程設計,其中軟件的過程設計是指________。
A)模塊間的關系 B)系統(tǒng)結構部件轉(zhuǎn)換成軟件的過程描述
C)軟件層次結構 D)軟件開發(fā)過程
答案:B
評析:軟件設計包括軟件結構設計、數(shù)據(jù)設計、接口設計和過程設計。其中結構設計是定義軟件系統(tǒng)各主要部件之間的關系;數(shù)據(jù)設計是將分析時創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結構的定義;接口設計是描述軟件內(nèi)部、軟件和 操作系統(tǒng) 之間及軟件與人之間如何 通信 ;過程設計則是把系統(tǒng)結構部件轉(zhuǎn)換成軟件的過程性描述。
(6)為了避免流程圖在描述程序邏輯時的靈活性,提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程 圖,通常也把這種圖稱為________。
A)PAD圖 B)N-S圖 C)結構圖 D)數(shù)據(jù)流圖
答案:B
評析:常見的過程設計工具有:程序流程圖、N-S圖、PAD圖和HIPO圖。其中,為了避免流程圖在描述程序邏輯時的靈活性,提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,通常也把這種圖稱為N-S圖。
(7)數(shù)據(jù)處理的最小單位是________。
A)數(shù)據(jù) B)數(shù)據(jù)元素 C)數(shù)據(jù)項 D)數(shù)據(jù)結構
答案:C
評析:數(shù)據(jù)處理的最小單位是數(shù)據(jù)項;由若干數(shù)據(jù)項組成數(shù)據(jù)元素;而數(shù)據(jù)是指能夠被計算機識別、存儲和加工處理的信息載體;數(shù)據(jù)結構是指數(shù)據(jù)之間的相互關系和數(shù)據(jù)運算。
(8)下列有關數(shù)據(jù)庫的描述,正確的是________。
A)數(shù)據(jù)庫是一個DBF文件 B)數(shù)據(jù)庫是一個關系
C)數(shù)據(jù)庫是一個結構化的數(shù)據(jù)集合 D)數(shù)據(jù)庫是一組文件
答案:C
評析:數(shù)據(jù)庫(Database,簡稱DB)是數(shù)據(jù)的集合,它具有統(tǒng)一的結構形式并存放于統(tǒng)一的存儲介質(zhì)內(nèi),是多種應用數(shù)據(jù)的集成,并可被各個應用程序所共享。數(shù)據(jù)庫中的數(shù)據(jù)具有"集成"、"共享"之特點。
(9)單個用戶使用的數(shù)據(jù)視圖的描述稱為 ______ 。
A)外模式 B)概念模式 C)內(nèi)模式 D)邏輯模式
答案:A
評析:外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式;全局數(shù)據(jù)視圖的描述稱為概念模式,即數(shù)據(jù)庫中全部數(shù)據(jù)的整體邏輯結構的描述;物理存儲數(shù)據(jù)視圖的描述稱為內(nèi)模式,即數(shù)據(jù)庫在物理存儲方面的描述;存儲模式即為內(nèi)模式。
(10)需求分析階段的任務是確定______。
A)軟件開發(fā)方法 B)軟件開發(fā)工具 C)軟件開發(fā)費用 D)軟件系統(tǒng)功能
答案:D
評析:需求分析是軟件定義時期的最后一個階段,它的基本任務就是詳細調(diào)查現(xiàn)實世界要處理的對象(組織、部門、企業(yè)等),充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在此基礎上確定新系統(tǒng)的功能。
(11)若變量a是int類型,并執(zhí)行了語句:a='A'+1.6;,則正確敘述是______。
A)a的值是字符C B)a的值是浮點型
C)不允許字符型和浮點型相加 D)a的值是字符'A'的ASCII值加上l
答案:D
評析:在賦值表達式中,賦值符右邊的值的類型會自動轉(zhuǎn)換成賦值符左邊的變量的類型。在本題中,先用"A"的ASCII碼值加上1.46得到66.46,然后將它強制轉(zhuǎn)換成int型,轉(zhuǎn)換后,實數(shù)的小數(shù)部分全部
(12)若以下選項中變量已正確定義,則正確的賦值語句是______。
A)x1=26.8%3; B)1+2=x2; C)x3=0x12; D)x4=1+2=3;
答案:C
評析:賦值符號"="就是賦值運算符,它的作用是將一個數(shù)據(jù)賦給一個變量。如果賦值運算符兩側的類型不一致,但都是數(shù)值型或字符型時,在賦值時要進行類型轉(zhuǎn)換,所以選項A錯誤。在賦值表達式中,賦值運算符的左側必須是一個變量,所以選項B、D錯誤。選項C是將一個十六進制數(shù)賦值給變量x3。
(13)以下程序段的輸出結果是______。
int a=1234;
printf("%2d\n",a);
A)12 B)34 C)1234 D)提示出錯、無結果
答案:C
評析:本題主要考查對primf函數(shù)域?qū)捗枋龇睦斫猓谶@里我們要特別注意:輸出數(shù)據(jù)的實際精度并不主要決定于格式項中的域?qū)捙c精度,也不決定于輸入的數(shù)據(jù)精度,而主要決定于數(shù)據(jù)在機器內(nèi)的存儲精度。
(14)以下選項中不屬于C語言的類型的是______。
A)signed short int B)unsigned char
C)signed long D)long short
答案:D
評析:c語言中歸納起來,基本類型數(shù)據(jù)有以下幾種:
[signed]char;unsigned char;[signed]short[int];unsigned short[int];[signed]long[int];unsigned long[int];float;double.
(15)設有定義: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
評析:scanf函數(shù)要求其中的輸入項必須是地址形式,比如:普通變量的地址、數(shù)組名、指針變量等。對于普通變量,地址形式為:&變量名;當一個普通變量的地址賦予了一個指針變量名,scanf函數(shù)的輸入項處就可以直接寫這個指針變量名。
(16)以下程序的輸出結果是______。
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
評析:本題最重要的分析d=a>c?(a>c?a:C):(b)),首先運算括號內(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
評析:進入循環(huán)后,先執(zhí)行一個條件語句,如果i的值小于l,那么直接進入下一輪循環(huán),因為i的初始值是0,小于l,故直接進入下一輪循環(huán),又因為i的值始終沒有改變,所以這個循環(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");
}
}
}
程序運行時,從鍵盤輸入:0l<回車>,程序執(zhí)行后輸出結果是______。
A)another B)another C)another D)number
number number number number
another number
答案:C
評析:switch語句是多分支選擇語句,執(zhí)行完一個case后面的語句后,流程控制轉(zhuǎn)移到下一個case繼續(xù)執(zhí)行。"case常量表達式"只是起語句標號作用,并不是在該處進行條件判斷。在執(zhí)行switch語句時,根據(jù)switch后面表達式的值找到匹配的入口標號,就從此標號開始執(zhí)行下去,不再進行判斷
(19)以下程序的輸出結果是______。
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
評析:switch結構的執(zhí)行過程同上題。
(20)己定義c為字符型常量,則下列語句中正確的是______。
A)C='97' B)c="97" C)c=97 D)c="a"
答案:C
評析:字符變量占內(nèi)存一個字節(jié),只能放一個字符;字符常量為單引號括起的單個字符;字符串常量為雙引號括起的一串字符(可以0個字符,即"",稱為空串)。選項c為字符ASCII碼的整數(shù)形式。
(21)以下程序的輸出結果是_________。
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
評析:!a值為0,故!a&&!b的值為0,!c的值為l,而0IIl的值應該是l。所以答案是A。
(22)以下程序的輸出結果是_________。
#include
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
評析:本題中,有兩個循環(huán)語句。首先,i=0,進入while循環(huán),for語句中對循環(huán)沒有任何條件,故直接進入for循環(huán),因為0%10結果還是O,所以跳出for循環(huán),執(zhí)行i+:11,i的值變?yōu)?1,執(zhí)行a+=i,a的值變?yōu)?1:接著進入下一輪while循環(huán),在for循環(huán)中,因為i的值是11,對10取余結果為l,所以執(zhí)行i自減,i的值變成10,進入又一輪for循環(huán),因為10%10==0,所以跳出for循環(huán),執(zhí)行i+=1l,i的值變成21,執(zhí)行a+=i,也就是將21+1 1的和賦給a,a=32,因為此時i的值不再小于20,所以結束循環(huán),
故輸出結果是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);
}
程序運行后的輸出結果是_________ 。
A)3,4,5 B)5,3,4 C)5,4,3 D)3,5,4
答案:B
評析:函數(shù)n是一個求兩個整數(shù)中值的函數(shù),函數(shù)f2是一個求兩個整數(shù)中最小值的函數(shù)。在main函數(shù)中兩次調(diào)用函數(shù)n,求得變量a、b、、c中的值賦值給d;兩次調(diào)用函數(shù)f2,求得變量a、b、c中的最小值賦值給e;表達式a+b+c-d-e得到中間值,輸出5,3,4。
(24)以下程序的輸出結果是_________。
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
評析:靜態(tài)變量,在編譯時就為其分配了存儲空間,程序一開始執(zhí)行便被建立,直到該程序執(zhí)行結束都存在,而不像動態(tài)變量只存在于函數(shù)或分程序被調(diào)用期間。在函數(shù)多次被調(diào)用的過程中靜態(tài)局部變量的值具有可繼承性。
(25)已定義以下函數(shù):
fun(int *p)
{retum *p;}
該函數(shù)的返回值是______ 。
A)不確定的值 B)形參p中存放的值 C)形參p所指存儲單元中的值 D)形參p的地址值
答案:C.
評析:函數(shù)首部fun(int*p)中+p表示這是一個指針變量,指向整型數(shù)據(jù),用來從主調(diào)函數(shù)接收地址;而語句return *p;中的*p代表p所指向存儲單元中的值。
(26)若有以下程序
#include
Void f(int n);
main()
{void f(int n);
f(5);
}
Void f(int n)
{print("%d\n",n);}
則以下敘述中不正確的是______ 。
A)若只在主函數(shù)中對函數(shù)f進行說明,則只能在主函數(shù)中正確調(diào)用函數(shù)f
B)若在主函數(shù)前對函數(shù)f進行說明,則在主函數(shù)和其后的其它函數(shù)中都可以正確調(diào)用函數(shù)f
C)對于以上函數(shù)程序,編譯時系統(tǒng)會提示出錯信息;提示對f函數(shù)重復說明
D)函數(shù)f無返回值,所以可用void將其類型定義為無值型
答案:C
評析:一個函數(shù)在一個文件中的定義只能有一次,但對它的聲明卻可以有很多個。一個函數(shù)可以正確調(diào)用在當前函數(shù)之前聲明的函數(shù)。
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應位置上,答在試卷上不得分。
(1)數(shù)據(jù)結構中,與所使用的計算機無關的是數(shù)據(jù)的________。
A)存儲結構 B)物理結構 C)邏輯結構 D)物理和存儲結構
答案:C
評析:數(shù)據(jù)結構概念一般包括3個方面的內(nèi)容,數(shù)據(jù)的邏輯結構、存儲結構及數(shù)據(jù)上的運算集合。數(shù)據(jù)的邏輯結構只抽象的反映數(shù)據(jù)元素之間的邏輯關系,而不管它在計算機中的存儲表示形式。
(2)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,
則出棧序列可能是________。
A)ABCED B)DBCEA C)CDABE D)DCBEA
答案:D
評析:棧操作原則上"后進先出",棧底至棧頂依次存放元素A、B、c、D,則表明這4個元素中D是最后進棧,B、c處于中間,A最早進棧。所以出棧時一定是先出D,再出c,最后出A。
(3)線性表的順序存儲結構和線性表的鏈式存儲結構分別是________。
A)順序存取的存儲結構、隨機存取的存儲結構
B)隨機存取的存儲結構、順序存取的存儲結構
C)隨機存取的存儲結構、隨機存取的存儲結構
D)任意存取的存儲結構、任意存取的存儲結構
答案:B
評析:順序存儲結構中,數(shù)據(jù)元素存放在一組地址連續(xù)的存儲單元中,每個數(shù)據(jù)元素地址可通過公式LOC(ai)。LOC(a1)+(i-1)L計算得到,從而實現(xiàn)了隨機存取。對于鏈式存儲結構,要對某結點進行存取,都得從鏈的頭指針指向的結點開始,這是一種順序存取的存儲結構。
(4)在單鏈表中,增加頭結點的目的是________。
A)方便運算的實現(xiàn) B)使單鏈表至少有一個結點
C)標識表結點中首結點的位置 D)說明單鏈表是線性表的鏈式存儲實現(xiàn)
答案:A
評析:頭結點不僅標識了表中首結點的位置,而且根據(jù)單鏈表(包含頭結點)的結構,只要掌握了表頭,就能夠訪問整個鏈表,因此增加頭結點目的是為了便于運算的實現(xiàn)。
(5)軟件 設計 包括軟件的結構、數(shù)據(jù)接口和過程設計,其中軟件的過程設計是指________。
A)模塊間的關系 B)系統(tǒng)結構部件轉(zhuǎn)換成軟件的過程描述
C)軟件層次結構 D)軟件開發(fā)過程
答案:B
評析:軟件設計包括軟件結構設計、數(shù)據(jù)設計、接口設計和過程設計。其中結構設計是定義軟件系統(tǒng)各主要部件之間的關系;數(shù)據(jù)設計是將分析時創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結構的定義;接口設計是描述軟件內(nèi)部、軟件和 操作系統(tǒng) 之間及軟件與人之間如何 通信 ;過程設計則是把系統(tǒng)結構部件轉(zhuǎn)換成軟件的過程性描述。
(6)為了避免流程圖在描述程序邏輯時的靈活性,提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程 圖,通常也把這種圖稱為________。
A)PAD圖 B)N-S圖 C)結構圖 D)數(shù)據(jù)流圖
答案:B
評析:常見的過程設計工具有:程序流程圖、N-S圖、PAD圖和HIPO圖。其中,為了避免流程圖在描述程序邏輯時的靈活性,提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,通常也把這種圖稱為N-S圖。
(7)數(shù)據(jù)處理的最小單位是________。
A)數(shù)據(jù) B)數(shù)據(jù)元素 C)數(shù)據(jù)項 D)數(shù)據(jù)結構
答案:C
評析:數(shù)據(jù)處理的最小單位是數(shù)據(jù)項;由若干數(shù)據(jù)項組成數(shù)據(jù)元素;而數(shù)據(jù)是指能夠被計算機識別、存儲和加工處理的信息載體;數(shù)據(jù)結構是指數(shù)據(jù)之間的相互關系和數(shù)據(jù)運算。
(8)下列有關數(shù)據(jù)庫的描述,正確的是________。
A)數(shù)據(jù)庫是一個DBF文件 B)數(shù)據(jù)庫是一個關系
C)數(shù)據(jù)庫是一個結構化的數(shù)據(jù)集合 D)數(shù)據(jù)庫是一組文件
答案:C
評析:數(shù)據(jù)庫(Database,簡稱DB)是數(shù)據(jù)的集合,它具有統(tǒng)一的結構形式并存放于統(tǒng)一的存儲介質(zhì)內(nèi),是多種應用數(shù)據(jù)的集成,并可被各個應用程序所共享。數(shù)據(jù)庫中的數(shù)據(jù)具有"集成"、"共享"之特點。
(9)單個用戶使用的數(shù)據(jù)視圖的描述稱為 ______ 。
A)外模式 B)概念模式 C)內(nèi)模式 D)邏輯模式
答案:A
評析:外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式;全局數(shù)據(jù)視圖的描述稱為概念模式,即數(shù)據(jù)庫中全部數(shù)據(jù)的整體邏輯結構的描述;物理存儲數(shù)據(jù)視圖的描述稱為內(nèi)模式,即數(shù)據(jù)庫在物理存儲方面的描述;存儲模式即為內(nèi)模式。
(10)需求分析階段的任務是確定______。
A)軟件開發(fā)方法 B)軟件開發(fā)工具 C)軟件開發(fā)費用 D)軟件系統(tǒng)功能
答案:D
評析:需求分析是軟件定義時期的最后一個階段,它的基本任務就是詳細調(diào)查現(xiàn)實世界要處理的對象(組織、部門、企業(yè)等),充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在此基礎上確定新系統(tǒng)的功能。
(11)若變量a是int類型,并執(zhí)行了語句:a='A'+1.6;,則正確敘述是______。
A)a的值是字符C B)a的值是浮點型
C)不允許字符型和浮點型相加 D)a的值是字符'A'的ASCII值加上l
答案:D
評析:在賦值表達式中,賦值符右邊的值的類型會自動轉(zhuǎn)換成賦值符左邊的變量的類型。在本題中,先用"A"的ASCII碼值加上1.46得到66.46,然后將它強制轉(zhuǎn)換成int型,轉(zhuǎn)換后,實數(shù)的小數(shù)部分全部
(12)若以下選項中變量已正確定義,則正確的賦值語句是______。
A)x1=26.8%3; B)1+2=x2; C)x3=0x12; D)x4=1+2=3;
答案:C
評析:賦值符號"="就是賦值運算符,它的作用是將一個數(shù)據(jù)賦給一個變量。如果賦值運算符兩側的類型不一致,但都是數(shù)值型或字符型時,在賦值時要進行類型轉(zhuǎn)換,所以選項A錯誤。在賦值表達式中,賦值運算符的左側必須是一個變量,所以選項B、D錯誤。選項C是將一個十六進制數(shù)賦值給變量x3。
(13)以下程序段的輸出結果是______。
int a=1234;
printf("%2d\n",a);
A)12 B)34 C)1234 D)提示出錯、無結果
答案:C
評析:本題主要考查對primf函數(shù)域?qū)捗枋龇睦斫猓谶@里我們要特別注意:輸出數(shù)據(jù)的實際精度并不主要決定于格式項中的域?qū)捙c精度,也不決定于輸入的數(shù)據(jù)精度,而主要決定于數(shù)據(jù)在機器內(nèi)的存儲精度。
(14)以下選項中不屬于C語言的類型的是______。
A)signed short int B)unsigned char
C)signed long D)long short
答案:D
評析:c語言中歸納起來,基本類型數(shù)據(jù)有以下幾種:
[signed]char;unsigned char;[signed]short[int];unsigned short[int];[signed]long[int];unsigned long[int];float;double.
(15)設有定義: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
評析:scanf函數(shù)要求其中的輸入項必須是地址形式,比如:普通變量的地址、數(shù)組名、指針變量等。對于普通變量,地址形式為:&變量名;當一個普通變量的地址賦予了一個指針變量名,scanf函數(shù)的輸入項處就可以直接寫這個指針變量名。
(16)以下程序的輸出結果是______。
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
評析:本題最重要的分析d=a>c?(a>c?a:C):(b)),首先運算括號內(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
評析:進入循環(huán)后,先執(zhí)行一個條件語句,如果i的值小于l,那么直接進入下一輪循環(huán),因為i的初始值是0,小于l,故直接進入下一輪循環(huán),又因為i的值始終沒有改變,所以這個循環(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");
}
}
}
程序運行時,從鍵盤輸入:0l<回車>,程序執(zhí)行后輸出結果是______。
A)another B)another C)another D)number
number number number number
another number
答案:C
評析:switch語句是多分支選擇語句,執(zhí)行完一個case后面的語句后,流程控制轉(zhuǎn)移到下一個case繼續(xù)執(zhí)行。"case常量表達式"只是起語句標號作用,并不是在該處進行條件判斷。在執(zhí)行switch語句時,根據(jù)switch后面表達式的值找到匹配的入口標號,就從此標號開始執(zhí)行下去,不再進行判斷
(19)以下程序的輸出結果是______。
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
評析:switch結構的執(zhí)行過程同上題。
(20)己定義c為字符型常量,則下列語句中正確的是______。
A)C='97' B)c="97" C)c=97 D)c="a"
答案:C
評析:字符變量占內(nèi)存一個字節(jié),只能放一個字符;字符常量為單引號括起的單個字符;字符串常量為雙引號括起的一串字符(可以0個字符,即"",稱為空串)。選項c為字符ASCII碼的整數(shù)形式。
(21)以下程序的輸出結果是_________。
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
評析:!a值為0,故!a&&!b的值為0,!c的值為l,而0IIl的值應該是l。所以答案是A。
(22)以下程序的輸出結果是_________。
#include
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
評析:本題中,有兩個循環(huán)語句。首先,i=0,進入while循環(huán),for語句中對循環(huán)沒有任何條件,故直接進入for循環(huán),因為0%10結果還是O,所以跳出for循環(huán),執(zhí)行i+:11,i的值變?yōu)?1,執(zhí)行a+=i,a的值變?yōu)?1:接著進入下一輪while循環(huán),在for循環(huán)中,因為i的值是11,對10取余結果為l,所以執(zhí)行i自減,i的值變成10,進入又一輪for循環(huán),因為10%10==0,所以跳出for循環(huán),執(zhí)行i+=1l,i的值變成21,執(zhí)行a+=i,也就是將21+1 1的和賦給a,a=32,因為此時i的值不再小于20,所以結束循環(huán),
故輸出結果是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);
}
程序運行后的輸出結果是_________ 。
A)3,4,5 B)5,3,4 C)5,4,3 D)3,5,4
答案:B
評析:函數(shù)n是一個求兩個整數(shù)中值的函數(shù),函數(shù)f2是一個求兩個整數(shù)中最小值的函數(shù)。在main函數(shù)中兩次調(diào)用函數(shù)n,求得變量a、b、、c中的值賦值給d;兩次調(diào)用函數(shù)f2,求得變量a、b、c中的最小值賦值給e;表達式a+b+c-d-e得到中間值,輸出5,3,4。
(24)以下程序的輸出結果是_________。
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
評析:靜態(tài)變量,在編譯時就為其分配了存儲空間,程序一開始執(zhí)行便被建立,直到該程序執(zhí)行結束都存在,而不像動態(tài)變量只存在于函數(shù)或分程序被調(diào)用期間。在函數(shù)多次被調(diào)用的過程中靜態(tài)局部變量的值具有可繼承性。
(25)已定義以下函數(shù):
fun(int *p)
{retum *p;}
該函數(shù)的返回值是______ 。
A)不確定的值 B)形參p中存放的值 C)形參p所指存儲單元中的值 D)形參p的地址值
答案:C.
評析:函數(shù)首部fun(int*p)中+p表示這是一個指針變量,指向整型數(shù)據(jù),用來從主調(diào)函數(shù)接收地址;而語句return *p;中的*p代表p所指向存儲單元中的值。
(26)若有以下程序
#include
Void f(int n);
main()
{void f(int n);
f(5);
}
Void f(int n)
{print("%d\n",n);}
則以下敘述中不正確的是______ 。
A)若只在主函數(shù)中對函數(shù)f進行說明,則只能在主函數(shù)中正確調(diào)用函數(shù)f
B)若在主函數(shù)前對函數(shù)f進行說明,則在主函數(shù)和其后的其它函數(shù)中都可以正確調(diào)用函數(shù)f
C)對于以上函數(shù)程序,編譯時系統(tǒng)會提示出錯信息;提示對f函數(shù)重復說明
D)函數(shù)f無返回值,所以可用void將其類型定義為無值型
答案:C
評析:一個函數(shù)在一個文件中的定義只能有一次,但對它的聲明卻可以有很多個。一個函數(shù)可以正確調(diào)用在當前函數(shù)之前聲明的函數(shù)。