國家二級C語言機試(選擇題)模擬試卷42(共225題)_第1頁
國家二級C語言機試(選擇題)模擬試卷42(共225題)_第2頁
國家二級C語言機試(選擇題)模擬試卷42(共225題)_第3頁
國家二級C語言機試(選擇題)模擬試卷42(共225題)_第4頁
國家二級C語言機試(選擇題)模擬試卷42(共225題)_第5頁
已閱讀5頁,還剩59頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

國家二級C語言機試(選擇題)模擬試卷42(共9套)(共225題)國家二級C語言機試(選擇題)模擬試卷第1套一、選擇題(本題共25題,每題1.0分,共25分。)1、以下敘述中錯誤的是A、結(jié)構(gòu)化程序由順序、分支、循環(huán)三種基本結(jié)構(gòu)組成B、C語言是一種結(jié)構(gòu)化程序設(shè)計語言C、使用三種基本結(jié)構(gòu)構(gòu)成的程序只能解決簡單問題D、結(jié)構(gòu)化程序設(shè)計提倡模塊化的設(shè)計方法標準答案:C知識點解析:結(jié)構(gòu)化程序由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)3種基本結(jié)構(gòu)組成。已經(jīng)證明,由3種基本結(jié)構(gòu)組成的算法可以解決任何復(fù)雜的問題。由3種基本結(jié)構(gòu)所構(gòu)成的算法稱為結(jié)構(gòu)化算法;由3種基本結(jié)構(gòu)所構(gòu)成的程序稱為結(jié)構(gòu)化程序。2、某二叉樹中有n個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)為A、n+1B、n-1C、2nD、n/2標準答案:A知識點解析:在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。所以該二叉樹的葉子結(jié)點數(shù)等于n+1。3、在深度為7的滿二叉樹中,度為2的結(jié)點個數(shù)為()。A、64B、63C、32D、31標準答案:B知識點解析:根據(jù)滿二叉樹的性質(zhì),深度為7的滿二叉樹共有22-1=127個結(jié)點。根據(jù)二叉樹的性質(zhì),該滿二叉樹在第7層上,共有27-1=64個結(jié)點,即共有64個葉子結(jié)點,那么度為2的結(jié)點個數(shù)為127-64=63個。4、下列敘述中正確的是A、循環(huán)隊列是線性結(jié)構(gòu)B、循環(huán)隊列是線性邏輯結(jié)構(gòu)C、循環(huán)隊列是鏈式存儲結(jié)構(gòu)D、循環(huán)隊列是非線性存儲結(jié)構(gòu)標準答案:A知識點解析:為充分利用向量空間,克服“假溢出”現(xiàn)象的方法是:將向量空間想象為一個首尾相接的圓環(huán),并稱這種向量為循環(huán)向量。存儲在其中的隊列稱為循環(huán)隊列(CircularQueue)。線性結(jié)構(gòu)是一個有序數(shù)據(jù)元素的集合。常用的線性結(jié)構(gòu)有:線性表,棧,隊列,雙隊列,數(shù)組,串。常見的非線性結(jié)構(gòu)有:二維數(shù)組,多維數(shù)組,廣義表,樹(二叉樹等),圖。5、下列選項中不屬于結(jié)構(gòu)化程序設(shè)計原則的是()。A、可封裝B、自頂向下C、模塊化D、逐步求精標準答案:A知識點解析:結(jié)構(gòu)化程序設(shè)計的思想包括:自頂向下、逐步求精、模塊化、限制使用goto語句,所以選擇A。6、設(shè)有定義:intk=0;,以下選項的4個表達式中與其他3個表達式的值不相同的是()。A、++kB、k+=1C、k++D、k+1標準答案:C知識點解析:++k,先使得k的值自增l后再使用,k++是先取得k的值再將k的值自增1,所以C選項中表達式的值為0,而其他3個表達式的值均為1,所以選擇C選項。7、合法的C語言常量是()。A、-20.B、-020C、-2el.0D、-20.0e標準答案:A知識點解析:C語言常量指數(shù)表達式中字母e或E之前必須有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。8、以下敘述中錯誤的是A、函數(shù)調(diào)用可以作為一個獨立的語句存在B、函數(shù)形參的值也可以傳回給對應(yīng)的實參C、若函數(shù)有返回值,必須通過return語句返回D、C程序必須由一個或一個以上的函數(shù)組成標準答案:B知識點解析:一個C程序中可以包含任意多個不同名的函數(shù),但只能有一個主函數(shù)。一個C程序總是從主函數(shù)開始執(zhí)行。函數(shù)的值通過return語句返回,return語句中的表達式的值就是所求的函數(shù)值。在C語言中,數(shù)據(jù)只能從實參單向傳遞給形參,稱為“按值”傳遞。也即是說,當簡單變量作為實參時,用戶不可能在函數(shù)中改變對應(yīng)實參的值。9、有以下程序#include<stdio.h>inta=1,b=2;yoidfunl(inta,intb){printf(’’%d%d’’,a,b);}yoidfun2(){a=3;b=4;}main(){funl(5,6);fun20;printf(’’%d%d\n’’,a,b);}程序運行后的輸出結(jié)果是A、3456B、1256C、5612D、5634標準答案:D知識點解析:函數(shù)fun1()的作用是輸出局部變量a和b的值,在主函數(shù)中執(zhí)行fun1(5,6)的結(jié)果是輸出5,6:函數(shù)fun2()的作用是給變量a和b分別賦值3,4;執(zhí)行fun2()的作用是輸出3,4。10、規(guī)范化主要為克服數(shù)據(jù)庫邏輯結(jié)構(gòu)中的插入異常,刪除異常以及A、數(shù)據(jù)丟失的問題B、冗余度大的問題C、數(shù)據(jù)不一致的問題D、結(jié)構(gòu)不合理的問題標準答案:B知識點解析:規(guī)范化理論正是用來改造關(guān)系模式,通過分解關(guān)系模式來消除其中不合適的數(shù)據(jù)依賴,以解決插入異常、刪除異常、更新異常和數(shù)據(jù)冗余問題。11、有以下程序,程序運行后的輸出結(jié)果是main(){chara=’H’;a=(a>=’A’&&a<=’Z’)?(a+321):a;printf("%c\n",a);}A、HB、AC、hD、a標準答案:C知識點解析:表達式a=(a>=’A’&&a<’Z’)?(a+32):a,為條件表達式,如果a是大寫字符,則轉(zhuǎn)換為小寫字符存放到a中,否則不變。12、C語言中的標識符分為關(guān)鍵字、預(yù)定義標識符和用戶標識符,以下敘述正確的是A、關(guān)鍵字可用作用戶標識符,但失去原有含義B、在標識符中大寫字母和小寫字母被認為是相同的字符C、用戶標識符可以由字母和數(shù)字任意順序組成D、預(yù)定義標識符可用作用戶標識符,但失去原有含義標準答案:D知識點解析:預(yù)定義標識符是C語言中的標識符,在C語言中也有特定的含義,如函數(shù)pfintf、scanf、sin等和編譯預(yù)處理命令名(如define和include)。預(yù)定義標識符可以作為用戶標識符使用,只是這樣會失去系統(tǒng)規(guī)定的原義。13、以下敘述中錯誤的是A、常量可以用一個符號名來代表B、數(shù)值型常量有正值和負值的區(qū)分C、常量是在程序運行過程中值不能被改變的量D、定義符號常量必須用類型名來設(shè)定常量的類型標準答案:D知識點解析:C語言中,常常用一個標識符來代表一個常量,稱為符號常量。符號常量在使用之前要先定義,定義格式:#define<符號常量名>(常量)其中,<符號常量名>用標識符,習慣上用大寫字母,<常量>可以是數(shù)字常量,也可以是字符。14、若有定義語句:intx=12,y=8,z;在其后執(zhí)行語句z=0.9+x/y;則z的值為A、1.9B、1C、2D、2.4標準答案:B知識點解析:由于x,y,z都是整型數(shù)據(jù),所以x除以y的值為整型數(shù)值1,1和0.9相加得到1.9,再轉(zhuǎn)換為整型數(shù)1賦給整型變量z。15、關(guān)于文件操作中的標高符“EOF”的敘述中正確的是()。A、EOF即NULLB、文本文件和二進制文件都可以用EOF作為文件結(jié)束標志C、EOF是在庫函數(shù)文件中定義的符號常量D、對于文本文件,fgetc函數(shù)讀入最后一個字符時,返回值是EOF標準答案:C知識點解析:EOF是在stdio.h庫函數(shù)文件中定義的符號常量,其值等于一1。EOF用作文件結(jié)束標志,在二進制或者文本文件內(nèi)部有一個位置指針,用以指示文件內(nèi)部的當前讀寫位置。使用fgetc函數(shù),每讀寫一次,該指針均向后移動。16、以下關(guān)于字符串的敘述中正確的是A、兩個字符串中的字符個數(shù)相同時才能進行字符串大小的比較B、可以用關(guān)系運算符對字符串的大小進行比較C、空串比空格打頭的字符串小D、C語言中有字符串類型的常量和變量標準答案:C知識點解析:C語言本身并沒有設(shè)置一種類型來定義字符串變量,卻允許使用“字符串常量”。字符串常量是由雙引號括起來的一串字符。任意兩個字符串的大小比較要調(diào)用字符串比較函數(shù)strcmp(s1,s2)來進行,其比較的方法是依次對s1和s2中對應(yīng)位置上的字符兩兩進行比較,當出現(xiàn)第一對不相同的字符時,即由這兩個字符決定所在串的大小(比較字符大小的依據(jù)是其ASCII碼值)。17、以下選項中合法的變量是A、5aB、A%C、_10_D、sizeof標準答案:C知識點解析:對于變量的命名要利用標識符命名,所謂標識符就是C語言中的變量名、函數(shù)名、數(shù)組名、文件名、類型名等。其中標識符構(gòu)成如下:①標識符由字母、數(shù)字和下劃線組成;②第一個字符必須為字母或下劃線;因此選項A中數(shù)字開頭,選項B出現(xiàn)了非法字符%,而選項D中sizeof為關(guān)鍵字,不能為變量命名。18、為了建立如圖所示的存儲結(jié)構(gòu)(即每個結(jié)點含兩個域,data是數(shù)據(jù)域,next是指向結(jié)點的指針域),則在_________處應(yīng)填入的選項是Structlink{chardata;__________}node;A、structlink*next;B、linknext;C、link*next;D、structlinknext;標準答案:A知識點解析:單鏈表為動態(tài)分配的存儲空間,在分配時,每個結(jié)點之間可以是不連續(xù)的(結(jié)點內(nèi)是連續(xù)的)。結(jié)點之間的聯(lián)系用指針實現(xiàn),即在結(jié)點結(jié)構(gòu)中定義一個成員項用來存放下一結(jié)點的首地址,這個用于存放地址的成員,常把它稱為指針域,該指針為了保持鏈表中結(jié)點的地址,因此其基類型和結(jié)點的類型相同,選項為A。19、有以下程序段inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%db=%dc=%d\n",a,b,c);程序的輸出結(jié)果是A、a=10b=50c=30B、a=10b=30c=10C、a=10b=50c=10D、a=50b=30c=50標準答案:C知識點解析:本題的程序段首先定義三個整型變量a,b,c,并且其初始值分別等于10,50,30,然后判斷a>b是否成立,如果條件成立,則把b的值賦給a,把c的值賦給b。由a和b的初始值可知,此條件表達式不成立,所以a和b的值保持不變。再執(zhí)行下一條語句,把a的值賦給c,所以c的當前值等于10,最后由輸出語句輸出變量a,b,c的當前值,分別為10,50,10。20、有以下程序#includevoidfun(inta[][N],intb[]){inti;for(i=0;iA、-12,-3,0,0,B、-3,-1,1,3,C、0,1,2,3,D、-3,-3,-3,-3,標準答案:B知識點解析:fun函數(shù)的功能是求出二維數(shù)組a中第i行第i個元素與第N-1-i元素的差,賦給b[i]。在主函數(shù)中,把實參二維數(shù)組x和一維數(shù)組y傳遞給形參a和b,最后輸出一維數(shù)組y中元素的值。21、有以下程序#include<stdio-h>#include<string.h>typedefstruct{charname[9];charsex;intscore[2];)STU;STUf(STUa){STUb={"Zhao",’m’,85,90};inti;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];returna;}main(){STUc={"Qian",’f’,95,92},d;d=f(c);printf("%s,%c,%d,%d,",d.name,d.sex,d.score[0],d.score[1]);printf("%s,%c,%d,%d,",c.name,c.sex,c.score[0],c.score[1]);}A、Zhao,m,85,90,Zhao,m,85,90B、Qian,f,95,92,Qian,f,95,92C、Zhao,m,85,90,Qian,f,95,92D、Qian,f,95,92,Zhao,m,85,90標準答案:C知識點解析:在C語言中,函數(shù)實參與形參之間數(shù)據(jù)的傳遞是傳值,也就是說在用實參調(diào)用形參時,是把實參的值拷貝一份給形參,而實參的值并不變化,仍是原來的值。所以對于本題來說,在主函數(shù)中調(diào)f(e)后,實參e的值并不會變化,仍是原值。在函數(shù)f中把局部變量b的值依次返回給變量d。22、在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A、可行性分析報告B、軟件需求規(guī)格說明書C、概要設(shè)計說明書D、集成測試計劃標準答案:B知識點解析:A)錯誤,可行性分析階段產(chǎn)生可行性分析報告。C)錯誤,概要設(shè)計說明書是總體設(shè)計階段產(chǎn)生的文檔。D)錯誤,集成測試計劃是在概要設(shè)計階段編寫的文檔。B)正確,需求規(guī)格說明書是后續(xù)工作如設(shè)計、編碼等需要的重要參考文檔。23、有以下程序#include#includetypedefstruct{charname[9];charsex;floatscore[2];}STU;STUf(STUa){STUb={"Zhao",’m’,85.0,90.0};inti;strcpy(,);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];returna;}main(){STUc={"Qian",’f’,95.0,92.0},d;d=f(c);printf("%s,%c,%2.0f,%2.0f\n",,d.sex,d.score[0],d.score[1]);}程序的運行結(jié)果是()。A、Zhao,m,85,90B、Qian,m,85,90C、Qian,f,95,92D、Zhao,f,95,92標準答案:A知識點解析:結(jié)構(gòu)體是用戶自己定義的一種數(shù)據(jù)類型,使用方法和C語言中的基本數(shù)據(jù)類型一致。函數(shù)f()中將結(jié)構(gòu)體b中成員的數(shù)據(jù)分別賦值給a,所以函數(shù)的返回值為a即{"Zhao",?m?,85,90}。24、有以下程序:#includemain(){charc1,c2;c1=’A’+’8’-’4’;c2=’A’+’8’-’5’;printf("%c,%d\n",c1,c2);}已知字母A的ASCII碼為65,程序運行后的輸出結(jié)果是()。A、E,68B、D,69C、E,DD、輸出無定值標準答案:A知識點解析:本題目中字符變量c1是字符’A’的ASCII碼加上4,即69所對應(yīng)的字符’E’。字符變量c2是字符’A’的ASCII碼加上3,即68所對應(yīng)的字符’D’。但是打印輸出時,c1以%c的格式輸出,所以是E,c2以%d的格式輸出,所以是68。25、有以下程序#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},b[6];fp=fopen("d.dat","w+b");fwrite(a,sizeof(int),6,fp);for(i=0;i<6;i++)fwrite(&a[2],sizeof(int),1,fp);rewind(fp);fseek(fp,sizeof(int)*2,SEEK_CUR);fread(b,sizeof(int),6,fp);fclose(fp);for(i=0;i<6;i++)printf("%d,",b[i]);}程序執(zhí)行后的輸出結(jié)果是()。A、3,4,5,6,3,3,B、1,2,3,4,5,6,C、3,4,5,6,1,2,D、3,4,5,6,1,1,標準答案:A知識點解析:程序首先以讀二進制文件的方式打開d.dat,然后使用fwrite()函數(shù)將數(shù)組a中6個元素寫入d.dat中,接著調(diào)用for循環(huán)將a[2]元素(值為3)6次寫入d.dat文件中;再使用rewind()函數(shù)將文件指針fp移動到文件頭,再使用fseek()函數(shù)將fp以當前位置向后移動2個整數(shù)位置,再使用fread()函數(shù)從fp指向的位置向后讀取6個整數(shù),由此可知這6個整數(shù)分別是:3,4,5,6,3,3,本題答案為A。國家二級C語言機試(選擇題)模擬試卷第2套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列敘述中正確的是A、線性表的鏈式存儲結(jié)構(gòu)與順序存儲結(jié)構(gòu)所需要的存儲空間是相同的B、線性表的鏈式存儲結(jié)構(gòu)所需要的存儲空間一般要多于順序存儲結(jié)構(gòu)C、線性表的鏈式存儲結(jié)構(gòu)所需要的存儲空間一般要少于順序存儲結(jié)構(gòu)D、上述三種說法都不對標準答案:B知識點解析:線性表的存儲分為順序存儲和鏈式存儲。在順序存儲中,所有元素所占的存儲空間是連續(xù)的,各數(shù)據(jù)元素在存儲空間中是按邏輯順序依次存放的。所以每個元素只存儲其值就可以了,而在鏈式存儲的方式中,將存儲空間的每一個存儲結(jié)點分為兩部分,一部分用于存儲數(shù)據(jù)元素的值,稱為數(shù)據(jù)域;另一部分用于存儲下一個元素的存儲序號,稱為指針域。所以線性表的鏈式存儲方式比順序存儲方式的存儲空間要大一些。2、某二叉樹共有12個結(jié)點,其中葉子結(jié)點只有1個。則該二叉樹的深度為(根結(jié)點在第1層)A、3B、6C、8D、12標準答案:D知識點解析:根據(jù)二叉樹的性質(zhì),度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。題目中的二叉樹的葉子結(jié)點為1,因此度為2的結(jié)點的數(shù)目為0,故該二叉樹為12層,每層只有一個結(jié)點。3、對長度為n的線性表作快速排序,在最壞情況下,比較次數(shù)為A、nB、n一1C、n(n一1)D、n(n—1)/2標準答案:D知識點解析:假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序需要經(jīng)過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n一1)/2??焖倥判蚍ㄒ彩且环N互換類的排序方法,但由于它比冒泡排序法的速度快,因此,稱為快速排序法。4、下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進行查找的是A、順序存儲的有序線性表B、線性鏈表C、二叉鏈表D、有序線性鏈表標準答案:A知識點解析:二分法查找只適應(yīng)于順序存儲的有序表。有序表是指線性表中的元素按值非遞減排序(即從小到大,但允許相鄰元素值相等)的表:5、度為3的一棵樹共有30個結(jié)點,其中度為3、1的結(jié)點個數(shù)分別為3、4。則該樹中的葉子結(jié)點數(shù)為A、14B、15C、16D、不可能有這樣的樹標準答案:B知識點解析:根據(jù)題目可知本樹中還有度為2的結(jié)點。樹的總結(jié)點=(度1*個數(shù)+度2*個數(shù)…)+1,這里我們設(shè)度為2的結(jié)點數(shù)為x,那么30=3*3+2*x+1*4+1=2*x+14,由此可計算出x=8。樹的葉子結(jié)點數(shù)等于總結(jié)點減去所有度不為0的結(jié)點,也就是30-3-8-4=15。6、下列定義變量的語句中錯誤的是()。A、int_int;B、doubleint;C、charFor;D、floatUS$;標準答案:D知識點解析:C語言規(guī)定,變量命名必須符合標識符的命名規(guī)則。D選項中包含了非法字符“$”,所以錯誤。標識符由字母、數(shù)字或下劃線組成,且第一個字符必須是大小寫英文字母或者下劃線,而不能是數(shù)字。大寫字符與小寫字符被認為是兩個不同的字符,所以For不是關(guān)鍵字for。7、有以下程序#includemain(){inta=一1,b=一1;for(;++a;)++b;prinff(“%d%d\n”,a,b);}程序運行后的輸出結(jié)果是()。A、0—1B、00C、一1—1D、結(jié)果不確定標準答案:A知識點解析:這是對for循環(huán)的基本考查。其中++a是判斷條件,并且是a先自增1,再參與運算。a初值為一1,經(jīng)++a后,a值為0,0相當于false,判斷條件不成立,跳過for循環(huán)后面的語句++b,直接執(zhí)行printf語句,所以最后輸出a的值為0,b的值沒變,還是一1。8、若有“doublea;”,則正確的輸入語句是()。A、scanf(’’%1f’’,a);B、scanf(’’%f’’,&a);C、scanf(’’%1f’’,&a)D、scanf(’’%1e’’,a);標準答案:C知識點解析:scanf函數(shù)的調(diào)用形式是:scanf("格式字符串”,輸入項地址表)。其中,“格式字符串”是要輸入的變量的格式符;“輸入項地址表”是要輸入的變量的地址。a是double型數(shù)據(jù),格式字符串可以用“%1f”,“%f”是浮點型。題中定義變量a為雙精度型變量,雙精度變量的格式符為“%1f”;變量的地址用取地址符“&”加變量名表示,變量a的地址為“&a”。9、軟件調(diào)試的目的是A、發(fā)現(xiàn)錯誤B、改正錯誤C、改善軟件的性能D、驗證軟件的正確性標準答案:B知識點解析:軟件調(diào)試的任務(wù)是診斷和改正程序中的錯誤。程序調(diào)試活動由兩部分組成,一是根據(jù)錯誤的跡象確定程序中的錯誤的確切性質(zhì)、原因和位置。二是對程序進行修改,排除這個錯誤。10、軟件生命周期可分為定義階段、開發(fā)階段和維護階段,下面屬于定義階段任務(wù)的是A、軟件設(shè)計B、軟件測試C、可行性研究D、數(shù)據(jù)庫設(shè)計標準答案:C知識點解析:定義階段包括:問題定義、可行性研究和需求分析。問題定義:要求系統(tǒng)分析員與用戶進行交流,弄清“用戶需要計算機解決什么問題”然后提出關(guān)于“系統(tǒng)目標與范圍的說明”,提交用戶審查和確認;可行性研究:一方面在于把待開發(fā)的系統(tǒng)的日標以明確的語言描述出來,另一方面從經(jīng)濟、技術(shù)、法律等多方面進行可行性分析;需求分析:弄清用戶對軟件系統(tǒng)的全部需求,編寫需求規(guī)格說明書和初步的用戶手冊,提交評審。11、有以下程序main(){inta=-2,b=0;while(a++&&++b);printf(’’%d,%d\n’’,a,b);)程序運行后輸出結(jié)果是A、0,3B、1,2C、1,3D、0,2標準答案:B知識點解析:循環(huán)體為空,共執(zhí)行2次。第一次變量a初值為-2,b初值為0,表達式a++&&++b值為l,同時a的值為-1,b的值為1,第二次循環(huán)條件判斷以后,a的值為0,b的值2,執(zhí)行循環(huán)體空,第三次判斷條件表達式值為0,不執(zhí)行循環(huán)體,而a的值為1,但是表達式a++的值為0,因此不計算表達式++b的值,b的值仍為2。12、若有函數(shù)首部intfun(doublex[10],int*n),則下列針對此函數(shù)的函數(shù)聲明語句中正確的是()。A、intfun(double,int);B、intfun(double*,int*);C、intfun(double*x,intn);D、intfun(doublex,int*n);標準答案:B知識點解析:函數(shù)聲明的一般形式為:類型說明符被調(diào)函數(shù)名(類型形參,類型形參……);或為類型說明符被調(diào)函數(shù)名(類型,類型……)。由于函數(shù)首部為intfun(doublex[10],int*n),因此B選項正確。13、有以下程序:#includeintadd(inta,intb){return(a+b);main(){intk,(*f)(),a=5,b=10;f=add:}則以下函數(shù)調(diào)用語句錯誤的是()。A、k=f(a,b);B、k=add(a,b);C、k=(*f)(a,b);D、k=*f(a,b);標準答案:D知識點解析:D選項中,*f(a,b)表示調(diào)用后返回一個指向整型數(shù)據(jù)的地址指針,即該函數(shù)的返回值為指針類型,所以不能將其賦值給整形變量k。14、以下選項中非法的C語言字符常量是A、’\b’B、’\007’C、’aa’D、’\xaa’標準答案:C知識點解析:一個字符常量代表ASCⅡ字符集中的一個字符,在程序中用單引號把一個字符括起來作為字符常量。15、若變量已正確定義,以下選項中非法的表達式是()。A、’a’=1/2*(x=y=20,x*3)B、a!=4||’b’C、’a’%4D、’A’+32標準答案:A知識點解析:賦值運算符的左側(cè)必須為變量而不能是表達式或者常量,選項A)的表達式非法,答案選A)。16、以下敘述中正確的是A、程序必須包含所有三種基本結(jié)構(gòu)才能成為一種算法B、如果算法非常復(fù)雜,則需要使用三種基本結(jié)構(gòu)之外的語句結(jié)構(gòu),才能準確表達C、只有簡單算法才能在有限的操作步驟之后結(jié)束D、我們所寫的每條C語句,經(jīng)過編譯最終都將轉(zhuǎn)換成二進制的機器指令標準答案:D知識點解析:C語句構(gòu)成了函數(shù),函數(shù)構(gòu)成的程序,經(jīng)過編譯轉(zhuǎn)換成二進制代碼后可以運行,算法是指為解決某個特定問題而采取的確定且有限的步驟,可以利用代碼來描述算法,而算法+數(shù)據(jù)結(jié)構(gòu)才是程序,結(jié)構(gòu)化的程序由順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)三種基本結(jié)構(gòu)組成。由這三種基本結(jié)構(gòu)組成的算法可以解決任何復(fù)雜的問題,反之則不一定,所有算法必須在有限步驟后結(jié)束。17、以下敘述中正確的是A、對于“for(表達式l;表達式2;表達式3)循環(huán)體”首先要計算表達式2的值,以便決定是否開始循環(huán)B、對于“for(表達式1;表達式2;表達式3)循環(huán)體”,只在個別情況下才能轉(zhuǎn)換成while語句C、只要適當?shù)匦薷拇a,就可以將do-while與while相互轉(zhuǎn)換D、如果根據(jù)算法需要使用無限循環(huán)(即通常所稱的“死循環(huán)”),則只能使用while語句標準答案:C知識點解析:whik和do…while語句和for語句很容易進行相互轉(zhuǎn)換。對于for循環(huán)的執(zhí)行過程如下:①計算表達式1。②計算表達式2。若其值為非O,轉(zhuǎn)步驟③;若其值為0,轉(zhuǎn)步驟⑤。③執(zhí)行一次for循環(huán)體。④計算表達式3,轉(zhuǎn)向步驟②。⑤結(jié)束循環(huán)。任何循環(huán)都有可能成為死循環(huán)。18、以下敘述中正確的是A、可以在程序中由用戶指定任意一個函數(shù)作為主函數(shù),程序?qū)拇碎_始執(zhí)行B、C語言程序?qū)脑闯绦蛑械谝粋€函數(shù)開始執(zhí)行C、main的各種大小寫拼寫形式都可以作為主函數(shù)名,如:MAIN,Main等D、C語言規(guī)定必須用main作為主函數(shù)名,程序?qū)拇碎_始執(zhí)行標準答案:D知識點解析:C語言規(guī)定必須以main作為主函數(shù)名。程序中的main()是主函數(shù)的起始行,也是C程序執(zhí)行的起始行。每一個可執(zhí)行的C程序都必須有一個且只能有一個主函數(shù)。一個C程序中可以包含任意多個不同的函數(shù),但只能有一個主函數(shù)。程序要從main()函數(shù)開始執(zhí)行,最后在main()函數(shù)中結(jié)束。19、設(shè)有定義:charp[]={’1’,’2’,’3’},*q=p;以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達式是A、sizeof(p)B、sizeof(char)C、sizeof(*q)D、sizeof(p[0])標準答案:A知識點解析:選項A)計算的是p[]字符數(shù)組首地址所占的內(nèi)存字節(jié)數(shù),返回值數(shù)組中所有元素占有的空間。*q和p[0]分別表示數(shù)組p中下標為0的字符元素,選項B)和D)都可以計算char型數(shù)據(jù)占有的字節(jié)數(shù)。20、以下敘述中正確的是A、函數(shù)調(diào)用時,不必區(qū)分函數(shù)名稱的大小寫B(tài)、調(diào)用函數(shù)時,函數(shù)名必須與被調(diào)用的函數(shù)名完全一致C、函數(shù)名允許用數(shù)字開頭D、在函數(shù)體中只能出現(xiàn)一次return語句標準答案:B知識點解析:在標準C中,函數(shù)的定義形式為:函數(shù)返回值的類型名函數(shù)名(類型名形式參數(shù)1,類型名形式參數(shù)2,…){說明部分語句部分}需要說明的是函數(shù)名和形式參數(shù)都是由用戶命名的標識符,在同一程序中,函數(shù)名必須惟一,形式參數(shù)名只要在同一函數(shù)中惟一即可,與其他函數(shù)中的變量可以同名。return語句的作用是返回函數(shù)的值,在函數(shù)中可以出現(xiàn)多個或者沒有。21、有以下程序#includemain(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b=b+3;continue;}b=b-5;}printf("%d\n",a);}程序的輸出結(jié)果是A、10B、9C、8D、7標準答案:B知識點解析:首先注意for循環(huán)的控制條件當b>=20或者a>100則跳出for循環(huán)也即b<20且a<=100時執(zhí)行for循環(huán);第一次進入循環(huán)a=1,b=1均滿足循環(huán)條件,但b%3==1條件滿足,故執(zhí)行b=b+3,得到b=4,注意有continue,所以后面語句不執(zhí)行,直接跳轉(zhuǎn)到a++這個語句,所以第一次循環(huán)完之后a=2,b=4;進入第二輪循環(huán),b%3==1也是滿足的,故再次b=b+3,此輪循環(huán)執(zhí)行之后a=3,b=7,進入下一輪。此后和前面循環(huán)同理,都是b%3==1滿足,因為每次都是加3,而之后又去模3,且都跳過for后面語句直接執(zhí)行a++,所以,一直循環(huán)到b=22跳出for循環(huán)。此時a為8。綜合起來就是,每次循環(huán)b增加3,a增加1,且當b>22時跳出循環(huán),結(jié)束程序。所以b從1增加到22,有(22-1)/3=7,所以a=1+7=8。因此B選項正確。22、有以下程序#includemain(){charc1=’A’,c2=’Y’;printf("%d,%d\n",c1,c2);}程序的輸出結(jié)果是A、輸出格式不合法,輸出出錯信息B、65,89C、65,90D、A,Y標準答案:B知識點解析:本題重點考察字符變量的相關(guān)知識。分別給字符型變量a和b分別賦值為’A’和’Y’,即A和Y的ASSCII碼,因此輸出結(jié)果為65,89,因此B選項正確。23、以下不能輸出字符A的語句是(注:字符A的ASCII碼值為65,字符a的ASCII碼值為97)A、printf("%c\n",’a’-32);B、printf("%d\n",’A’);C、printf("%c\n",65);D、printf("%c\n",’B’-1);標準答案:B知識點解析:B選項輸出的格式為%d,即為整型格式,所以輸出字符A的ASCII碼值65,而不是字符A。由于大寫字母和其對應(yīng)的小寫字母的ASCII碼值小32,所以A正確。字符A的ASCII碼值就是65,所以以%c格式輸出可以輸出字符A,所以C正確。由于字符A的ASCII碼值比字符B的小1,所以D正確。24、下列敘述中正確的是()。A、帶鏈棧的棧底指針是隨棧的操作而動態(tài)變化的B、若帶鏈隊列的隊頭指針與隊尾指針相同,則隊列為空C、若帶鏈隊列的隊頭指針與隊尾指針相同,則隊列中至少有一個元素D、不管是順序棧還是帶鏈的棧,在操作過程中其棧底指針均是固定不變的標準答案:A知識點解析:由于帶鏈棧利用的是計算機存儲空間中的所有空閑存儲節(jié)點,因此隨棧的操作棧頂棧底指針動態(tài)變化。帶鏈的隊列中若只有一個元素,則頭指針與尾指針相同。25、下列敘述中正確的是()。A、軟件過程是軟件開發(fā)過程B、軟件過程是軟件維護過程C、軟件過程是軟件開發(fā)過程和軟件維護過程D、軟件過程是把輸入轉(zhuǎn)化為輸出的一組彼此相關(guān)的資源和活動標準答案:D知識點解析:軟件過程是把輸入轉(zhuǎn)化為輸出的一組彼此相關(guān)的資源和活動。軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項任務(wù)的工作步驟。軟件過程所進行的基本活動主要有軟件規(guī)格說明、軟件開發(fā)或軟件設(shè)計與實線、軟件確認、軟件演進。在過程結(jié)束時,將輸入(用戶要求)轉(zhuǎn)化為輸出(軟件產(chǎn)品)。故本題答案為D選項。國家二級C語言機試(選擇題)模擬試卷第3套一、選擇題(本題共25題,每題1.0分,共25分。)1、設(shè)int類型的數(shù)據(jù)長度為2個字節(jié),則unsignedint類型數(shù)據(jù)的取值范圍是()。A、0~255B、0~65535C、-32768~32767D、-256~255標準答案:B知識點解析:整型數(shù)據(jù)分為signed和unsigned兩種,設(shè)int類型的數(shù)據(jù)長度為2個字節(jié),則無符號整數(shù)表示的范圍為0~65535。2、下列對于線性鏈表的描述中正確的是A、存儲空間不一定連續(xù),且各元素的存儲順序是任意的B、存儲空間不一定連續(xù),且前件元素一定存儲在后件元素的前面C、存儲空間必須連續(xù),且前件元素一定存儲在后件元素的前面D、存儲空間必須連續(xù),且各元素的存儲順序是任意的標準答案:A知識點解析:一般來說,在線性表的鏈式存儲結(jié)構(gòu)中,各數(shù)據(jù)結(jié)點的存儲序號是不連續(xù)的,并且各結(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致。在線性鏈表中,各數(shù)據(jù)元素之間的前后件關(guān)系是由各結(jié)點的指針域來指示的,指向線性表中第一個結(jié)點的指針head稱為頭指針,當head=NULL(或0)時稱為空表。3、以下選項中,不合法的C語言用戶標識符是A、AaBcB、a-bC、a_bD、_1標準答案:B知識點解析:在C語言中的用戶標識符只能由字母,數(shù)字和下劃母組成,并且第一個字符必須是字母或下劃線,在選項B中出現(xiàn)了非法的字符“-”。4、在深度為7的滿二叉樹中,度為2的結(jié)點個數(shù)為A、64B、63C、32D、31標準答案:B知識點解析:因為在任意的二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總比度為2的結(jié)點的個數(shù)多1個,而度為0的結(jié)點數(shù)n0=2m-1(其中m為二叉樹的深度)。本題的度為0的結(jié)點個數(shù)n0=27-1=26=64。因此,度為2的結(jié)點數(shù)n2=n0-1=63。所以選項B正確。5、下列敘述中正確的是()。A、數(shù)據(jù)庫的數(shù)據(jù)項之間無聯(lián)系B、數(shù)據(jù)庫中任意兩個表之間一定不存在聯(lián)系C、數(shù)據(jù)庫的數(shù)據(jù)項之間存在聯(lián)系D、數(shù)據(jù)庫的數(shù)據(jù)項之間以及兩個表之間都不存在聯(lián)系標準答案:C知識點解析:數(shù)據(jù)庫的數(shù)據(jù)項之間以及表之間都存在聯(lián)系。6、下面不屬于軟件設(shè)計原則的是A、抽象B、模塊化C、自底向上D、信息隱藏標準答案:C知識點解析:軟件設(shè)計的基本原則包括抽象、信息隱藏、模塊化、局部化、確定性、一致性、完備性和可驗證性。7、有以下程序段intj;floaty;charname[50];scanf(’’%2d%f%s’’,&j,&y,name);當執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為A、55566.0B、7777.0C、566.0D、566777標準答案:C知識點解析:因為在輸入格式控制符中指定變量j的輸入格式控制符為”%2d”,即變量i所占的寬度為2,所以變量j只接收輸入數(shù)據(jù)的前兩位,從第三位開始直到空格之間的輸入整數(shù)都會被保存到變量y中,因為y為浮點型數(shù)據(jù),所以輸出結(jié)果為選項C。8、以下程序的輸出結(jié)果是()。main(){intx=1,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;elsey+=3;printf(’’%d\n’’,y);}A、一1B、0C、1D、2標準答案:B知識點解析:如果不滿足if語句的條件,函數(shù)將不執(zhí)行本題中x=1,if和elseif的條件都不滿足,故y值不改變輸出。9、以下敘述中正確的是A、C程序中的每一行只能寫一條語句B、簡單C語句必須以分號結(jié)束C、C語言程序中的注釋必須與語句寫在同一行D、C語句必須在一行內(nèi)寫完標準答案:B知識點解析:C語言的書寫格式自由,一行可寫多條語句,一條語句也可寫在不同行上。C語言注釋是比較自由的,可以寫在一行或者多行。C語言規(guī)定每條語句和數(shù)據(jù)定義的最后必須有一個分號,分號是c語句的必要組成部分。10、有以下程序:#include<stdio.h>intadd(inta,intb){return(a+b);}main(){intk,(*f)(),a=5,b=10;f=add;…}則以下函數(shù)調(diào)用語句錯誤的是()。A、k=f(a,b);B、k=add(a,b);C、k=(*f)(a,b);D、k=*f(a,b);標準答案:D知識點解析:D選項中,*f(a,b)表示調(diào)用后返回一個指向整型數(shù)據(jù)的地址指針,即該函數(shù)的返回值為指針類型,所以不能將其賦值給整形變量k。11、設(shè)有定義:intx[2][3];則以下關(guān)于二維數(shù)組X的敘述錯誤的是A、數(shù)組x可以看作是由x[0]和x[1]兩個元素組成的一維數(shù)組B、可以用x[0]=0;的形式為數(shù)組所有元素賦初值0C、元素x[0]可看作是由3個整型元素組成的一維數(shù)組D、x[0]和x[1]是數(shù)組名,分別代表一個地址常量標準答案:B知識點解析:二維數(shù)組的元素在內(nèi)存中占一系列連續(xù)的存儲單元。數(shù)組元素在內(nèi)存中的排列順序是先存放第0行的元素,再存放第1行的元素……稱這種存放順序為按行存放??梢园岩粋€二維數(shù)組看成是一個一維數(shù)組,每個數(shù)組元素又是包含有若干個元素的一維數(shù)組。另外在給二維數(shù)組賦初值時可以不用含花括號對。例如,inta[4][3]={1,2,4,5};在編譯時,系統(tǒng)將按a數(shù)組元素在內(nèi)存中排列的順序,將花括號內(nèi)的數(shù)據(jù)一一對應(yīng)地賦給各個元素,若數(shù)據(jù)不足,系統(tǒng)將給后面的元素自動補初值0。以上將給a數(shù)組第一行的元素和第二行的第一個元素依次賦予1、2、4、5,其他元素的初值都為0。12、當變量c的值不為2、4、6時,值為"真"的表達式是()。A、(c>=2&&c<=6)||(c!=3)||(c!=5)B、(c==2)||(c==4)||(c==6)C、(c>=2&&c<=6)&&!(c%2)D、(c>=2&&c<=6)&&(c%2!=1)標準答案:A知識點解析:邏輯或運算符的兩個運算對象中,只要有一個值為真,整個邏輯表達式的值就為真;邏輯與運算符的兩個運算對象的值均為真,整個邏輯表達式的值才為真。選項A)中,只要c的值不為3或者不為5或者在2和6之間,這個表達式就為真,所以答案選A)。13、以下選項中,不合法的C語言用戶標識符是A、AaBcB、a-bC、a_bD、_1標準答案:B知識點解析:在C語言中的用戶標識符只能由字母,數(shù)字和下劃母組成,并且第一個字符必須是字母或下劃線,在選項B中出現(xiàn)了非法的字符“-”。14、有以下程序#include<stdio.h>#defineSQR(x)x*xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf(’’%d\n’’,a);)程序的輸出結(jié)果是A、0B、1C、9D、10412文件包含標準答案:B知識點解析:SQR(k+m)宏展開以后為k+m*k+m,值為5,表達式a/=sQR(k+m)/SQR(k+m)為a=a/(5+5),表達式值為1。15、關(guān)于文件操作的敘述中正確的是()。A、在一個程序中當對文件進行了寫操作后,必須先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù)B、C語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)C、打開一個已存在的文件并進行寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋D、當對文件的讀(寫)操作完成之后,必須將它關(guān)閉,否則可能導致數(shù)據(jù)丟失標準答案:D知識點解析:在C語言中,有兩種對文件的存取方式:順序存取和直接存取。如果以“a”的方式對一個已打開的文件進行寫操作后,則原有文件中內(nèi)容將保存,新的數(shù)據(jù)寫在原有內(nèi)容之后。如果以“a+”的方式為讀和寫而打開一個文件,則既可以對文件進行讀,也可以對文件進行寫,而且在讀和寫操作之間不必關(guān)閉文件,可以從頭開始讀。當對文件的讀(寫)操作完成之后,必須將它關(guān)閉。16、以下關(guān)于結(jié)構(gòu)化程序設(shè)計的敘述中正確的是()。A、在C語言中,程序的模塊化是利用函數(shù)實現(xiàn)的B、結(jié)構(gòu)化程序使用goto語句會很便捷C、一個結(jié)構(gòu)化程序必須同時由順序、分支、循環(huán)三種結(jié)構(gòu)組成D、由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題標準答案:A知識點解析:goto語句會導致程序結(jié)構(gòu)混亂,所以結(jié)構(gòu)化程序中限制使用goto語句,選項B)錯;一個結(jié)構(gòu)化的程序可以依據(jù)該程序要實現(xiàn)的功能選用順序、分支、循環(huán)這三種基本結(jié)構(gòu)中的某幾種或者全部使用,不是必須都用上,選項C)錯;已經(jīng)證明,由這三種基本結(jié)構(gòu)組成的算法可以解決任何復(fù)雜的問題,選項D)錯;程序的模塊化是指把程序要解決的總目標分解為若干目標,再進一步分解為具體的小目標,每個小目標即為一個模塊,而函數(shù)是C語言的基本模塊,實現(xiàn)某一模塊的具體功能。答案選A)。17、若i和k都是int類型變量,有以下for語句for(i=0,k=-1;k=1;k++)printf("*\n");下面關(guān)于語句執(zhí)行情況的敘述中正確的是A、循環(huán)體執(zhí)行兩次B、循環(huán)體執(zhí)行一次C、循環(huán)體一次也不能執(zhí)行D、構(gòu)成無限循環(huán)標準答案:D知識點解析:本題考查for循環(huán)。本題的for循環(huán)初始條件為i=0,k=-1;循環(huán)結(jié)束條件為k=1永遠為真(k不為0),因此循環(huán)不能結(jié)束。18、以下敘述中正確的是A、循環(huán)發(fā)生嵌套時,最多只能兩層B、三種循環(huán)for,while,do-while可以互相嵌套C、循環(huán)嵌套時,如果不進行縮進形式書寫代碼,則會有編譯錯誤D、for語句的圓括號中的表達式不能都省略掉標準答案:B知識點解析:在一個循環(huán)體內(nèi)又完整包含了另一個循環(huán),稱為循環(huán)嵌套。循環(huán)的嵌套可以多層,但每一層循環(huán)在邏輯上必須是完整的。for循環(huán)、while循環(huán)、do-while循環(huán)可以互相嵌套,但每層循環(huán)在邏輯上必須完整。而在for語句中,for語句中的表達式可以部分或全部省略,但兩個“:”不可省略。19、程序中若有如下說明和定義語句charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;}以下選項中對函數(shù)fun的正確調(diào)用語句是A、(*f1)(a);B、*f1(*s);C、fun(a);D、ch=*f1(s);標準答案:A知識點解析:本題主要考查函數(shù)調(diào)用和函數(shù)指針的使用。根據(jù)定義f1是一個函數(shù)指針,且指向fun函數(shù),因此可以使用函數(shù)指針來調(diào)用函數(shù)。使用函數(shù)指針調(diào)用函數(shù)的時候使用.運算符,即*f1和fun是一樣的,fun函數(shù)有參數(shù),通過f1調(diào)用fun函數(shù)寫法為:(*f1)(a),括號是必須的,這樣才能保證各部分正確結(jié)合。20、不能正確表示數(shù)學式的表達式是A、a/c*bB、a*b/cC、a/b*cD、a*(b/c)標準答案:C知識點解析:/號和*號的優(yōu)先級處于平級,結(jié)合性都是自左至右?所以選擇C,C式子表示的是。21、若有以下程序structstu{char*name,gender;intscore;};main(){structstua={NULL,’m’,290},b;a.name=(char*)malloc(10);strcpy(a.name,"Zhao");b=a;b.gender=’f’;b.score=350;strcpy(b.name,"Qian");printf("%s,%c,%d,",a.name,a.gender,a.score);printf("%s,%c,%d\n",b.A、Zhao,m,290,Qian,f,350B、Qian,f,350,Qian,f,350C、Zhao,m,290,Zhao,e350D、Qian,m,290,Qian,f,350標準答案:D知識點解析:主函數(shù)中定義結(jié)構(gòu)體類型structstu,有三個成員,第一個成員為字符指針變量。主函數(shù)中為stu類型變量a賦值,首先為a.name成員分配存儲空間,存入數(shù)據(jù)。b=a;語句執(zhí)行完畢以后,a和b的各個成員值相同,需要注意的是b.name和a.name成員都保存了同一段內(nèi)存的地址,因此當為變量b賦值的時候,同樣更改了a的name成員,而其他成員由于有單獨的存儲空間而不會發(fā)生改變。22、下面選項中關(guān)于位運算的敘述正確的是A、位運算符都需要兩個操作數(shù)B、左移運算的結(jié)果總是原操作數(shù)據(jù)2倍C、右移運算時,高位總是補0D、位運算的對象只能是整型或字符型數(shù)據(jù)標準答案:D知識點解析:位運算則是以位(bit)一級進行的運算,位運算符中除“~”以外,均為二元運算符,即要求兩側(cè)各有一個運算量,運算量只能是整型或字符型的數(shù)據(jù),不能為實型數(shù)據(jù)。其中右移時,右端(低位)移出的二進制數(shù)舍棄,左端(高位)移入的二進制數(shù)分兩種情況:對于無符號整數(shù)和正整數(shù),高位補0;對于負整數(shù),高位補1。而左移運算在沒有溢出的前提下每移動一位,相當于原數(shù)據(jù)的2倍。23、下面選項中關(guān)于位運算的敘述正確的是A、位運算符都需要兩個操作數(shù)B、左移運算的結(jié)果總是原操作數(shù)據(jù)2倍C、右移運算時,高位總是補0D、位運算的對象只能是整型或字符型數(shù)據(jù)標準答案:D知識點解析:位運算則是以位(bit)一級進行的運算,位運算符中除“~”以外,均為二元運算符,即要求兩側(cè)各有一個運算量,運算量只能是整型或字符型的數(shù)據(jù),不能為實型數(shù)據(jù)。其中右移時,右端(低位)移出的二進制數(shù)舍棄,左端(高位)移入的二進制數(shù)分兩種情況:對于無符號整數(shù)和正整數(shù),高位補0;對于負整數(shù),高位補1。而左移運算在沒有溢出的前提下每移動一位,相當于原數(shù)據(jù)的2倍。24、一間宿舍可住多個學生,則實體宿舍和學生之間的聯(lián)系是()。A、一對一B、一對多C、多對一D、多對多標準答案:B知識點解析:因為一間宿舍可以住多個學生即多個學生住在一個宿舍中,但一個學生只能住一間宿舍,所以實體宿舍和學生之間是一對多的關(guān)系。25、若有以下程序#includemain(){inta=1,b=2,c=3,d=4;if((a=2)||(b=1))c=2;if((c==3)&&(d=-1))a=5;printf("%d,%d,%d,%d\n",a,b,c,d);}則程序的輸出結(jié)果是A、1,2,3,4B、2,1,2,-1C、5,1,2,-1D、2,2,2,4標準答案:D知識點解析:第一個if語句的判斷條件中是邏輯或表達式,所以只要有一個運算對象為真結(jié)果就為真,且如果前面的已經(jīng)為真,后面的表達式不再進行執(zhí)行判斷。執(zhí)行第一個if判斷條件時a的值為2,整個表達式的值為真,b的值不變,c的值為2。判斷第二個if條件為邏輯與表達式,只有兩個運算對象均非零,才為真,第一個表達式c==3,不成立,不再判斷第二個運算對象,所以不執(zhí)行d=-1操作和a=5操作。所以結(jié)果為選項D。國家二級C語言機試(選擇題)模擬試卷第4套一、選擇題(本題共25題,每題1.0分,共25分。)1、計算機網(wǎng)絡(luò)的主要特點是A、運算速度快B、運算精度高C、資源共享D、人機交換標準答案:D知識點解析:計算機網(wǎng)絡(luò)的主要特點是資源共享。2、下列關(guān)于棧的描述中正確的是A、在棧中只能插入元素而不能刪除元素B、在棧中只能刪除元素而不能插入元素C、棧是特殊的線性表,只能在一端插入或刪除元素D、棧是特殊的線性表,只能在一端插入元素,而在另一端刪除元素標準答案:C知識點解析:棧是限定在一端進行插入與刪除的線性表,在棧中,允許插入與刪除的一端稱為棧頂,不允許插入與刪除的另一端稱為棧底。3、數(shù)據(jù)庫中對概念模式內(nèi)容進行說明的語言是()。A、數(shù)據(jù)控制語言B、數(shù)據(jù)操縱語言C、數(shù)據(jù)定義語言D、數(shù)據(jù)并發(fā)語言標準答案:C知識點解析:概念模式主要描述數(shù)據(jù)的概念記錄類型以及它們間的關(guān)系,它還包括一些數(shù)據(jù)間的語義約束,對它的描述可用DDL語言(數(shù)據(jù)定義語言)定義。4、若有定義“intx,y;”并已正確給變量賦值,則下列選項中與表達式“(x-y)?(x++):(y++)”中的條件表達式“(x-y)”等價的是()。A、(x-y>0)B、(x-y<0)C、(x-y<0‖x-y>0)D、(x-y==0)標準答案:C知識點解析:條件表達式的形式如下:“表達式17表達式2:表達式3”。其含義為當“表達式1”的值為非零時,求出“表達式2”的值,此時“表達式2”的值就是整個條件表達式的值;當“表達式1”的值為零時,則求“表達式3”的值,這時“表達式3”的值就是整個表達式的值。本題條件表達式的執(zhí)行順序是先求解表達式“x-y”的值,若其值為非0(可以是正數(shù),也可以是負數(shù)),則再求表達式“x++”的值,其值就是條件表達式的值:若表達式“x-y”的值為0,則再求表達式“y++”的值,其值就是條件表達式的值。因此,本題的答案為選項C。5、設(shè)有定義:inta=l,b=2,c=3;以下語句中執(zhí)行效果與其它三個不同的是A、if(a>b)c=a;a=b;b=c;B、if(a>b){c=a,a=b,b=c;}C、if(a>b)c=a,a=b,b=c;D、if(a>b){c=a;a=b;b=c;}標準答案:A知識點解析:在C語言中,用分號表示一條語句的結(jié)束,用{}把幾條語句放在一塊表示一個語句塊,其整體表示一個功能。因而在題目給出的四個選項中,選項B)、C)、D)表示的功能相同,而選項A)表示的是一條if語句,兩條賦值語句。6、下列測試方法中,()均屬于白盒測試的方法。A、語句覆蓋法和邊界值分析法B、條件覆蓋法和基本路徑測試法C、邊界值分析法和代碼檢查法D、等價類劃分和錯誤推測法標準答案:B知識點解析:白盒測試也稱結(jié)構(gòu)測試或邏輯驅(qū)動測試,它是按照程序內(nèi)部的結(jié)構(gòu)測試程序,通過測試來檢測產(chǎn)品內(nèi)部動作是否按照設(shè)計規(guī)格說明書的規(guī)定正常進行,檢驗程序中的每條通路是否都能按預(yù)定要求正確工作。白盒測試的測試方法有代碼檢查法、靜態(tài)結(jié)構(gòu)分析法、靜態(tài)質(zhì)量度量法、邏輯覆蓋法、基本路徑測試法、域測試、符號測試、路徑覆蓋和程序變異。黑盒測試也稱為功能測試,著眼于程序外部結(jié)構(gòu),不考慮內(nèi)部邏輯結(jié)構(gòu),主要針對軟件界面和軟件功能進行測試。黑盒測試方法包括等價類劃分法、邊界值分析法、錯誤推測法、因果圖法、判定表驅(qū)動法、正交試驗設(shè)計法、功能圖法等。故B選項正確。7、若有以下程序段:intr=8;printf(’’%d\n’’,r>>1);輸出結(jié)果是()。A、16B、8C、4D、2標準答案:C知識點解析:本題考查位運算,屬于基礎(chǔ)知識。題目中的整型變量8,二進制表達為00001000,右移一位為00000100,即4,C選項正確。8、由以下while構(gòu)成的循環(huán),循環(huán)體執(zhí)行的次數(shù)是intk=0;while(k=1)k++;A、一次也不執(zhí)行B、執(zhí)行一次C、無限次D、有語法錯,不能執(zhí)行標準答案:C知識點解析:循環(huán)條件表達式為賦值表達式k=1,因此循環(huán)執(zhí)行無限次。9、有以下程序:#include<stdio.h>intf(intx){returnx*x+1;}voidmain(){inta,b=0;for(a=0;a<3;a++){b=b+f(a);putchar(′A′+b);}printf(″\n″);}程序運行后的輸出結(jié)果是()。A、ABEB、BDIC、BCFD、BCD標準答案:B知識點解析:第一次循環(huán)時,b=1,輸出結(jié)果為B;第二次循環(huán)時,b=3,輸出結(jié)果為D;第三次循環(huán)時,b=8,輸出結(jié)果為1。10、以下選項中合法的C語言賦值語句是()。A、++i;B、a=b=34C、a=3,b=9D、k=int(a+b);標準答案:A知識點解析::考查賦值語句。C語言語句在結(jié)尾必須有分號,沒有分號則不合法,選項B)、C)錯;C語言中強制轉(zhuǎn)換類型需要將類型說明符給括起來,應(yīng)該為k=(int)(a+b),選項D)錯;答案選A)。11、有以下定義和語句:struetworker8{intnum;charname[20];charc;struet{intday;intmonth;intyear;}s;};structworkersw,*pw;pw=&w:能給w中year成員賦1980的語句是()。A、pw->year=1980;B、w.year=1980;C、w.s.year=1980;D、*pw.year=1980;標準答案:C知識點解析:本題考查結(jié)構(gòu)體變量的引用。題目中定義了一個結(jié)構(gòu)體,其中結(jié)構(gòu)體中的變量又是一個結(jié)構(gòu)體,w為外層結(jié)構(gòu)體,如果給內(nèi)層結(jié)構(gòu)體賦值,先要得到內(nèi)層結(jié)構(gòu)體變量,即w.s,若要給year賦值,表示為w.s.year即可,選項C正確。12、若有以下程序#includemain(){inta=0,b=0,c=0c=(a+=++b,b+=4);printf("%d,%d,%d\n",a,b,c);}則程序的輸出結(jié)果是A、1,5,1B、一1,4,4C、1,5,5D、-1,4,-1標準答案:C知識點解析:對于語句c=(a+=++b,b+=4);首先計算a=a+(++B,a,b初值為0,則計算以后a為1,b為1,然后計算b+=4,得到b的值為5,此時表達式b+=4的值為整個逗號表達式的值,因此c的值為5。13、以下選項中與if(a==1)a=b;elsea++;語句功能不同的switch語句是A、switch(a){case1:a=b;break;default:a++;}B、switch(a==1){case0:a=b:break;case1:a++;}C、switch(a){default:a++;break;Case1:a=b;}D、switch(a==1){case1:a=b;break;case0:a++;}標準答案:B知識點解析:本題主要考查if和switch結(jié)構(gòu)。if(a==1)a=b;elsea++;代碼段的功能是如果a等于則把b的值賦值給a,否則a++。選項A使用switch對a進行判斷,如果是1則a=b,跳出switch,如果是其他值則a++;選項B對a==1的結(jié)果進行switch判斷,如果為0表示a不等于1則a=b,和題目要求不符合:選項C和選項A一樣;選項D和選項case條件相反,滿足題目要求。14、若有定義:inta,b;通過語句scanf("%d;%a"&a,&b);能把整數(shù)3賦給變量a,5賦給變量b的輸入數(shù)據(jù)是A、3,5B、35C、3;5D、35標準答案:C知識點解析:在采用scanf這個函數(shù)輸入數(shù)據(jù)時,要嚴格遵守其輸入的規(guī)則定義。本題此函數(shù)定義的規(guī)則是,在兩個整數(shù)之間加分號輸入。15、有以下程序intf(intm)main(){intn=0;{staticintn=0;printf("%d,",f(++n));n+=m;returnn;}printf("%d\n",f(n++));}程序運行后的輸出結(jié)果是A、1,1B、1,2C、2,3D、3,3標準答案:B知識點解析:由于在函數(shù)f中,變量n為靜態(tài)局部變量,所以在主函數(shù)中第一次調(diào)用函數(shù)f后,變量n的值等于1,當?shù)诙{(diào)用函數(shù)f時,在函數(shù)f的內(nèi)部靜態(tài)局部變量n的值仍然保留等于1,所以返回函數(shù)值等于2。16、有以下程序fun(intx,inty)main(){staticintm=0,i=2;{intj=l,m=1,k;i+=m+1;m=i+x+y;returnm;k=fun(j,m);printf("%d,",k);}k=fun(j,m);printf("%d\n",k);}執(zhí)行后的輸出結(jié)果是A、5,5B、5,11C、11,11D、11,5標準答案:B知識點解析:子函數(shù)fun(intx,inty),將變量m和i聲明為局部靜態(tài)變量,因此第1次調(diào)用主函數(shù)后,局部靜態(tài)變量m和i的值為5和3,第1次函數(shù)調(diào)用結(jié)束時,它們的值不釋放保持不變,所以第2次調(diào)用時,局部靜態(tài)變量m和i的初始值分別為5和3,即在執(zhí)行“i+=m+1”時,i的值為9,因此最終m的值為11。17、若有以下程序#include<stdio.h>int*flint*s,int*t){intk;if(*s<*t){k=*s;*s=*t;*t=k;}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);}則程序的輸出結(jié)果是A、3,5,5,3,5B、3,5,3,5,5C、5,3,5,3,5D、5,3,3,5,5標準答案:C知識點解析:函數(shù)f為返回值為指針的函數(shù),主要功能是返回s和t指向空間值大的數(shù)據(jù)的地址,同時如何s指向空間數(shù)據(jù)大于t指向空間的數(shù)據(jù),那么交換。主函數(shù)p和q指向i和j,值為3和5,j的值大于i的值,因此調(diào)用函數(shù)f以后,返回i的地址,r指向j,同時i和i的值交換,i=5,i=3,p和q的指向不變,p指向i,q指向j。18、以下選項中,沒有編譯錯誤的是A、charstr3[]={’d’,’e’,’b’,’u’,’g’,’\0’};B、charstrl[5]="pass",str2[6];str2=str1;C、charname[10];name="china";D、charstr4[];str4="helloworld";標準答案:A知識點解析:選項A)是定義了字符數(shù)組str3[]并對其賦初值。選項B)中語句str2=str1非法,字符數(shù)組不能直接賦值。選項C),D)和選項B)一致。19、有以下程序段TypedefstructNODE{intnum;structNODE*next;}OLD;以下敘述中正確的是A、以上的說明形式非法B、NODE是一個結(jié)構(gòu)體類型C、OLD是一個結(jié)構(gòu)型類型D、OLD是一個結(jié)構(gòu)變量標準答案:C知識點解析:本題考查結(jié)構(gòu)體和typedf類型定義。本題的聲明代碼相當于兩部分,首先定義stmctNODE,然后是一typedef定義OLD類型,因此OLD是結(jié)構(gòu)體類型。選項C)正確,其他選項錯誤。20、若有以下程序typedefstructstu{char*name,gender;intscore;}STU;voidf(char*p){p=(char*)malloc(10);strcpy(p,"Qian");}main(){STUa={NULL,’m’,290},b;a.name=(char*)malloc(10);strcpy(a.name,"Zhao");b=a;f(b.name);b.gender=’f’;b.score=350;printf("%s,%c,%d,",a.A、Zhao,m,290,Qian,f,350B、Qian,f,350,Qian,f,350C、Qian,m,290,Qian,f,350D、Zhao,m,290,Zhao,f,350標準答案:D知識點解析:函數(shù)f(char*p)的主要功能申請字符串的存儲空間,然后存入字符串"Qian"。但當程序調(diào)用結(jié)束以后,形參指針變量p撤銷,存儲的字符串地址丟失,而不能更改實參指針的值。主函數(shù)中結(jié)構(gòu)體變量定義同時賦初值,初始情況其name指針成員存儲空,而后語句為其分配存儲空間,存入字符串“Zhao”。執(zhí)行“b=a;”語句后,b的數(shù)據(jù)和a的數(shù)據(jù)相同,調(diào)用函數(shù)f以后,b的name成員的值沒變。21、若有以下程序段intr==8:printf("%d\n",r>>1);輸出結(jié)果是A、8B、4C、16D、2標準答案:B知識點解析:定義了整型變量r,其值等于8,在輸出語句中,把變量r的值向右移動一位,在C語言中把變量向右移動一位,相當于其值除以2,所以在題中把變量r的值8除2,得到其值等于4。22、以下程序依次把從終端輸入的字符存放到f文件中,用#作為結(jié)束輸入的標志,則在橫線處應(yīng)填入的選項是#includemain(){FILE*fp;charch;fp=fopen("fname","w");while((ch=getchar())!=’#’)fputc(_______);fclose(fp);}A、ch,"fname"B、fp,chC、chD、ch,fp標準答案:D知識點解析:本題考查fputc函數(shù),該函數(shù)將字符ch寫到文件指針fp所指向的文件的當前寫指針的位置。函數(shù)格式:intfputc(intn,File*fp)答案為D選項。23、若有以下程序#include<stdio.h>intk=7,m=5;voidf(int**s){int*t=&k;s=&t;*s=&m;printf("%d,%d,%d,",k,*t,**s);}main(){inti=3,*p=&i,**r=&p;f(r);printf("%d,%d,%d\n",i,*p,**r);}則程序的輸出結(jié)果是A、7,5,7,3,3,3,B、7,5,7,3,5,7,C、7,5,5,3,3,3,D、7,7,5,3,3,3,標準答案:C知識點解析:本題考查二級指針作為函數(shù)的參數(shù),可以通過函數(shù)調(diào)用來改變主函數(shù)中一級指針的指向。主函數(shù)中指針變量p指向i,r指向p,調(diào)用f函數(shù),形參指針s指向p,流程轉(zhuǎn)到f函數(shù)執(zhí)行,指針變量t指向k,s指向t,此時更改了s的指向,s指向了t,更改了s指向的地址空間內(nèi)容為m的地址,同時t也指向變量m,因此**s的值為m的值,*t為m的值,k為7。流程返回到主函數(shù),沒有對主函數(shù)空間的數(shù)據(jù)和指向作出更改,因此全部為3。24、有以下程序#include#includetypedefstruct{charname[9];charsex;floatscore[2];}STU;STUf(STUa){STUb={"Zhao",’m’,85.0,90.0};inti;strcpy(,);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];returna;}main(){STUc={"Qian",’f’,95.0,92.0},d;d=f(c);printf("%s,%c,%2.0f,%2.0f\n",,d.sex,d.score[0],d.score[1]);}程序的運行結(jié)果是()。A、Zhao,m,85,90B、Qian,m,85,90C、Qian,f,95,92D、Zhao,f,95,92標準答案:A知識點解析:結(jié)構(gòu)體是用戶自己定義的一種數(shù)據(jù)類型,使用方法和C語言中的基本數(shù)據(jù)類型一致。函數(shù)f()中將結(jié)構(gòu)體b中成員的數(shù)據(jù)分別賦值給a,所以函數(shù)的返回值為a即{"Zhao",?m?,85,90}。25、以下關(guān)于字符串的敘述中正確的是A、空串比空格打頭的字符串小B、兩個字符串中的字符個數(shù)相同時才能進行字符串大小的比較C、可以用關(guān)系運算符對字符串的大小進行比較D、C語言中有字符串類型的常量和變量標準答案:A知識點解析:字符串比較大小是以第1個不相同字符的大小為標準的,跟長度沒有關(guān)系,B選項不正確;字符串比較大小除了使用庫函數(shù)strcn3()以外,就只能靠自己寫代碼來實現(xiàn)了,而不能通過關(guān)系運算符來比較大小。因為字符串在表達式中相當于constchar*,即常字符指針,代表的是字符串的首地址,關(guān)系運算符會將兩個字符串的首地址值比較大小,這是毫無意義的。C選項不正確。C語言中只有字符串常量而沒有字符串變量,D選項描述不正確;空串的長度為0,而以空格打頭的字符串的長度至少為1,因此A選項是正確。國家二級C語言機試(選擇題)模擬試卷第5套一、選擇題(本題共25題,每題1.0分,共25分。)1、下列敘述中正確的是()。A、循環(huán)隊列有隊頭和隊尾兩個指針,因此,循環(huán)隊列是非線性結(jié)構(gòu)B、在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況C、在循環(huán)隊列中,只需要隊尾指針就能反映隊列中元素的動態(tài)變化情況D、循環(huán)隊列中元素的個數(shù)是由隊頭指針和隊尾指針共同決定標準答案:D知識點解析:環(huán)隊列有隊頭和隊尾兩個指針,但是循環(huán)隊列仍是線性結(jié)構(gòu)的,所以A)錯誤;在循環(huán)隊列中只需要隊頭指針與隊尾兩個指針來共同反映隊列中元素的動態(tài)變化情況,所以B)與C)錯誤。2、支持予程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是A、棧B、樹C、隊列D、二叉樹標準答案:A知識點解析:棧是一種限定在一端進行插入與刪除的線性表。在主函數(shù)調(diào)用子函數(shù)時,要首先保存主函數(shù)當前的狀態(tài),然后轉(zhuǎn)去執(zhí)行子函數(shù),把子函數(shù)的運行結(jié)果返回到主函數(shù)調(diào)用子函數(shù)時的位置,主函數(shù)再接著往下執(zhí)行,這種過程符合棧的特點。所以一般采用棧式存儲方式。3、我們所寫的每條C語句,經(jīng)過編譯最終都將轉(zhuǎn)換成二進制的機器指令。關(guān)于轉(zhuǎn)換以下說法錯誤的是A、一條C語句可能會被轉(zhuǎn)換成多條機器指令B、一條C語句對應(yīng)轉(zhuǎn)換成一條機器指令C、一條C語句可能會被轉(zhuǎn)換成零條機器指令D、某種類型和格式的C語句被轉(zhuǎn)換成機器指令的條數(shù)是固定的標準答案:B知識點解析:由C語言編寫的程序,通過編譯、鏈接轉(zhuǎn)換成可以讓機器識別的01二進制指令。這些二進制指令命令機器計算,這些就是機器指令,而C語言的語句條數(shù)和機器指令的條數(shù)不是一對一的關(guān)系。4、在數(shù)據(jù)庫系統(tǒng)的內(nèi)部結(jié)構(gòu)體系中,索引屬于()。A、模式B、內(nèi)模式C、外模式D、概念模式標準答案:B知識點解析:內(nèi)模式又稱物理模式,它給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法,如數(shù)據(jù)存儲的文件結(jié)構(gòu)、索引、集簇及hash等存取方式與存取路徑,內(nèi)模式的物理性主要體現(xiàn)在操作系統(tǒng)及文件級上,它還未深入到設(shè)備級上(如磁盤及磁盤操作)。5、C源程序中不能表示的數(shù)制是A、八進制B、十進制C、二進制D、十六進制標準答案:C知識點解析:在C語言的源程序中,數(shù)值可以用十進制、八進制和十六進制來表示。不用二進制來表示。6、下列敘述中正確的是A、所謂算法就是計算方法B、程序可以作為算法的一種描述方法C、算法設(shè)計只需考慮得到計算結(jié)果D、算法設(shè)計可以忽略算法的運算時間標準答案:B知識點解析:算法是一組有窮指令集,是解題方案的準確而完整的描述。通俗地說,算法就是計算機解題的過程,重在解題方案的設(shè)計,并且不等于計算方法,故選項A和選項C不正確。程序的編制不可能優(yōu)于算法的設(shè)計,但算法的描述可以用程序、偽代碼、流程圖來描述,故選項B正確。算法要求執(zhí)行過程中所需要的基本運算次數(shù)和時間最少,即時間復(fù)雜度最低,所以選項D錯誤。7、設(shè)有以下函數(shù):f(inti){intj=0;staticintk=3;i++:j++;return(i+j+k);}如果下面的程序中調(diào)用該函數(shù),則輸出結(jié)果是()。main(){inta=2,i;for(i=0;i<3;i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論