




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
全國計算機等級考試《二級C語言程序設計》模擬試卷四[單選題]1.結構化程序設計主要強調的是()。A.程序的規模B.程序的(江南博哥)效率C.程序設計語言的先進性D.程序易讀性參考答案:D參考解析:遵循結構化程序的設計原則,按結構化程序設計方法設計出的程序具有明顯的優點:①程序易于理解、使用和維護;②提高了編程工作的效率,降低了軟件開發成本。答案選擇D選項。[單選題]2.為了使模塊盡可能獨立,要求()。A.模塊的內聚程度要盡量高,且各模塊間的耦合程度要盡量強B.模塊的內聚程度要盡量高,且各模塊間的耦合程度要盡量弱C.模塊的內聚程度要盡量低,且各模塊間的偶合程度要盡量弱D.模塊的內聚程度要盡量低,且各模塊間的耦合程度要盡量強參考答案:B參考解析:系統設計的質量主要反映在模塊的獨立性上。評價模塊獨立性的主要標準有兩個:一是模塊之間的耦合,它表明兩個模塊之間互相獨立的程度;二是模塊內部之間的關系是否緊密,稱為內聚。一般來說,要求模塊之間的耦合盡可能地弱,即模塊盡可能獨立,而要求模塊的內聚程度盡量地高。答案選擇B選項。[單選題]3.設某二叉樹的后序序列為CBA,中序序列為ABC,則該二叉樹的前序序列為()。A.BCAB.CBAC.ABCD.CAB參考答案:C參考解析:后序序列為CBA,中序序列為ABC,則說明,A為根結點,并且B和C均在A的右子樹上;結點B和C中,后序序列為CB,中序序列為BC,則說明結點C在結點B的右子樹上,根據分析可得,該二叉樹的前序序列為ABC,答案選擇C選項。[單選題]4.結構化程序的三種基本控制結構是()。A.順序、選擇和重復(循環)B.過程、子程序和分程序C.順序、選擇和調用D.調用、返回和轉移參考答案:A參考解析:結構化程序設計中三種基本控制結構為順序、選擇和重復(循環)。答案選擇A選項。[單選題]5.在結構化方法中,軟件功能分解屬于下列軟件開發中的()階段。A.詳細設計B.需求分析C.總體設計D.編程調試參考答案:C參考解析:總體設計過程通常由兩個主要階段組成:①系統設計,確定系統的具體實現方案;②結構設計,確定軟件結構。為確定軟件結構,首先需要從實現角度把復雜的功能進一步分解。分析員結合算法描述仔細分析數據流圖中的每個處理,如果一個處理的功能過分復雜,必須把它的功能適當地分解成一系列比較簡單的功能。答案選擇C選項。[單選題]6.下面描述不屬于軟件特點的是()。A.軟件是一種邏輯實體,具有抽象性B.軟件在使用中不存在磨損、老化問題C.軟件復雜性高D.軟件使用不涉及知識產權參考答案:D參考解析:軟件具有以下特點:①軟件是一種邏輯實體,具有抽象性;②軟件沒有明顯的制作過程;③軟件在使用期間不存在磨損、老化問題;④軟件對硬件和環境具有依賴性;⑤軟件復雜性高,成本昂貴;⑥軟件開發涉及諸多的社會因素,如知識產權等。答案選擇D選項。[單選題]7.程序測試的目的是()。A.為被測程序設計正確的測試用例B.發現并改正程序中的錯誤C.發現程序中的錯誤D.改正程序中的錯誤參考答案:C參考解析:程序測試是使用人工或自動手段來運行或測定某個系統的過程,其目的在于檢驗它是否滿足規定的需求或是弄清預期結果與實際結果之間的差別,即為發現錯誤而執行程序的過程,而不是改正錯誤,調試是在測試的基礎上去改正錯誤。答案選擇C選項。[單選題]8.關系數據庫管理系統所管理的關系是()。A.若干個二維表B.一個DBF文件C.一個DBC文件D.若干個DBC文件參考答案:A參考解析:在關系數庫中,一個表就是一個關系,關系數據庫管理系統管理的關系就是多個二維表。答案選擇A選項。[單選題]9.在數據庫中,數據模型包括數據結構、數據操作和()。A.數據約束B.數據類型C.關系運算D.查詢參考答案:A參考解析:在數據庫系統中的數據模型有三個要素:數據結構、數據操作和數據的約束條件。答案選擇A選項。[單選題]10.設有如下三個關系表:下列操作中正確的是()。A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S參考答案:B參考解析:觀察可知,T中的元組既包含R中的所有元素又包含S中的所有元組,則T=R∪S。答案選擇B選項。[單選題]11.以下選項中合法的標識符是()。A._11B.1-1C.1_1D.1__參考答案:A參考解析:C語言的標識符命名規則為:①只能由字母、數字和下劃線3種字符組成;②標識符首位必須是字母或下劃線;③不能與C語言中的關鍵字或保留字相同。CD兩項,標識符首位不能為數字;B項,標識符首位不能為數字且“-”為不合法的字符。答案選擇A選項。[單選題]12.以下敘述中錯誤的是()。A.C程序經過編譯、鏈接步驟之后才能形成一個真正可執行的二進制機器指令文件B.C語言中的每條可執行語句和非執行語句最終都將被轉換成二進制的機器指令C.用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中D.C語言源程序經編譯后生成后綴為.obj的目標程序參考答案:B參考解析:B項錯誤,注釋語句不會被翻譯成二進制的機器指令。C源程序經過C編譯程序編譯之后生成后綴為.obj的二進制文件(稱為目標文件),然后由“鏈接程序”(Link)的軟件把.obj文件與各種庫函數連接起來生成一個后綴為.exe的可執行文件。答案選擇B選項。[單選題]13.若有定義:inta=0,b=0,c=0,d=0;有C語言表達式(a++&&b++)?c++:d++,以下關于其執行順序的敘述正確是()。A.先執行a++,表達式a++的值為0,由此即可確定(a++&&b++)值為0,因此執行d++B.先執行a++,表達式a++的值為0;再執行b++,表達式b++的值為0,由此可確定(a++&&b++)值為0,因此執行d++C.先執行a++,表達式a++的值為1;再執行b++,表達式b++的值為1,由此可確定(a++&&b++)值為1,因此執行c++D.先執行b++,表達式b++的值為1;再執行a++,表達式a++的值為1,由此可確定(a++&&b++)值為1,因此執行c++參考答案:A參考解析:把握前置運算和后置運算的基本運算規則。表達式1?表達式2:表達式3,若表達式1為真,則執行表達式2,否則執行表達式3。邏輯與運算符遵循“短路求值”策略,即在進行求值時,只要最終的結果已經可以確定是假,求值過程便告終止,表達式(a++&&b++)中,左操作數a++的值為0,已經可以確定整個邏輯表達式的結果為0,因此右操作數b++不再求解,直接執行表達式3,即d++,答案選擇A選項。[單選題]14.設有兩行定義語句:intscanf;floatcase;則以下敘述正確的是()。A.第2行語句不合法B.兩行定義語句都合法C.第1行語句不合法D.兩行定義語句都不合法參考答案:A參考解析:預定義標識符是系統已經有過定義的標識符,用戶可以重新定義,可以作為變量名。scanf為庫函數名,屬于預定義標識符,可以被用戶重定義,第一行語句合法。C語言關鍵字是被保留的,不能用作其他用途的一些標識符,它們在程序中都代表著固定的含義,用戶不可重新定義。case是選擇結構switch語句中的關鍵字,不可被用戶重定義,第二行語句不合法。答案選擇A選項。[單選題]15.關于C語言標識符,以下敘述錯誤的是()。A.標識符可全部由數字組成B.標識符可全部由下劃線組成C.標識符可全部由小寫字母組成D.標識符可全部由大寫字母組成參考答案:A參考解析:C語言標識符只能由字母、數字、下劃線構成,且只能以字母、下劃線開頭,故答案選擇A選項。[單選題]16.若有C語言表達式2+3*4+7/3,以下選項中敘述正確的執行順序是()。A.先執行3*4得12,再執行2+12得14,再執行7/3得2,最后執行14+2得16B.先執行3*4得12,再執行7/3得2.5,最后執行2+12+2.5得16.5C.先執行7/3得2,再執行3*4得12,再執行12+2得14,最后執行2+14得16D.先執行2+3得5,再執行5*4得20,再執行20+7得27,最后執行27/3得9參考答案:A參考解析:C語言表達式的的執行順序是從左向右,在表達式求值時,按照運算符的優先級別從高到低執行,答案選擇A選項。[單選題]17.若有定義:charc;intd;程序運行時輸入:c=1,d=2<回車>,能把字符1輸入給變量c、整數2輸入給變量d的輸入語句是()。A.scanf("c=%c,d=%d",&c,&d);B.scanf("c=%cd=%d",&c,&d);C.scanf("c=%d,d=%d",&c,&d);D.scanf("c=%dd=%d",&c,&d);參考答案:A參考解析:在scanf()函數中,格式字符串的形式必須與地址格式保持一致,BD兩項中格式控制部分缺少逗號,所以B、D選項不正確。C選項中c=%d是以數值格式存入c變量。答案選擇A選項。[單選題]18.若有定義:inta;floatb;doublec;,程序運行時輸入:1,2,3<回車>,能把1輸入給變量a、2輸入給變量b、3輸入給變量c的輸入語句是()。A.scanf("%d,%f,%lf",&a,&b,&c);B.scanf("%d%f%lf",&a,&b,&c);C.scanf("%d,%lf,%lf",&a,&b,&c);D.scanf("%d,%f,%f",&a,&b,&c);參考答案:A參考解析:在scanf()函數中a變量為整型,用%d格式字符串,b變量為單精度浮點數數,用%f格式字符串,c變量為雙精度浮點數,用%lf格式字符串;同時,scanf函數中格式字符串的形式必須和輸入語句的格式一致,B項中缺少逗號,答案選擇A選項。[單選題]19.有以下程序#includemain(){inta,b;for(a=0;a<3;a++){scanf("%d",&b);switch(b){default:printf("%d,",++b);case1:printf("%d,",++b);case2:printf("%d,",++b);}}}執行時輸入:123<回車>,則輸出結果是()。A.2,3,3,4,5,6,B.2,3,4,C.2,2,3,4,4,4,D.2,3,4,3,4,4,參考答案:A參考解析:考查C語言中的switch-case語句。執行switch-case語句時,一定會先進行匹配,匹配成功則執行當前case語句,再根據是否有break,判斷是否繼續輸出,或是跳出判斷。程序中輸入1時,與case1匹配成功,執行后面的輸出語句,輸出2,且此時b=2,因為后面沒有break語句,繼續執行下一條輸出語句,輸出3。繼續輸入2時,與case2匹配成功,執行后面的輸出語句,輸出3。輸入3時,沒有可匹配的case語句,執行default語句,輸出4,b變為4;后面沒有break語句,繼續執行case1后的輸出語句,輸出5,b變為5;同理繼續執行case2后面的輸出語句,輸出6。答案選擇A選項。[單選題]20.對于if(表達式)語句,以下敘述正確的是()。A.“表達式”的值可以是任意合法的數值B.變量不能出現在“表達式”中C.常量不能出現在“表達式”中D.如果“表達式”的值不是邏輯值,程序會出編譯錯誤參考答案:A參考解析:if語句中的“表達式”可以是任意合法的C語言表達式,包括關系表達式和邏輯表達式等,也可以是任意的數值類型(包括整型、實型、字符型等),A項正確。“表達式”中可以出現變量或者常量,也不一定必須是邏輯值,B、C、D項錯誤。答案選擇A選項。[單選題]21.有以下程序#include
main(){int
a=-1,
b=-1;for(;
++a;)++b;printf("%d,%d\n",
a,
b);}程序運行后的輸出結果是()。A.0,-1B.0,0C.-1,-1D.結果不確定參考答案:A參考解析:這是對for循環的基本考查,C語言中for循環的形式:for(表達式1;表達式2;表達式3),本題中表達式1和表達式3為空語句。程序執行過程為:定義整型變量a、b并賦初值,執行for循環,執行控制語句++a,a先自增變為0再使用,不滿足控制條件,跳出循環。因此b并未改變,最后輸出0,-1。答案選擇A選項。[單選題]22.有以下程序#includemain(){inta=1,b=0;for(;a<5;a++){if(a%2==0)break;continue;b+=a;}printf("%d\n",b);}程序運行后的輸出結果是()。A.0B.1C.10D.4參考答案:A參考解析:該程序的for循環中,如果循環變量a為偶數,則執行break語句直接跳出循環;如果a為奇數,則直接執行continue語句進入下一次循環。因此無論a取何值,語句b+=a都不會執行,即b沒有改變,最后輸出0。答案選擇A選項。[單選題]23.要求通過while循環不斷讀入字符,當讀入字母N時結束循環。若變量已正確定義,以下正確的程序段是()。A.while((ch=getchar())!='N')printf("%c",ch);B.while(ch=getchar()='N')printf("%c",ch);C.while(ch=getchar()=='N')printf("%c",ch);D.while((ch=getchar())=='N')printf("%c",ch);參考答案:A參考解析:A項正確,“(ch=getchar())!='N'”表示先把getchar()函數的返回值賦值給ch,然后判斷,當讀入字母不為N時,ch與'N'不相等,執行打印函數printf,當讀入字母N時,ch與'N'相等,循環結束,同理知選項D錯誤。B項錯誤,“ch=getchar()='N'”表達式從右向左計算,會把′N′賦值給getchar()函數的返回值,而getchar()函數的返回值是右值,不可改變,出現編譯錯誤;C項錯誤,“ch=getchar()=='N'”中“==(等于)”的優先級高于“=(賦值)”,它等價于“ch=(getchar()=='N')”,此時ch的取值是0或1。答案選擇A選項。[單選題]24.以下敘述中正確的是()。A.數組說明符的一對方括號中只能使用整型常量,而不能使用表達式B.一條語句只能定義一個數組C.每個數組包含一組具有同一類型的變量,這些變量在內存中占有連續的存儲單元D.在引用數組元素時,下標表達式可以使用浮點數參考答案:C參考解析:A項錯誤,方括號中應當是整型常量表達式,可以使用表達式,只要計算結果是整型常量即可;B項錯誤,可以使用逗號隔開,來定義多個數組;D項錯誤,引用數組時,下標必須是自然數,還應保證下標不越界。C項正確,數組內部的變量都是同一類型,在內存中是連續存儲的。答案選擇C選項。[單選題]25.以下敘述中正確的是()。A.charc1,c2,*c3,c4[40];是合法的變量定義語句B.數組下標的下限由數組中第一個非零元素的位置決定C.數組下標的下限由數組中第一個被賦值元素的位置決定D.數組下標的下限是1參考答案:A參考解析:A正確,charc1、c2、*c3、c4[40]表示定義了兩個字符變量c1、c2,一個字符指針c3,一個字符數組c4。數組的下限永遠為0,選項B、C、D錯,答案選擇A選項。[單選題]26.設有定義:charp[]={'1','2','3'},*q=p;,以下不能計算出一個char型數據所占字節數的表達式是()。A.sizeof(*q)B.sizeof(char)C.sizeof(p)D.sizeof(p[0])參考答案:C參考解析:p是char類型數組,sizeof(p)計算的是數組p中所有元素所占用的字節數,而不是char型數據所占字節數。答案選擇C選項。[單選題]27.以下敘述中正確的是()。A.語句“chara[2]={"A","B"};”是合法的,定義了一個包含兩個字符的數組B.語句“inta[]={0};”是不合法的,遺漏了數組的大小C.語句“inta[8]={0};”是合法的D.語句“chara[3];a="AB";”是合法的,因為數組有三個字符空間的容量,可以保存兩個字符參考答案:C參考解析:A項錯誤,a是char類型的數組,里面的元素應該是字符而非字符串,應該用單引號括起來;B項錯誤,C語言規定可以通過賦初值來定義數組的大小,這時數組說明符的一對方括號中可以不指定數組的大小;C項正確,表示定義了長度為8的int型數組,它里面的每個元素都是0。當所賦初值少于所定義數組的元素個數時,將自動給后面的元素補以初值0;D項錯誤,數組變量一旦定義,其地址值不可改變,不能給數組名重新賦值。答案選擇C選項。[單選題]28.有以下程序#includeintk=5;voidf(int*s){s=&k;}main(){intm=3,*p=&m;f(p);printf("%d,%d\n",m,*p);}程序的運行結果是()。A.3,3B.5,5C.3,5D.5,3參考答案:A參考解析:考查函數傳參。C語言中,數據只能從實參單向傳遞給形參,指針作為函數參數時,形參仍然作為實參的副本被賦值,形參指針變量的指向改變不能影響實參指針變量的指向。結果不變,答案選擇A選項。[單選題]29.以下敘述中正確的是()。A.函數調用時,不必區分函數名稱的大小寫B.調用函數時,函數名必須與被調用的函數名完全一致C.函數名允許用數字開頭D.在函數體中只能出現一次return語句參考答案:B參考解析:調用函數的時候只有保證調用語句的函數名和被調函數的函數名、參數列表一致才能保證調用的正確性,B正確。C語言對大小寫敏感,選項A錯。用戶自定義的函數名需要遵循用戶標識符的命名規則,由字母、數字、下劃線組成并且第一個字符不能為數字,選項C錯。一個函數每次只能使用一個return語句,但是該函數體中可以有多個返回點,也就是有多條return語句,每次只從其中一點返回,選項D錯。答案選擇B選項。[單選題]30.有以下程序#include
int
m1(int
x,int
y){return
x<=y
?
x
:y;}int
m2(int
x,int
y){return
x<=y
?
y
:x;}int
fun(int
a,int
b){return
a+b;}main(){int
x=2,y=3,z=1;printf("%d\n",
fun(m1(x,y),m2(y,z)));
}程序的運行結果是()。A.5B.6C.4D.3參考答案:A參考解析:函數m1()返回兩個參數中較小的數值,函數m2()返回兩個參數中較大的數值,函數fun()返回兩個參數之和,所以fun(m1(x,y),m2(y,z))=fun(m1(2,3),m2(3,1))=fun(2,3)=5,答案選擇A選項。[單選題]31.若有定義:char
s[30]
=
{0};運行時輸入:This
is
a
sdiving.<回車>則以下不能正確讀入整個字符串:This
is
a
sdiving.到字符數組
s
中的語句組是()。A.scanf("%s",s);B.gets(s);C.for(i=0;(c=getchar())!='\n';i++)s[i]=c;D.i=0;while((c=getchar())!='\n')s[i++]=c;參考答案:A參考解析:scanf函數用格式控制符%s讀取字符串時,不能接受空格、制表符Tab、回車。即在讀入Thisisastring時,讀到第一個空格時結束。最后s中的內容是This。答案選擇A選項。[單選題]32.關于地址和指針,以下說法正確的是()。A.通過強制類型轉換可以將一種類型的指針變量賦值給另一種類型的指針變量B.可以取一個常數的地址賦值給同類型的指針變量C.可以取一個表達式的地址賦值給同類型的指針變量D.可以取一個指針變量的地址賦值給基類型相同的指針變量參考答案:A參考解析:常數的地址存儲在內存的常量區,常量區存儲的都是常量,值都是不可修改的,所以直接取常量的地址賦給指針變量沒有任何意義,C語言也不允許這樣做,編譯會出錯,B項錯誤;表達式的值存儲在臨時變量中,內存中存在專門用來存儲臨時變量的區域,對這塊地址進行操作也是沒有意義的,C語言不允許這樣做,編譯會出錯,C項錯誤;可以取一個指針變量的地址,但是指針變量的地址屬于指針,只能賦值給指針類型的指針變量,D項錯誤。答案選擇A選項。[單選題]33.若有以下程序#includevoidsp(int*a){intb=2;*a=*a*2;printf("%d,",*a);a=&b;*a=*a*2;printf("%d,",*a);}main(){intk=3;sp(&k);printf("%d\n",k);}則程序的輸出結果是()。A.9,4,9B.6,4,3C.6,12,12D.6,4,6參考答案:D參考解析:考查地址傳參。地址傳參過程中,實參和形參指向同一段地址空間,所以指向的變量的變化保持同步,但是指向的地址空間實參不會隨著形參的變化而變化。函數sp()中,*a為3,所以第一次輸出值為6;之后*a指向變量b的地址,所以輸出結果為4,*a指向的變化不能改變k的地址,所以k值為6,答案選擇D選項。[單選題]34.有以下程序:#includeint*f(int*s,int*t){if(*s<*t)s=t;returns;}main(){inti=3,j=5,*p=&i,*q=&j,*r;r=f(p,q);printf("%d,%d,%d,%d,%d\n",i,j,*p,*q,*r);}程序的運行結果是()。A.3,5,3,5,5B.3,5,5,5,5C.5,3,3,3,5D.5,5,5,5,5參考答案:A參考解析:考查指針與函數。被調函數為指針型函數,返回的是s這一指針型數據。雖然該函數進行的是地址傳參,但只是改變了指針的指向,對原指向的數據并沒有改變。并且若以指針作為操作單元,不涉及其指向的數據時,該函數仍然可以看做是值傳遞,即形參指針指向的變化不會影響到實參指針的指向。if語句將s指向*s、*t較大的數據的地址。所以函數調用結束之后,i、j值不變,p的指向不變,r的指向和p的指向一致,輸出結果為:3,5,3,5,5,答案選擇A選項。[單選題]35.若有定義:char*ps[]={"aa","bb","cc","dd"};則以下敘述正確的是()。A.*ps[0]是字符'a'B.*ps[0]是字符串"aa"C.ps[0]是字符'a'D.ps是字符串"aa"參考答案:A參考解析:定義指針數組ps,ps[0]代表數組首個元素的地址,即"aa"的地址,同時也是"aa"第一個字符'a'的地址,所以*ps[0]代表字符'a'。答案選擇A選項。[單選題]36.以下敘述中正確的是()。A.在C語言中,預處理命令行都以“#”開頭B.預處理命令行必須位于C源程序的起始位置C.#include必須放在C程序的開頭D.C語言的預處理不能實現宏定義和條件編譯的功能參考答案:A參考解析:“編譯預處理”就是在C編譯程序對C源程序進行編譯前,由編譯預處理程序對這些編譯預處理命令行進行處理的過程。A項正確,在C語言中,凡是以“#”號開頭的行,都稱為“編譯預處理”命令行。B項錯誤,預處理命令行可以出現在程序的任何一行的開始部位,其作用一直持續到源文件的末尾;C項錯誤,#include可以出現在程序的任意一行的開始部位;D項錯誤,預處理可以實現宏定義、條件編譯和文件包含。答案選擇A選項。[單選題]37.若要使用C數學庫中的sin函數,需要在源程序的頭部加上#include關于引用數學庫,以下敘述正確的是()。A.將數學庫中sin函數的源程序插入到引用處,以便進行編譯鏈接B.將數學庫中sin函數鏈接到編譯生成的可執行文件中,以便能正確運行C.通過引用math.h文件,說明sin函數的參數個數和類型,以及函數返回值類型D.實際上,不引用math.h文件也能正確調用sin函數參考答案:C參考解析:考查文件包含處理。文件包含命令的功能是把指定的文件添加到預處理部分,從而把指定的文件和當前的源程序文件連接起來,該文件則包含了程序要調用的函數的聲明。由此,選項A、B、D表述錯誤。答案選擇C選項。[單選題]38.有以下程序#includemain(){inti;FILE*fp;for(i=0;i<3;i++){fp=fopen("res.txt","w");fputc('K'+i,fp);fclose(fp);}}程序運行后,在當前目錄下會生成一個res.txt文件,其內容是()。A.MB.EOFC.KLMD.L參考答案:A參考解析:注意:w打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。通過兩次循環,最后i的值為2,'K'+2='M',所以最后寫入文件的字符為'M'。答案選擇A選項。[單選題]39.以下敘述中錯誤的是()。A.可以用typedef說明的新類型名來定義變量B.typedef的作用是用一個新的標識符來代表已存在的類型名C.typedef說明的新類型名必須使用大寫字母,否則會出編譯錯誤D.用typedef可以說明一種新的類型名參考答案:C參考解析:typedef定義的新類型名習慣上用大寫字母,但沒有強制要求用大寫字母。答案選擇C選項。[單選題]40.下面結構體的定義語句中,錯誤的是()。A.sdivuctord{intx;inty;intz;}sdivuctorda;B.sdivuctord{intx;inty;intz;};sdivuctorda;C.sdivuctord{intx;inty;intz;}a;D.sdivuct{intx;inty;intz;}a;參考答案:A參考解析:C語言中結構體變量的定義有三種方法:①定義結構體類型的同時定義結構體變量,如C項;②使用無名結構體類型定義結構體變量,如D項;③先定義結構體類型,后定義結構體變量,如B項,A項錯在分別定義結構體類型與結構體變量時需要用“;”隔開。故答案選擇A選項。[問答題]1.人員的記錄由編號和出生年、月、日組成,N名人員的數據已在主函數中存入結構體數組sdiv中,且編號唯一。函數fun的功能是:找出指定編號人員的數據,作為函數值返回,由主函數輸出,若指定編號不存在,返回數據中的編號為空串。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!/**********code.c**********/#include#include#defineN8typedefsdivuct{charnum[10];intyear,month,day;}STU;/**********found**********/①______fun(STU*sdiv,char*num){inti;STUa={"",9999,99,99};for(i=0;i<n;i++)/**********found**********/if(sdivcmp(②______,num)==0)/**********found**********/return(③______);returna;}voidmain(){STUsdiv[N]={{"111111",1984,2,15},{"222222",1983,9,21},{"333333",1984,9,1},{"444444",1983,7,15},{"555555",1984,9,28},{"666666",1983,11,15},{"777777",1983,6,22},{"888888",1984,8,19}};STUp;
charn[10]="666666";p=fun(sdiv,n);if(p.num[0]==0)printf("\nNotfound!\n");else{printf("\nSucceed!\n
");printf("%s
%d-%d-%d\n",p.num,p.year,p.month,p.day);}}/**********-code.c**********/參考答案:①STU②std[i].num③std[i]參考解析:填空1:根據函數fun的返回值類型可知,函數類型標識符應該是結構體類型的,所以填入STU。填空2:根據題目說明,找出指定編號人員,并將其數據返回。通過strcmp函數比較編號,若相同則函數值為0,所以填入std[i].num。填空3:由題目可知,假如編號對應,則返回其編號對應數據,所以填入數據std[i]。[問答題]2.給定程序MODI1.C中函數fun的功能是:從s所指字符串中,找出與t所指字符串相同的子串的個數作為函數值返回。例如,當s所指字符串中的內容為:“abcdabfab”,t所指字符串的內容為:“ab”,則函數返回整數3。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!/**********code.c****
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 彈簧銷售員崗位面試問題及答案
- 保險銷售主管崗位面試問題及答案
- 版權登記專員崗位面試問題及答案
- 數據標注質檢員崗位面試問題及答案
- 2025屆江蘇省睢寧縣高級中學化學高二下期末復習檢測試題含解析
- 山東省普通高中2025屆高一下化學期末考試模擬試題含解析
- 江西省八所重點中學2025屆化學高一下期末達標檢測試題含解析
- 內蒙獻血休假管理辦法
- 查賬專業團隊管理辦法
- 促進農業資金管理辦法
- 生物膜技術革新:MBBR與IFAS工藝中功能性生物膜掛膜馴化的深入探討
- 心肺復蘇課件
- 乙二酸二甲酯(草酸二甲酯;草酸甲酯)的理化性質及危險特性表
- 一二年級-數獨游戲課件
- 問題解決型護理品管圈QCC成果匯報之提高痰標本采集合格率
- 物業公司戰略合作協議范本
- 電網公司項目管理標準手冊
- 衛生值日表格源碼文件可編輯可修改
- ASTM B344-20 電加熱元件用拉制或軋制鎳鉻及鎳鉻鐵合金標準規范
- 《石油化工企業儲運罐區罐頂油氣連通安全技術要求》
- 人教版七年級數學下冊計算類專項訓練卷【含答案】
評論
0/150
提交評論