版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
國家二級C語言機試(C語言程序設計)模擬試卷3(共8套)(共282題)國家二級C語言機試(C語言程序設計)模擬試卷第1套一、選擇題(本題共30題,每題1.0分,共30分。)1、已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。以下不能將變量c中的大寫字母轉(zhuǎn)換為對應小寫字母的語句是A、c=(’A’+C)26-’a’B、c=C+32C、c=C-’A’+’a’D、c=(C一’A’)%26+’a’標準答案:A知識點解析:由題意可知,小寫字符a和大寫字符A的ASCII代碼相差為32,所以選項C能將大寫字符C的ASCII代碼轉(zhuǎn)換為小寫字符c的ASCII代碼;選項D和C左側(cè)的表達式都是大寫字符C與大寫字符A的差與’a’的ASCII代碼的和就是小寫字符c的ASCII代碼。而選項A中應該是加上’a’,而不是減去’a’。2、以下選項中非法的C語言字符常量是A、’\b’B、’\007’C、’aa’D、’\xaa’標準答案:C知識點解析:一個字符常量代表ASCII字符集中的一個字符,在程序中用單引號把一個字符括起來作為字符常量。3、以下選項中非法的C語言字符常量是A、’9’B、’\09’C、’\x09’D、’\x9d’標準答案:B知識點解析:一個字符常量代表ASCII字符集中的一個字符,在程序中用單引號把一個字符括起來。也可以為轉(zhuǎn)移字符,轉(zhuǎn)義字符又稱反斜線字符,這些字符常量總是以一個反斜線開頭后跟一個特定的字符,用來代表某一個特定的ASCII字符,這些字符常量也必須括在一對單引號內(nèi)。其中反斜線后的八進制數(shù)可以不用0開頭,但是不能有8和9字符出現(xiàn)。反斜線后的十六制數(shù)只可由小寫字母x開頭。4、若有定義語句charc=’\101’;則變量C在內(nèi)存中占A、2個字節(jié)B、3個字節(jié)C、1個字節(jié)D、4個字節(jié)標準答案:C知識點解析:每個字符變量被分配一個字節(jié)的內(nèi)存空間,因此只能存放一個字符。字符值是以ASCII碼的形式存放在變量的內(nèi)存單元之中的。5、若有以下程序,則程序的輸出結(jié)果是#includemain(){charc1,c2;c1=’C’+’8’-’3’;c2=’9’-’0’;printf("%c%d\n”,c1,c2);}A、H9B、H’9’C、F’9’D、表達式不合法輸出無定值標準答案:A知識點解析:字符常量允許進行簡單的算術運算,則’C’+5表示H,而’9’-’0’則表示數(shù)值9。6、下面選項中合法的字符常量是A、XB、’abc’C、’X’D、’\’標準答案:C知識點解析:在程序中用單引號把一個字符括起來作為字符常量。但是為了表示字符“\”要用兩個“\\”表示一個反斜杠。7、以下敘述中正確的是A、字符常量在內(nèi)存中占2個字節(jié)B、轉(zhuǎn)義字符要用雙引號括起來,以便與普通的字符常量區(qū)分開C、字符常量需要用單引號括起來D、字符常量是不能進行關系運算的標準答案:C知識點解析:在程序中用單引號把一個字符括起來作為字符常量。轉(zhuǎn)義字符又稱反斜線字符,這些字符常量總是以一個反斜線開頭后跟一個特定的字符,用來代表某一個特定的ASCII字符,這些字符常量也必須括在一對單引號內(nèi),和整型常量一樣,字符常量也可以進行關系運算的。8、以下敘述中正確的是A、字符變量在定義時不能賦初值B、同一英文字母的大寫和小寫形式代表的是同一個字符常量C、字符常量可以參與任何整數(shù)運算D、轉(zhuǎn)義字符用符號開頭標準答案:C知識點解析:一個字符常量代表ASCII字符集中的一個字符,在C程序中,字符常量可參與任何整數(shù)運算,轉(zhuǎn)義字符以一個反斜線開頭后跟一個特定的字符。9、若有定義語句:chara=’\82’;則變量aA、包含1個字符B、說明不合法C、包含2個字符D、包含3個字符標準答案:B知識點解析:轉(zhuǎn)義字符以一個反斜線開頭后跟一個特定的字符,可以利用’\ddd’3位八進制數(shù)代表的一個ASCII字符,也可以’\xhh’2位十六進制數(shù)代表的一個ASCII字符。選項A中的八進制表示出現(xiàn)字符8,非法。10、有以下程序,程序的輸出結(jié)果是main(){charc1=’A’,c2=’Y’;printf("%d,%d\n",c1,c2);}A、輸出格式不合法,輸出出錯信息B、65,90C、65,89D、A,Y標準答案:C知識點解析:C語言允許對整型變量賦以字符值,也允許對字符變量賦以整型值。在輸出時,允許把字符變量按整型量輸出,也允許把整型量按字符量輸出。11、C語言中char類型數(shù)據(jù)占字節(jié)數(shù)為A、2B、3C、1D、4標準答案:C知識點解析:C語言中char類型數(shù)據(jù)占字節(jié)數(shù)為1。12、有以下程序,程序運行后的輸出結(jié)果是main(){chara=’H’;a=(a>=’A’&&a<=’Z’)?(a+32):a;printf("%c\n",A);}A、HB、AC、hD、a標準答案:C知識點解析:表達式a=(a>=’A’&&a<=’Z’)?(a+32):a,為條件表達式,如果a是大寫字符,則轉(zhuǎn)換為小寫字符存放到a中,否則不變。13、以下正確的字符串常量是A、’abc’B、OlympicGamesC、""D、"\\\"標準答案:C知識點解析:字符串常量是由雙引號括起來的一串字符。在C語言中,以一個反斜線開頭后跟一個特定的字符,用來代表一個特定的ASCII字符。利用兩個’\\’表示一個反斜杠,因此選項D的表示無法確認表示幾個反斜杠。14、若X和Y代表整型數(shù),以下表達式中不能正確表示數(shù)學關系|x-y|<10的是A、abs(x-y)<10B、x-y>-10&x-y<10C、!(x—y)<-10||!(y-x)>10D、(x-y)*(x-y)<100標準答案:C知識點解析:數(shù)學關系|x-y|<10表示x和y的差的絕對值小于10,選項A使用了abs求絕對值函數(shù),滿足要求;選項B是x和y的差值在-10和10之間,滿足要求;選項C是x和y的差值大于-10或者y和x的差值小于10,不滿足要。15、數(shù)字字符0的ASCII值為48,若有以下程序,程序運行后的輸出結(jié)果是main(){chara=’1’,b=’2’;printf("%c,",b++);printf("%d\n",b-A);}A、3,2B、50,2C、2,2D、2,50標準答案:C知識點解析:本題主要考查ASCII碼和自加運算。第一個printf語句中,是以字符形式輸出b++的值,++放在變量的后面是先使用然后自增,因此第一個printf輸出值是2,然后b的值變成’3’。在第二個printf語句中,b的值為’3’,a的值為’1’,所以b-a的值為2。16、若有代數(shù)式(其中e僅代表自然對數(shù)的底數(shù),不是變量),則以下能夠正確表示該代數(shù)式的C語言表達式是A、sqrt(fabs(pow(n,x)+pow(x,e)))B、sqrt(abs(n^x+e^x))C、sqrt(fabs(pow(n,x)+exp(x)))D、sqrt(fabs(pow(x,n)+exp(x)))標準答案:C知識點解析:n和e的x冪次方,要分別調(diào)用C語言的數(shù)學庫函數(shù)doublepow(n,x)和doubleexp(x),因為這兩個函數(shù)的返回值都為double型,對其兩者的和計算絕對值,調(diào)用庫函數(shù)doublefabs(pow(n,x)+exp(x)),求出和的絕對值,再調(diào)用開平方函數(shù)doublesqrt(fabs(pow(n,x)+exp(x))),這樣計算出的結(jié)果就是題干中算術表達式的值。17、表達式:(int)((double)9/2)-9%2的值是A、0B、4C、3D、5標準答案:C知識點解析:這個表達式的計算過程為,首先求出9除以2的商等于4,再把其強制轉(zhuǎn)化為實型數(shù)據(jù)為4.0,然后再強制轉(zhuǎn)4,減去9對2求余數(shù)1,得到其結(jié)果等于3。18、若有定義語句: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。19、表達式3.6-5/2+1.2+5%2的值是A、4.8B、3.3C、3.8D、4.3標準答案:C知識點解析:表達式的計算過程為:3.6-5/2+1.2十5%2=3.6-2+1.2+1=3.8。此題要注意5/2的結(jié)果是2,而不2.5,因為除法運算符兩邊的數(shù)值類型均為整型,故運算結(jié)果的數(shù)值類型也被認定為整型。20、有以下定義:inta;longb;doublex,y;則以下選項中正確的表達式是A、a%(int)(x—y)B、a=x<>yC、(a*y)%bD、y=x+y=x標準答案:A知識點解析:選項B中<>運算符不存在,選項C中double類型不能進行取余(%)操作,要求兩個運算數(shù)必須是整數(shù),選項D中x+y=x錯誤。21、若有以下程序,編譯時出現(xiàn)錯誤,你認為出錯的是#includemain(){inta=0,b=0,c=0,d;c=(a+=b,,b+=A)/*第4行*/d=c;;/*第5行*/;/*第6行*/printf("%d,%d,%d\n",a,b,C)/*第7行*/}A、第4行B、第5行C、第6行D、第7行標準答案:A知識點解析:第4行出錯,在第4行括號中兩個逗號不可以為空。單獨的分號為C語言的空語句,是編譯程序可以識別并且編譯的,因此第5、6行都是正確的。22、不能正確表示數(shù)學式的表達式是A、a*b/cB、a/c*bC、a/b*cD、a*(b/c)標準答案:C知識點解析:表達式的含義為a乘以b除以c,選項C正好曲解了這一個含義。23、C語言程序中,運算對象必須是整型數(shù)的運算符是A、/B、%C、&&D、*標準答案:B知識點解析:%要求參與運算的運算量為整型,其他三個運算符對于參與運算的運算量沒有直接要求。24、設有定義:intk=1,m=2;f=7;,則以下選項中錯誤的表達式是A、k=k>=kB、-k++C、k%int(f)D、k>=f=m標準答案:C知識點解析:本題考查了賦值表達式,在賦值表達式中,等號的左邊必須是變量,等號右邊可以是變量、表達式或者常量。選項A是一個賦值表達式;選項B是一個表達式;選項C是計算余數(shù)表達式;選項D錯誤,等號的左邊不是變量。25、設有定義:inta=2,b=3,c=4;,則以下選項中值為0的表達式是A、(!a==1)&(!b==0)B、(a<b)&!c||1C、a&bD、a||(b+b)||(c-a)標準答案:A知識點解析:本題主要考查邏輯運算。選項A中,(!a==1)中!運算優(yōu)先級比==高,因此!a為假,然后在和1比較是否相等,因此整個表達式的結(jié)果為假,(!a==1)和(!b==0)是與的關系,前面的表達式為假,整個表達式結(jié)果就是假(0);選項B中a<b為真,!c值為假,(a<b)&!c值為假,(a<b)&!c‖1為真:選項C中a&b的值為2;選項D中a的值為真,表達式的結(jié)果為真。26、若有表達式(w)?(--x):(++y),則其中與w等價的表達式是A、w==1B、w==0C、w!=1D、w!=0標準答案:D知識點解析:本題考查條件表達式。(w)?(--x):(++y)的含義是如果w非0那么表達式的值為-x,否為++y,因此只有選項D和w等價。27、若有定義:doublea=22;inti=0,k=18;則不符合C語言規(guī)定的賦值語句是A、i=(a+k)<=(i+k);B、a=a++,i++;C、i=a%11;D、i=!a;標準答案:C知識點解析:在C語言中,求余運算符的運算對象只能是整型,在題目中,變量a是一個雙精型實型變量。28、設變量已正確定義并賦值,以下正確的表達式是A、x=y(tǒng)+z+5,++yB、int(15.8%5)C、x=y*5=x+zD、x=25%5.0標準答案:A知識點解析:在賦值表達式中,賦值符號“=”的左邊只能為賦值的變量,不能為表達式,右邊可以為常量或者是表達式,故選項C錯誤;在取余運算中,運算符“%”兩邊都必須是整型數(shù)據(jù),所以選項B、D錯誤,選項A是C語言中的逗號表達式。29、若有定義語句:intx=10;則表達式x-=x+x的值為A、-20B、0C、-10D、10標準答案:C知識點解析:表達式x-=x+x等價于x=x-(x+x),整型變量x的初始值等于10,計算題目所求表達式的值時,首先計算x與x的和等于20,然后再用10減去20等于-10,得到該表達式的值。30、有以下程序#includemain(){inta=1,b=0;printf("%d,",b=a+B)printf("%d\n",a=2*B)}程序運行后的輸出結(jié)果是A、1,0B、3,2C、1,2D、0,0標準答案:C知識點解析:在主函數(shù)中定義了兩個整型變量a和b,并把它們的初值分別設置為1和0;在第二條語句中,首先計算出a和b的和等于1,把此值賦給變量b,并在屏幕上輸出此時變量b的值1;在第三條語句中,計算出2乘以1的積等于2,把2賦給變量a,再把變量a的值在屏幕上輸出。國家二級C語言機試(C語言程序設計)模擬試卷第2套一、選擇題(本題共30題,每題1.0分,共30分。)1、我們所寫的每條C語句,經(jīng)過編譯最終都將轉(zhuǎn)換成二進制的機器指令。關于轉(zhuǎn)換以下說法錯誤的是A、一條C語句可能會被轉(zhuǎn)換成多條機器指令B、一條C語句對應轉(zhuǎn)換成一條機器指令C、一條C語句可能會被轉(zhuǎn)換成零條機器指令D、某種類型和格式的C語句被轉(zhuǎn)換成機器指令的條數(shù)是固定的標準答案:B知識點解析:由C語言編寫的程序,通過編譯,鏈接轉(zhuǎn)換成可以讓機器識別的01二進制指令。這些二進制指令命令機器計算,這些就是機器指令,而C語言的語句條數(shù)和機器指令的條數(shù)不是一對一的關系。2、以下選項中不屬于C語言程序運算符的是A、sizeofB、()C、D、&&標準答案:C知識點解析:sizeof為測試內(nèi)存的運算符,()為算術運算符,&&為邏輯運算符。而<>不是C語言的運算符,C語言中!=表示不等于。3、若變量己正確定義并賦值,以下不能構成C語句的選項是A、A=a+b;B、B++;C、a=a+bD、A?a:b;標準答案:C知識點解析:C語言語句的表示為分號,不加分號的表達式不能看成C語句。4、以下敘述中正確的是A、程序必須包含所有三種基本結(jié)構才能成為一種算法B、如果算法非常復雜,則需要使用三種基本結(jié)構之外的語句結(jié)構,才能準確表達C、只有簡單算法才能在有限的操作步驟之后結(jié)束D、我們所寫的每條C語句,經(jīng)過編譯最終都將轉(zhuǎn)換成二進制的機器指令標準答案:D知識點解析:C語句構成了函數(shù),函數(shù)構成的程序,經(jīng)過編譯轉(zhuǎn)換成二進制代碼后可以運行,算法是指為解決某個特定問題而采取的確定且有限的步驟,可以利用代碼來描述算法,而算法+數(shù)據(jù)結(jié)構才是程序,結(jié)構化的程序由順序結(jié)構、循環(huán)結(jié)構和選擇結(jié)構三種基本結(jié)構組成。由這三種基本結(jié)構組成的算法可以解決任何復雜的問題,反之則不一定,所有算法必須在有限步驟后結(jié)束。5、下列選項中,不能用作標識符的是A、_1234_B、_1_2C、int_2_D、2_int_標準答案:D知識點解析:C語言中標識符必須以字母或者下劃線開始,選項D中是以數(shù)字開始的不能作為標識符。6、以下選項中作為C語言合法常量的是A、-80.B、-080C、-8e1.0D、-80.0e標準答案:A知識點解析:本題考查C語言中的常量,C語言中字母e或E之前必須有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。選項A表示負數(shù)-80;選項B中以數(shù)字0開始表示的是八進制數(shù),八進制數(shù)數(shù)字范圍是從0.7,不包括8;選項C是一個指數(shù)浮點,字母e后面應該是整型指數(shù);選項D中字母e后面沒有整數(shù),不滿足C規(guī)范。7、以下不能定義為用戶標識符是A、MainB、_0C、_intD、sizeof標準答案:D知識點解析:本題考查用戶標識符,C語言中用戶標識符只能由字母和數(shù)字組成,且必須以字母開頭,不能和C語言的關鍵字相同。選項A、B和C都符合要求,選項D中的sizeof是C語言關鍵字,不能作為用戶標識符。8、以下選項中,不能作為合法常量的是A、1.234e04B、1.234e0.4C、1.234e+4D、1.23E+00標準答案:B知識點解析:本題考查C語言中的常量,C語言中字母e或E之前必須有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。選項B中字母e后面是浮點數(shù),錯誤,其他選項都是正確的常量。9、可在C程序中用作用戶標識符的一組標識符是A、and_2007B、Datey-m-dC、HiDr.TomD、caseBigl標準答案:A知識點解析:本題考查用戶標識符,C語言中,用戶標識符只能由字母、下劃線和數(shù)組組成,且必須以字母或者下劃線開始。選項A正確;選項B中使用了字符“-”;選項C使用了字符“.”;選項D中的case是C語言關鍵字,不能作為用戶標識符。10、以下C語言用戶標識符中,不合法的是A、_1B、AaBcC、a_bD、a--b標準答案:D知識點解析:本題考查用戶標識符,C語言中,用戶標識符只能由字母、下劃線和數(shù)組組成,且必須以字母或者下劃線開始。選項A、B和C都是正確的,選項D中的case是C語言關鍵字,不能作為用戶標識符。11、以下選項中不能用作C程序合法常量的是A、1,234B、’\123’C、123D、\x7G標準答案:A知識點解析:本題考查C語言中的常量。選項A錯誤,多了逗號;選項B是字符常量;選項C是整型常量;選項D是字符常量。12、關于C語言中數(shù)的表示,以下敘述正確的是A、只要允許范圍內(nèi)整型數(shù)和實型數(shù)都能精確的表示B、只有整型數(shù)在允許范圍內(nèi)能精確無誤的表示,實型數(shù)會有誤差C、只有實型數(shù)在允許范圍內(nèi)能精確無誤的表示,整型數(shù)會有誤差D、只有用八進制表示的數(shù)才不會有誤差標準答案:C知識點解析:本題考查C語言基本數(shù)據(jù)類型,整型數(shù)是有范圍的,只在允許的范圍內(nèi)才能精確無誤的表示,實型數(shù)由于存儲長度限制存在誤差。13、設變量均已正確定義并賦值,以下與其他三組輸出結(jié)果不同的一組語句是A、x*;printf("%d\n",x);B、*x;printf("%d\n",x);C、n=x*;print("%d\n",n);D、n=*x;print("%d\n",n);標準答案:C知識點解析:本題考查自增運算符。++在前表示先自增然后使用,++在后面表示先使用然后自增。選項A中首先執(zhí)行x++,執(zhí)行完后x自增1,然后printf輸出的是x自增后的值;選項B首先執(zhí)行++x,x的值增加1,接著輸出x的值;選項C中++在x的后面,因此n的值是x自增前的值,printf輸出的是x自增前的值;選項D中++在x的前面,因此x首先自增,然后再賦值給n,n的值是x自增后的值,輸出的也是x自增后的值。14、以下選項中表示一個合法的常量是(說明:符號口表示空格)A、123E0.2B、2.7eC、0999D、0Xab標準答案:D知識點解析:本題考查C語言中的常量。選項A字母E后面必須是整型數(shù),浮點數(shù)錯誤;選項B字母e后面沒有整型數(shù);選項C以0開始表示8進制數(shù),8進制數(shù)沒有9;選項D是一個正確的16進制常數(shù)。15、以下選項中不合法的標識符是A、FORB、&aC、printD、_00標準答案:B知識點解析:合法的標識符要滿足組成字符為a~z以及A~Z,數(shù)字字符0到9和下劃線,其中數(shù)字不開頭,不能是關鍵字。選項B中,&不屬于組成字符,是錯誤的。16、以下選項中,能用作數(shù)據(jù)常量的是A、115LB、0118C、1.5e1.5D、o115標準答案:A知識點解析:本題考查常量定義。數(shù)據(jù)常量可有10進制、8進制、16進制、指數(shù)法等,8進制數(shù)字為0-7,第一個字符為0,而不是o。指數(shù)法表示時,指數(shù)部分須為整型,選項A中數(shù)字后加入L是說明此變量為長整型,是正確的常量表示形式。17、按照C語言規(guī)定的用戶標識符命名規(guī)則,不能出現(xiàn)在標識符中的是A、連接符B、大寫字母C、數(shù)字字符D、下劃線標準答案:A知識點解析:在C語言中,合法標識符的命令規(guī)則是:標識符可以由字母、數(shù)字或下劃線組成,并且第一個字符必須為字母或下劃線。在C語言的標識符中,大寫字母和小寫字母被認為是兩個不同的字符。選項A是連字符,不在C語言規(guī)定的命名變量標識符的范圍內(nèi)。18、以下選項中,能用作用戶標識符的是A、_0,B、8_8C、voidD、unsigned標準答案:A知識點解析:在C語言中,用戶的標識符只能由字母或下劃線開始。一般強調(diào)文見其義的命名方法。但是C語言中的保留字不能用作用戶的標識符。而選項C和D全部為保留字,選項B中以數(shù)字開頭,這些都不正確。19、下列定義變量的語句中錯誤的是A、floatUS$;B、doubleint_;C、charFor;D、int_int;標準答案:A知識點解析:C語言規(guī)定,變量的標識符只能由字母、數(shù)字或下劃線3種字符組成,且首字符必須為字母或下劃線。在C語言中大寫字母和小寫字母被認為是兩個不同的字符。選項B定義的變量標識符int_和選項D定義的變量標識符_int與C語言的關鍵字int是不同的,是正確的變量標識。選項C定義的變量標識符For與C語言中的關鍵字for是兩個不同的標識符,而在選項A包含有特殊字符$,因而其不符合C語言的變量命名規(guī)定。20、以下選項中關于C語言常量的敘述錯誤的是A、常量分為整型常量、實型常量、字符常量和字符串常量B、經(jīng)常被使用的變量可以定義成常量C、常量可分為數(shù)值型常量和非數(shù)值型常量D、所謂常量,是指在程序運行過程中,其值不能被改變的量標準答案:B知識點解析:常量指在程序運行過程中,其值不能被改變的量。常量分為整型常量(即整常數(shù))、實型常量、字符型常量和字符串常量。常量也可以按數(shù)據(jù)類型分為為數(shù)據(jù)常量和非數(shù)據(jù)常量。變量是指在程序運行過程中,其值能被改變的量。21、以下選項中,不合法的C語言用戶標識符是A、AaBcB、a-bC、a_bD、_1標準答案:B知識點解析:在C語言中的用戶標識符只能由字母,數(shù)字和下劃母組成,并且第一個字符必須是字母或下劃線,在選項A中出現(xiàn)了非法的字符~22、以下關于C語言數(shù)據(jù)類型使用的敘述中錯誤的是A、若要保存帶有多位小數(shù)的數(shù)據(jù),可使用雙精度類型B、若要處理如“人員信息”等含有不同類型的相關數(shù)據(jù),應自定義結(jié)構體類型C、若只處理“真”和“假”兩種邏輯值,應使用邏輯類型D、整數(shù)類型表示的自然數(shù)是準確無誤差的標準答案:C知識點解析:在C語言中沒有定義邏輯類型,而是用0代表假,用非零代表真。23、以下選項中不能用作C程序合法常量的是A、’\123"B、1,234C、123D、”Lx7D’t標準答案:B知識點解析:選項B中的1,234在兩側(cè)加雙引號才是C程序的合法字符串常量。24、閱讀以下程序#includemain(){intcase;floatprintf;printf("請輸入2個數(shù):"):scanf("%d%f",&case,&printF);printf("%d%f\n",case,printF);}該程序在編譯時產(chǎn)生錯誤,其出錯原因是A、定義語句出錯,printF能用作用戶自定義標識符B、定義語句出錯,case是關鍵字,不能用作用戶自定義標識符C、定義語句無錯,scanf不能作為輸入函數(shù)使用D、定義語句無錯,printf不能輸出case的值標準答案:B知識點解析:case是C語言中的一個關鍵字,不能用作用戶標識符來使用,所以這段程序代碼在編譯時就會出錯。25、以下選項中合法的標識符是A、1-1B、1_1C、_11D、1__標準答案:C知識點解析:本題考查標識符定義。合法標識符的要求是由下劃線、英文大小寫字母和數(shù)字組成的字符串,且第一個字符必須是字母或下劃線。26、關于C語言的符號常量,以下敘述中正確的是A、符號常量的符號名是標識符,但必須大寫B(tài)、符號常量在整個程序中其值都不能再被重新定義C、符號常量是指在程序中通過宏定義用一個符號名來代表一個常量D、符號常量的符號名必須是常量標準答案:C知識點解析:在C語言程序中,用一個符號名來代表一個常量,稱為符號常量。注意:這個符號名必須在程序中進行特別的“指定”,并符合標識符的命名規(guī)則。一般在程序中都是利用宏定義來定義符號常量的,在代碼中可以利用under來結(jié)束符號常量的定義,然后進行重新定義,符號常量的大小寫并沒有特別的規(guī)定,一般時候為了和變量區(qū)分利用大寫。27、關于C語言的變量,以下敘述中錯誤的是A、所謂變量是指在程序運行過程中其值可以被改變的量B、變量所占的存儲單元地址可以隨時改變C、程序中用到的所有變量都必須先定義后才能使用D、由三條下劃線構成的符號名是合法的變量名標準答案:B知識點解析:變量是指在程序運行過程中其值可以改變的值,一個變量實質(zhì)上是代表了內(nèi)存中的某個存儲單元。在程序中對某個變量的操作實際上就是對這個存儲單元的操作,程序運行期間,這個分配的存儲單元不會改變,但是其值可以變化。變量命名要符合標識符的規(guī)定,其中下劃線是標識符的組成字符。程序中所有變量都必須先定義后使用。28、以下選項中不屬于C語言標識符的是A、用戶標識符B、關鍵字C、常量D、預定義標識標準答案:C知識點解析:C語言的標識符可分為以下3類:①關鍵字。C語言預先規(guī)定了一批標識符,它們在程序中都代表著固定的含義,不能另作他用。這些字符稱為關鍵字。例如,int、double、if、else、while、for等。②預定義標識符。即預先定義并具有特定含義的標識符。③用戶標識符。由用戶根據(jù)需要定義的標識符稱為用戶標識符,又稱自定義標識符,一般用來給變量、函數(shù)、數(shù)組等命名。29、以下選項中合法的變量是A、5aB、A%C、_10_D、sizeof標準答案:C知識點解析:對于變量的命名要利用標識符命名,所謂標識符就是C語言中的變量名、函數(shù)名、數(shù)組名、文件名、類型名等。其中標識符構成如下:①標識符由字母、數(shù)字和下劃線組成;②第一個字符必須為字母或下劃線;因此選項A中數(shù)字開頭,選項B出現(xiàn)了非法字符%,而選項D中sizeof為關鍵字,不能為變量命名。30、以下敘述中正確的是A、標識符的長度不能任意長,最多只能包含16個字符B、語言中的關鍵字不能作變量名,但可以作為函數(shù)名C、用戶自定義的標識符必須“見名知義”,如果隨意定義,則會出編譯錯誤D、標識符總是由字母、數(shù)字和下劃線組成,且第一個字符不得為數(shù)字標準答案:D知識點解析:標識符就是C語言中的變量名、函數(shù)名、數(shù)組名、文件名、類型名等。C語言合法標識符的命名規(guī)則是:①標識符由字母、數(shù)字和下劃線組成;②第一個字符必須為字母或下劃線;③大寫字母與小寫字母被認為是兩個不同的字符;④C語言規(guī)定了一個標識符允許的字符個數(shù),為32,超過的字符將不被識別。C語言的標識符可分為以下3類:①關鍵字,不能用于為自定義標識符命名。②預定義標識符。③用戶標識符。由用戶根據(jù)需要定義的標識符稱為用戶標識符,又稱自定義標識符,一般用來給變量、函數(shù)、數(shù)組等命名,一般做到見名知義,但是沒有特殊規(guī)定。國家二級C語言機試(C語言程序設計)模擬試卷第3套一、選擇題(本題共35題,每題1.0分,共35分。)1、以下是if語句的基本形式:if(表達式)語句其中“表達式”A、必須是邏輯表達式B、必須是關系表達式C、必須是邏輯表達或關系表達D、可以是任意合法的表達式標準答案:D知識點解析:本題考查if語句,C語言中if語句中的表達式可以是任意合法的表達式。2、有以下程序main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf("%d,%d,%或%d\n",a,b,c,d),}程序輸出A、0,0,0,3B、1,1,2,0C、編譯有錯D、0,1,2,0標準答案:C知識點解析:if語句的格式為;ifr表達式)語句1else語句2if和else是C語言的關鍵字?!罢Z句1”稱為if子句,“語句2”稱為else子句,這些子句只允許為一條語句,若需要多條語句時,則應該使用復合語句。因此題目“if(a=1)b=1;c=2;elsed=3;”,if分支有兩條語句,沒構成復合語句。3、有以下程序main(){intx=1,y=0;if(!x)y++;elseif(x~0)if(x)y+=2;elsey+=3;printf(”%d\11”,y);}程序運行后的輸出結(jié)果是A、2B、0C、1D、3標準答案:B知識點解析:x=l,if和elseif的條件都不滿足,故y值不改變輸出。4、若變量已正確定義,在if(W)pfintf(”%d\11”,k);中,以下不可替代W的是A、ch=getchar(1B、a--b+cC、a<>b+cD、a++標準答案:C知識點解析:在if()語句的括號是一個合法的C語言表達式即可,如果表達式的值為0,則不執(zhí)行if語句,否則執(zhí)行if語句,而在選項C中,符號<>不是C語言的合法運算符,如果要表達a大于或小于b+c可用a!b+c或(a>b+c)‖(ab+c。所以它不是一個合法的C語言表達式。5、有以下程序段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。6、設有定義:inta=1,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語句,兩條賦值語句。7、if語句的基本形式是:if(表達式)語句,以下關于“表達式”值的敘述中正確的是A、必須是整數(shù)值B、必須是正數(shù)C、可以是任意合法的數(shù)值D、if(a>b){c=a;a=b;b=c;}標準答案:C知識點解析:在if語句中,表達式可以是任意合法的數(shù)值。當其值為非零時,執(zhí)行if語句,為0時執(zhí)行else語句。8、有如下嵌套的if語句if(aA、k=(aB、k=(aC、k=(aD、k=(a標準答案:D知識點解析:嵌套的ifelse語句的含義是,在變量a的值小于變量b的值,同時,變量a的值小于變量c的值時,把變量a的值賦給變量k。在變量a的值小于變量b的值,同時,變量a的值大于等于變量c的值時,把變量c的值賦給變量k。在變量a的值大于等于變量b的值,同時,變量b的值小于變量c的值時,把變量b的值賦給變量k。在變量a的值大于等于變量b的值,同時,變量b的值大于等于變量c的值時,把變量c的值賦給變量k。9、有以下計算公式若程序前面已經(jīng)在命令行中包含math.h文件,不能夠正確計算上述公式的程序段是A、y=sqrt(x);if(x<0)y=sqrt(-x);B、if(x>=0)y=sqrt(x);elsey=sqrt(-x);C、if(x>=0)y=sqrt(x);if(x<0)y=sqrt(-x);D、y=sqrt(x>=07x:-x);標準答案:A知識點解析:由題意可知計算公式的含義是:當x大于等于0時,y值等于x的算術平方根;當x小于0時,y值等于x的相反數(shù)的算術平方根。所以選項B用一個完整的ifelse語句表達了計算公式的含義:選項C用兩個if語句表達了計算公式的含義;選項D在求平方根函數(shù)的后面用x≥0?x:-x條件表達式來表達了計算公式的含義。選項A沒有用C語言語句正確的表達計算公式的含義。10、有以下程序#includemain(){intx;scanf("%d",&x);if(x<=3);elseif(x!=10)printf("%d\n",x);}程序運行時,輸入的值在哪個范圍才會有輸出結(jié)果A、不等于10的整數(shù)B、大于3或等于10的整數(shù)C、小于3的整數(shù)D、大于3且不等10的整數(shù)標準答案:D知識點解析:題目中,雖然else和第二個if不在同一行上,但等價于在同一行上,因此,程序的意思是當x大于3且不等于10時打印出來。11、有以下程序main(){inta=1,b=2,c=3,d=0;if(a==1&&b++=2)if(b!=2‖c-!=3)printf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);}程序運行后的輸出結(jié)果是A、1,3,2B、1,2,3C、1,3,3D、3,2,1標準答案:C知識點解析:a,b,c,d初始值分別為1,2,3,0。嵌套的if語句中,第一個if中,表達式a==1&&b++==2值為1,執(zhí)行嵌套的if分支,此時“b=3,b!=2”成立,由于運算符是‖,不管后面一個表達式的值是不是1,其整個表達式的值總是1,“c--!=3”表達式不執(zhí)行,最后打印出a,b,c的值是1,3,3。12、下列條件語句中,輸出結(jié)果與其他語句不同的是A、if(a==0)printf("%d\n",x);elseprintf("%d\n",y);B、if(a==0)printf("%d\n",y);elseprintf("%d\n",x);C、if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);D、if(a)printf("%d\n",x);elseprintf("%d\n",y);標準答案:A知識點解析:選項B、C)、D)這三條語句都是在變量不等于0的情況下,輸出x:等于0的情況下輸出y,而選項A則正好相反。13、若有以下程序#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、2,1,2,-1B、2,2,2,4C、5,1,2,-1D、1,2,3,4標準答案:B知識點解析:代碼中有兩條并列的if語句,第一條if語句執(zhí)行,(a=2)‖(b=1)值為1,由于邏輯或表達式,根據(jù)其短路運算規(guī)則,a=2,b=2,即b值不變執(zhí)行if分支c=2。并列的if語句中表達式(c==3)&&(d=-1)為邏輯與表達式,c==3不成立,不考慮d=-1表達式,d為5.邏輯表達式值為0,不執(zhí)行相應if分支。14、若有以下程序#includemain(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;else;if(c!=3)r+=3;else;if(d==4)r+=4;printf("%d\n",r);}則程序的輸出結(jié)果是A、10B、6C、7D、3標準答案:C知識點解析:程序代碼中有四條并列的if語句,第一條if表達式a!=1不成立,執(zhí)行else分支,r=1;第二條if表達式b==2成立,執(zhí)行r+=2,r=3;第三條if語句c!=3不成立,執(zhí)行else分支,分支為空語句;第四條if分支d==4成立,執(zhí)行該if分支語句,r+=4,r=7。15、若有以下程序#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、2,1,2,-1B、2,2,2,4C、1,2,3,4D、5,1,2,-1標準答案:D知識點解析:代碼中有兩條并列的if語句,第一條if語句,邏輯與表達式(a=2)&&(b=1)中,a=2,則執(zhí)行b=1,得到該邏輯與表達式值為1,執(zhí)行分支語句c=2;第二條if語句(c一3)‖(d=-1),c==3不成立,執(zhí)行d=-1,而后得出整個邏輯與表達式值為1,執(zhí)行分支語句a=5。16、若有以下程序main(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;if(c!=3);r+=3;if(d==4)r+=4;printf("%d\n",r);}則程序的輸出結(jié)果是A、7B、10C、6D、3標準答案:B知識點解析:程序代碼中有四條并列的if語句,第一條if表達式a!=1不成立,執(zhí)行else分支,r=1;第二條if表達式b==2成立,執(zhí)行r+=2,r=3;第三條if語句c!=3不成立,執(zhí)行語句,r+=3,r=6;第四條if分支d==4成立,執(zhí)行該if分支語句,r+=4,r=10。17、以下敘述中正確的是A、if語句只能嵌套一層B、不能在else子句中再嵌套if語句C、if子句和else子句中可以是任意的合法的C語句D、改變if-else語句的縮進格式,會改變程序的執(zhí)行流程標準答案:C知識點解析:含else子句的if語句的格式為if(表達式)語句1else語句2其中if和else是C語言的關鍵字?!罢Z句1”稱為if子句,“語句2”稱為else子句,這些子句只允許為一條語句,若需要多條語句時,則應該使用復合語句,對于if和else語句的嵌套原則是比較自由的。18、以下選項中與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é)構?!癷f(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條件相反,滿足題目要求。19、若以下選項中變量全部為整型變量,且已正確定義并賦值,則語法正確的switch語句是A、switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b:}B、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break:1}C、switch(a+9){casec1:y=a-b;casec2:y=a+b;}D、switcha*b{case10:x:a+b;default:y=a-b;}標準答案:B知識點解析:本題考查switch的使用。選項A中的case0和case4沒有break語句;選項B正確;選項C中的case后面不是常量,錯誤;選項D中switch后面沒有括號。20、有以下程序main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("a=%d,b=%d\n",a,b);}程序的運行結(jié)果是A、a=2,b=2B、a=1,b=1C、a=1,b=0D、a=2,b=1標準答案:D知識點解析:本題考查的是用switch語句實現(xiàn)多分支選擇結(jié)構,首先進入第一個switch(x)判斷,進入ease1中進行嵌套判斷,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接著執(zhí)行case2,a自加為2,b自加為1,遇到break,結(jié)束循環(huán),此時a=2,b=1。21、若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語句是A、switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}B、switch((int)x);{case1:printf("*\n");case2:printf("**\n");}C、switch(x){case1.0:printf("*\n");case2.O:printf("**\n");}D、switch(a+b){case1:printf("*\n");casec:printf("**\n");}標準答案:A知識點解析:在C語言中,switch()后一對圓括號中的可以是整型表達式或字符表達式。case語句后面的常量表達式的類型必須與switch后圓括號中的表達式類型相同,各case語句標號的值應該互不相同,選項B中switch后括號表達式出錯,選項C中case后面的常量類型不正確,選項D中case后面出現(xiàn)了變量表達式,所以D)不正確。22、下列敘述中正確的是A、在switch語句中必須使用defaultB、break語句必須與switch語句中的case配對使用C、在switch語句中,不一定使用break語句D、break語句只能用于switch語句標準答案:C知識點解析:break為C語言關鍵字,又稱間斷語句。break語句的功能是跳出正在執(zhí)行的條件語句或循環(huán)語句。它可以出現(xiàn)在switch語句中,也可以出現(xiàn)在循環(huán)語句中。default是關鍵字,起標號的作用,代表所有case標號之外的那些標號。default標號可以出現(xiàn)在語句體中任何標號位置上。在switch語句體中也可以沒有default標號。23、有以下程序main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5)}運行以后的輸出結(jié)果是A、0235B、235C、02356D、2356標準答案:B知識點解析:因為變量的初始值分別為k=5,n=0,所以程序第1次進入循環(huán)時,執(zhí)行default語句,“n=0,k=4”,沒有break語句,因此執(zhí)行case2分支語句,n為2,k為3,程序進行第2次循環(huán),執(zhí)行“case3:n=3,k=2”,輸出n值為3,程序進行第3次循環(huán),執(zhí)行case3這個分支,結(jié)果是“n=5,k=1”,打印出5;這時因為n=5不滿足n<5的循環(huán)條件,因此退出循環(huán),程序運行結(jié)束。24、以下選項中與if(a==1)a=b;elsea++;語句功能不同的switch語句是A、switch(a==1){case0:a=b;break;case1:a++;}B、switch(a){case1:a=b;break;default:a++;}C、switch(a){default:a++;break;case1:a=b;}D、switch(a==1){case1:a=b;break;case0:a++;}標準答案:A知識點解析:ifelse語句的含義是,如果變量a的值等于1,則把變量b的值賦給變量a,否則,變量a的值加1。在本題的4個選項中,與其含義不同的是選項A,表示如果變量a的值等于1,則把變量a的值加1,否則,把變量b的值賦給變量a。25、有以下程序#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("a=%d,b=%d\n",a,b);}程序運行后的輸出結(jié)果是A、a=1,b=1B、a=1,b=0C、a=2,b=1D、a=2,b=2標準答案:C知識點解析:本題考查的是用switch語句實現(xiàn)多分支選擇結(jié)構,首先進入第一個switch(x)判斷,進入case1中進行嵌套判斷,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接著執(zhí)行case2,a自加為2,b自加為1,遇到break,結(jié)束循環(huán),此時a=2,b=1。26、若以下選項中的變量a,b,y均已正確定義并賦值,則語法正確的switch語句是A、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a.b;break;}B、switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b;}C、switch(a+9){casea:y=a-b;caseb:y=a+b;}D、switcha*b{case10:y=a+b;default:y=a-b;}標準答案:A知識點解析:使用switch語句直接處理多個分支,其一般形式為:switch(表達式){case常量表達式1:語句1;break;case常量表達式n:語句n;break;default:語句n+1;break;}switch語句的執(zhí)行流程是:首先計算switch后面圓括號中表達式的值,然后用此值依次與各個case的常量表達式比較,若圓括號中表達式的值與某介case后面的常量表達式的值相等,就執(zhí)行此case后面的語句,執(zhí)行后遇break語句就退出switch語句:若圓括號中表達式的值與所有case后面的常量表達式都不等,則執(zhí)行default后面的語句n+1,然后退出switch語句。對于選項B,case語句和常量之間沒有空格,而選項C中的case后面為變量,選項D中switch后面沒給出圓括號。27、在嵌套使用if語句時,C語言規(guī)定else總是A、和之前與其具有相同縮進位置的if配對B、和之前與其最近的if配對C、和之前與其最近的且不帶else的if配對D、和之前的第一個if配對標準答案:C知識點解析:本題考查if語句,在C語言中,else總是和之前與其最近的且不帶else的if配對。28、以下程序段中,與語句:k=a>b?(b>c?1:0):0;功能相同的是A、if((a>b)‖(b>c))k=1;elsek=0;B、if(a<=b)k=0;elseif(b<=c)k=1;C、if((a>b)&&(b>c))k=1;elsek=0;D、iffa>b)k=1;elseif(b>c)k=1;elsek=0;標準答案:C知識點解析:題干中的表達式的功能是當a>b并且b>c時,變量k的值等于1,其余情況下,變量k的值都是等于0。29、關于“while(條件表達式)循環(huán)體”,以下敘述正確的是A、循環(huán)體的執(zhí)行次數(shù)總是比條件表達式的執(zhí)行次數(shù)多一次B、條件表達式的執(zhí)行次數(shù)與循環(huán)體的執(zhí)行次數(shù)一樣C、條件表達式的執(zhí)行次數(shù)總是比循環(huán)體的執(zhí)行次數(shù)多一次D、條件表達式的執(zhí)行次數(shù)與循環(huán)體的執(zhí)行次數(shù)無關標準答案:C知識點解析:while語句中表達式是循環(huán)條件,語句為循環(huán)體。while語句中當表達式計算的值為真(非0)時,執(zhí)行循環(huán)體語句。因此條件表達式執(zhí)行的次數(shù)總是比循環(huán)體多一次。30、有以下程序#includemain(){inty=10;while(y--);printf(“y=%d\n",y);}程序執(zhí)行后的輸出結(jié)果是A、y=0B、y=-1C、y=1D、while構成無限循環(huán)標準答案:B知識點解析:在while循環(huán)中每次變量y的值減1,直到其值等于0時退出循環(huán),這時y的再減1變?yōu)?1。31、有以下程序main(){intk=5;while(--k)printf("%d",k-=3);printf("\n");}執(zhí)行后的輸出結(jié)果是A、2B、4C、1D、死循環(huán)標準答案:C知識點解析:在程序語句中,k的初始值為5,進行第1次while循環(huán)后,k自減1為4,非0,執(zhí)行循環(huán)體里的printf語句。輸出1,此時k的值變?yōu)?。程序執(zhí)行第2次循環(huán)時,k自減1變?yōu)?,為假,退出while循環(huán)語句。所以程序的最后結(jié)果為1。32、有以下程序main(){inty=10;while(y--);printf("y=%d\n",y);}程序執(zhí)行后的輸出結(jié)果是A、v=0B、y=1C、y=-1D、while構成無限循環(huán)標準答案:C知識點解析:while循環(huán)語句的循環(huán)體為空語句,所以每一次循環(huán)程序什么都不做。當循環(huán)自變量y=0時,退出循環(huán)結(jié)束,變量y執(zhí)行自減運算,得-1,所以打印輸出變量y的值為-1。33、有以下程序#includevoidmain(){ints;scanf("%d",&s);while(s>0){switch(s){case1:printf("%d",s+5);case2:printf("%d",s+4);break;case3:printf("%d",s+3);default:printf("%d",s+1);break;}scanf("%d",&s);}}運行時,若輸入123450,則輸出結(jié)果是A、66656B、6566456C、66666D、6666656標準答案:B知識點解析:這道試題主要考查了switch和break語句,當變量s的值為1時,執(zhí)行case1、case2兩條語句,輸出65:當變量s的值為2時,執(zhí)行case2語句,輸出6:變量s的值為3時,執(zhí)行case3、default兩條語句,輸出64;變量s的值為4時,執(zhí)行default語句,輸入5;變量s的值為5時,執(zhí)行default語句,輸出6;變量s的值為0時,程序運行結(jié)束。34、有以下程序#includemain(){inta=7;while(a--);printf("%d\n",a);}程序運行后的輸出結(jié)果是A、0B、1C、-1D、7標準答案:C知識點解析:在while語句中,先判斷while后面的表達式是否為0,如果為0,則退出循環(huán),否則執(zhí)行循環(huán)體。在本題中,當變量a的值經(jīng)過幾次循環(huán)后,其值等于0時,退出while循環(huán)語句,變量a再執(zhí)行自減運算,所以其值等于-1。35、在以下給出的表達式中,與while(E)中的(E)不等價的表達式是A、(E>0‖E<0)B、(!E==0)C、(E!=0)D、(E==0)標準答案:A知識點解析:在while(E)中p,表達式E可以是C語言中任意合法的條件表達式,但不能為空,由它來控制循環(huán)體是否執(zhí)行。在選項A中表達式E>0‖E<0是一個邏輯表達式。國家二級C語言機試(C語言程序設計)模擬試卷第4套一、選擇題(本題共38題,每題1.0分,共38分。)1、算法的有窮性是指()。A、算法程序的運行時間是有限的B、算法程序所處理的數(shù)據(jù)量是有限的C、算法程序的長度是有限的D、算法在執(zhí)行過程中所需要的臨時工作單元數(shù)標準答案:A知識點解析:算法原則上能夠精確地運行,而且人們用紙筆做有限次運算后即可完成。有窮性是指算法程序的運行時間是有限的。2、一個棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棧的順序是()。A、12345ABCDEB、EDCBA54321C、ABCDE12345D、54321EDCBA標準答案:B知識點解析:棧是按照“先進后出”的原則組織數(shù)據(jù)的,入棧的順序為12345ABCDE,則出棧的順序應為其逆序,即EDCBA54321。3、下列關于線性鏈表的敘述中,正確的是()。A、各數(shù)據(jù)結(jié)點的存儲空間可以不連續(xù),但它們的存儲順序與邏輯順序必須一致B、各數(shù)據(jù)結(jié)點的存儲順序與邏輯順序可以不一致,但它們的存儲空間必須連續(xù)C、進行插入與刪除時,不需要移動表中的元素D、以上三種說法都不對標準答案:C知識點解析:一般來說,在線性表的鏈式存儲結(jié)構中,各數(shù)據(jù)結(jié)點的存儲序號是不連續(xù)的,并且各節(jié)點在存儲空間中的位置關系與邏輯關系也不一致。線性鏈表中數(shù)據(jù)的插入和刪除都不需要移動表中的元素,只需改變節(jié)點的指針域即可。故C選項正確。4、在長度為n的有序線性表中進行二分查找,最壞情況下需要比較的次數(shù)是()。A、O(n)B、O(n2)C、O(log2n)D、O(nlog2n)標準答案:C知識點解析:二分查找的最壞情況是不斷的二分直至無法再分時,仍然沒有查找成功。對于有序的線性表,二分查找法只需比較log2n次。5、假定已建立以下數(shù)據(jù)鏈表結(jié)構,且指針p和q已指向如下圖所示的結(jié)點:則以下選項中可將q所指結(jié)點從鏈表中刪除并釋放該結(jié)點的語句是()。A、(*)p.next=(*q).next;free(p)B、b=q—>next;free(q)C、p=q;free(q)D、p—>next=q—>next;free(q)標準答案:D知識點解析:要刪除結(jié)點q,應首先由q的上一個結(jié)點p的指針域指向q的指針域所指向的結(jié)點,即p—>next=q—>next;,然后才能釋放結(jié)點q,即free(q)。6、軟件開發(fā)中,需求分析階段可以使用的工具是()。A、N-S圖B、DFD圖C、PAD圖D、程序流程圖標準答案:B知識點解析:結(jié)構化分析方法是結(jié)構化程序設計理論在軟件需求解析階段的運用,數(shù)據(jù)流圖(DataFlowDiagram,DFD)是結(jié)構化分析常用的工具之一,數(shù)據(jù)字典、判定樹和判定表也是常用的結(jié)構化分析工具。程序流程圖、NS圖、PAD圖等圖形工具用于詳細設計的過程中。7、在面向方法中,不屬于“對象”基本特點的是()。A、一致性B、分類性C、多態(tài)性D、標識唯一性標準答案:A知識點解析:對象的基本特點有:①標識唯一性,是指對象是可區(qū)分的;②分類性,是指可將具有相同屬性和操作的對象抽象成類;③多態(tài)性,是指同一個操作可以是不同對象的行為;④封裝性,是指對象的內(nèi)部對外不可見,在外面不可直接使用對象的處理能力,也不能直接修改對象的內(nèi)部狀態(tài);⑤模塊獨立性,是指模塊內(nèi)部各部分及模塊間的關系的一種衡量標準,由內(nèi)聚和耦合來度量。8、數(shù)據(jù)流圖中帶有箭頭的線段表示的是()。A、控制流B、事件驅(qū)動C、模塊調(diào)用D、數(shù)據(jù)流標準答案:D知識點解析:數(shù)據(jù)流圖基本符號的含義:①矩形表示數(shù)據(jù)的外部實體;②圓角的矩形表示變換數(shù)據(jù)的處理邏輯;③“=”表示數(shù)據(jù)的存儲;④箭頭表示數(shù)據(jù)流。9、在數(shù)據(jù)管理技術發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。A、人工管理階段B、文件系統(tǒng)階段C、數(shù)據(jù)庫系統(tǒng)階段D、三個階段相同標準答案:C知識點解析:數(shù)據(jù)庫系統(tǒng)階段實現(xiàn)了數(shù)據(jù)共享,具有數(shù)據(jù)的集成性,這使得數(shù)據(jù)可被多個應用所共享,還可以極大地減少數(shù)據(jù)冗余性。A項,在人工管理階段,數(shù)據(jù)不保存,沒有對數(shù)據(jù)進行管理的軟件,數(shù)據(jù)不能共享;B項,文件系統(tǒng)階段是數(shù)據(jù)庫系統(tǒng)發(fā)展的初級階段,它提供了簡單的數(shù)據(jù)共享與數(shù)據(jù)管理能力,但是這種能力十分有限。從人工管理階段到文件系統(tǒng)階段再到數(shù)據(jù)庫系統(tǒng)階段,對數(shù)據(jù)共享的能力在不斷增強。10、一間宿舍可住多個學生,則實體宿舍和學生之間的聯(lián)系是()。A、一對一B、一對多C、多對一D、多對多標準答案:B知識點解析:實體間的聯(lián)系有如下情況:①一對一(1:1);②一對多(1:m);③多對多(m:n)。本題中,一間宿舍對應多個學生,那么宿舍和學生之間的聯(lián)系是一對多,學生和宿舍的聯(lián)系是多對一。11、有三個關系R、S和T如下:由關系R和S通過進行運算得到關系T,則所使用的運算為()。A、笛卡爾積B、交C、并D、自然連接標準答案:D知識點解析:交和并運算要求關系R和S具有相同的屬性,BC兩項錯誤。R與S的笛卡兒積是一個4元關系,有4個元素,A項錯誤。R與S有公共的屬性B,可通過公共屬性的相等值進行連接,這種連接稱之為自然連接。12、C源程序中不能表示的數(shù)制是()。A、二進制B、八進制C、十進制D、十六進制標準答案:A知識點解析:C語言中整型常量可以用十進制數(shù)、八進制數(shù)、十六進制數(shù)來表示。雖然計算機只能識別二進制數(shù),但二進制不能用來表示整型常量。13、以下敘述中錯誤的是()。A、用戶定義的函數(shù)中可以沒有return語句B、用戶定義的函數(shù)中可以有多個return語句,以便可以調(diào)用一次返回多個函數(shù)值C、用戶定義的函數(shù)中若沒有return語句,則應當定義函數(shù)為void類型D、函數(shù)的return語句中可以沒有表達式標準答案:B知識點解析:用戶定義的函數(shù)有兩種:①void函數(shù),可以沒有return語句,如果有return語句,也不可以返回任何表達式;②指定返回類型函數(shù),至少有一個返回語句。在一個函數(shù)內(nèi),可以根據(jù)需要在多處出現(xiàn)return語句,但無論有多少個return語句,return語句只會被執(zhí)行一次,然后退出函數(shù),并且只能返回一個函數(shù)值。14、以下選項中不能作為C語言合法常量的是()。A、’cd’B、0.1e+6C、aD、’\011’標準答案:A知識點解析:常量包括整型常量、實型常量、字符常量和字符串常量等。單引號表示字符常量,但不能包含字符串。表達字符串常量時需用雙引號。15、如有表達式(w)?(—x):(++y),則其中與w等價的表達式是()。A、w==1B、w==0C、w!=1D、w!=0標準答案:D知識點解析:?:表達式形式為<表達式1>?<表達式2>:<表達式3>。當表達式1的值為真,則結(jié)果為表達式2的值;當表達式1的值為假,則結(jié)果為表達式3的值。可見表達式w等價于w!=O。16、以下不能正確表示代數(shù)式的C語言表達是()。A、2*a*b/c/dB、a*b/c/d*2C、a/c/d*b*2D、2*a*b/c*d標準答案:D知識點解析:*與/優(yōu)先級相同,所以采用左結(jié)合的方式。D項若改為:2*a*b/(c*d),則正確。17、以下選項中正確的定義語句是()。A、doublea;b;B、doublea=b=7;C、doublea=7,b=7;D、double,a,b;標準答案:C知識點解析:同一類型變量的定義時,不同變量之間需要用“,"分隔;定義變量時初始化賦值時不能用等號連接;變量類型說明后面不能用逗號,而是用空格分離。18、若變量已正確定義為int型,要通過語句scanf("%d,%d,%d",&a,&b,&c);給a賦值1、給b賦值2、給c賦值3,以下輸入形式中錯誤的是(u代表一個空格)()。A、1,2,3<回車>B、1u2u3<回車>C、1,uu2,uu<回車>3<回車>D、uu1,2,3<回車>標準答案:B知識點解析:scanf函數(shù)要求除格式控制符以外的字符都要原樣輸入。逗號是非格式符,所以需要原樣輸入,否則就不能正確讀入數(shù)據(jù)。B項前兩個數(shù)據(jù)后面沒有緊跟一個逗號,格式不匹配,所以輸入形式錯誤。19、執(zhí)行以下程序段后,w的值為()。intw=’A’,x=14,y=15;w=((x|y)&&(w<’a’));A、—1B、NULLC、1D、0標準答案:C知識點解析:因為x=14,y=15都是非零整數(shù),因此x|y=1。又因為’A’+32=’a’,知w<’a’也為真,因此(x|y)&&(w<’a’)的值為1。20、有以下程序:#include<stdio.h>main(){chara=4:printf("%d\n",a=a<<1);}程序運行的結(jié)果是()。A、40B、16C、8D、4標準答案:C知識點解析:左移一位相當于原數(shù)乘以2,右移一位相當于除以2。a<<1結(jié)果為4*2=8,沒有超過char類型的范圍。21、有以下程序段:inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%db=%dc=%d",a,b,c);程序的輸出結(jié)果是()。A、a=10b=50c=10B、a=10b=50c=30C、a=10b=30c=10D、a=10b=30c=50標準答案:A知識點解析:因為a=10,b=50,所以a<b,if語句判斷條件不成立,于是執(zhí)行c=a,得到c=10,a和b的值不變。22、有以下程序:#include<stdio.h>main(){intx=1,y=2,z=3;if(x>y)if(y<z)printf("%d",++z);elseprintf("%d",++y);printf("%d\n",x++);}程序運行的結(jié)果是()。A、331B、41C、2D、1標準答案:D知識點解析:else子句總是與最前面最近的不帶else的if相結(jié)合,與書寫格式無關,所以本題中的else語句與第二個if語句配對,且if和else都在第一個if的控制范圍內(nèi)。首先判斷x>y不成立,直接退出第一個if語句,執(zhí)行printf("%d\n",x++)。(x++)的值是x加之前的值,所以輸出結(jié)果為1。23、有以下程序:#include<stdio.h>main(){inti=5:do{if(i%3==1)if(i%5==2){printf("*%d",i);break;}i++;}while(i!=0);printf("\n");}程序運行的結(jié)果是()。A、*7B、*3*5C、*5D、*2*6標準答案:A知識點解析:在dowhile循環(huán)中,總是先執(zhí)行后判斷,所以循環(huán)體至少會被執(zhí)行一次。在循環(huán)中,如果滿足(i%3=1)&&(i%5==2),那么輸出i的值,退出循環(huán),否則i++,如果i==0則跳出循環(huán)。24、有以下程序:#include<stdio.h>main(){inti,j;for(i=3;i>1;i——){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序運行的結(jié)果是()。A、234345B、43254345C、233423D、4534標準答案:D知識點解析:外層主循環(huán)i從3減到1執(zhí)行了3次(最后一次循環(huán)條件不成立,不執(zhí)行),嵌套的循環(huán)j從1增到2,每輪執(zhí)行2次。每次輸出i+j的值,就可以得到如D選項的輸出結(jié)果。每次換行發(fā)生在外循環(huán)完成一次循環(huán)之后。25、若有定義語句:chars[10]="1234567\0\0";,則strlen(s)的值是()。A、7B、8C、9D、10標準答案:A知識點解析:C語言規(guī)定以字符’\0’作為字符串結(jié)束的標識符。strlen函數(shù)返回的是字符串的長度,“1234567\0\0”與“1234567”等效,所以字符串長度是7。26、若有定義語句:intm[]={5,4,3,2,1},i=4;,則下面對m數(shù)組元素的引用中錯誤的是()。A、m[——i]B、m[2*2]C、m[m[0]]D、m[m[i]]標準答案:C知識點解析::數(shù)組的下標從零開始,數(shù)組m中有5個元素,所以數(shù)組m即為m[0]=5,m[1]=4,m[2]=3,m[3]=2,m[4]=1。C項,m[0]=5,引用數(shù)組元素為m[5],但是數(shù)組下標范圍是0~4,所以m[5]溢出,引用錯誤。27、有以下程序:#include<stdio.h>voidfun(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n—1—i];a[n一1一i]=t;}}main(){intk[10]={1,2,3,4,5,6,7,8,9,10},i;fun(k,5);for(i=2;i<8;i++)printf("%d",k[i]);printf("\n");}程序運行的結(jié)果是()。A、3456787B、876543C、1098765D、321678標準答案:D知識點解析:由于數(shù)組名本身是一個地址,所以在用數(shù)組名作為實參傳遞時,對應的形參相當于一個指針變量,在函數(shù)中可以通過指針變量來引用數(shù)組元素,從而改變元素的值。本題中函數(shù)fun的作用是將數(shù)組A的前n個元素進行逆轉(zhuǎn),fun(k,5)的結(jié)果是數(shù)組k的前五個元素1、2、3、4、5變?yōu)?、4、3、2、1。逆轉(zhuǎn)后,輸出數(shù)組中第3個至
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年地產(chǎn)項目土地儲備轉(zhuǎn)讓合同范本3篇
- 短期租賃場地租賃合同
- 人力資源招聘與培訓管理辦法
- 污水處理廠水塔施工合同
- 施工電梯大修拆卸合同
- 橄欖球場遮陽棚定制協(xié)議
- 服裝企業(yè)內(nèi)部招投標管理規(guī)定
- 乳制品銷售專員招聘協(xié)議
- 鄉(xiāng)鎮(zhèn)企業(yè)員工聘用協(xié)議書
- 2024年度鐵路貨物運輸合同范本6篇
- 中外鋼琴名作賞析智慧樹知到期末考試答案2024年
- 特種設備“日管控、周排查、月調(diào)度”表格
- 重點關愛學生幫扶活動記錄表
- 專業(yè)人才培養(yǎng)方案調(diào)研報告
- 2021年10月自考00850廣告設計基礎試題及答案含解析
- 探討提高呼吸內(nèi)科患者痰培養(yǎng)標本送檢率的護理措施
- 結(jié)構化面試表格
- 浙江省臺州市2023-2024學年高二上學期1月期末語文試題 Word版含解析
- 2023版:美國眼科學會青光眼治療指南(全文)
- 家長會課件:小學寒假家長會課件
- 變剛度單孔手術機器人系統(tǒng)設計方法及主從控制策略
評論
0/150
提交評論