




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
國家二級(C語言)機試模擬試卷8(共9套)(共344題)國家二級(C語言)機試模擬試卷第1套一、選擇題(本題共40題,每題1.0分,共40分。)1、以下敘述中錯誤的是()。A、用戶定義的函數(shù)中可以沒有return語句B、用戶定義的函數(shù)中可以有多個return語句,以便可以調(diào)用一次返回多個函數(shù)值C、用戶定義的函數(shù)中若沒有return語句,則應(yīng)當定義函數(shù)為void類型D、函數(shù)的return語句中可以沒有表達式標準答案:B知識點解析:用戶定義的函數(shù)有兩種:①void函數(shù),可以沒有return語句,如果有return語句,也不可以返回任何表達式;②指定返回類型函數(shù),至少有一個返回語句。在一個函數(shù)內(nèi),可以根據(jù)需要在多處出現(xiàn)return語句,但無論有多少個return語句,return語句只會被執(zhí)行一次,然后退出函數(shù),并且只能返回一個函數(shù)值。2、在數(shù)據(jù)庫設(shè)計中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()。A、需求分析階段B、概念設(shè)計階段C、邏輯設(shè)計階段D、物理設(shè)計階段標準答案:C知識點解析:邏輯結(jié)構(gòu)設(shè)計的任務(wù):概念結(jié)構(gòu)是各種數(shù)據(jù)模型的共同基礎(chǔ),為了能夠用某一DBMS實現(xiàn)用戶需求,還必須將概念結(jié)構(gòu)進一步轉(zhuǎn)化為相應(yīng)的數(shù)據(jù)模型,這正是數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計所要完成的任務(wù)。它包括從E-R圖向關(guān)系模式轉(zhuǎn)換和邏輯模式規(guī)范化及調(diào)整、實現(xiàn)。3、下面程序的輸出結(jié)果是()。#includemain(){chara[]={’a’,’b’,’c’,’d’,’f’,’g’},*p;p=a;printf(“%c\n”,*p+4);}A、aB、bC、eD、f標準答案:C知識點解析:“*”號的優(yōu)先級比“+”的優(yōu)先級高,所以先執(zhí)行“*p”;指針p指向的是數(shù)組的首地址,因此*p=a,再加4得‘e’。4、下列排序方法中,最壞情況下比較次數(shù)最少的是()。A、冒泡排序B、簡單選擇排序C、直接插人排序D、堆排序標準答案:D知識點解析:冒泡排序、簡單插入排序與簡單選擇排序法在最壞情況下均需要比較n(n-1)/2次,而堆排序在最壞情況下需要比較的次數(shù)是nlog2n。5、按照C語言規(guī)定的用戶標識符命名規(guī)則,不能出現(xiàn)在標識符中的是()。A、大寫字母B、下劃線C、數(shù)字字符D、連接符標準答案:D知識點解析:C語言中標識符由字母、下劃線、數(shù)字組成,且開頭必須是字母或下劃線。所以D選項中的連接符不合法。6、有以下程序,其中%u表示按無符號整數(shù)輸出()。main(){unsignedintx=0xFFFF;/*x的初值為十六進制數(shù)*/printf("%u\n",x);}程序運行后的輸出結(jié)果是()。A、-1B、65535C、32767D、0xFFFF標準答案:B知識點解析:因為%u表示按無符號整數(shù)輸出,而x用十六進制表示為0xFFFF,所以輸出無符號整數(shù)的最大值65535。7、運行下列程序時,若輸入數(shù)據(jù)為“321”,則輸出結(jié)果是()。main(){intnum,i,j,k,s;scanf("%d",&num);if(num>99)s=3;elseif(num>9)s=2;elses=l;i=num/100;j=(num—i*100)/10;k=(num—i*100—j*10);switch(s){case3:printf("%d%d%d\n",k,j,i);break;case2:printf("%d%d\n",k,j);casel:printf("%d\n",k);}}A、123B、1,2,3C、321D、3,2,1標準答案:A知識點解析:本題考查if…else語句和switch語句。scanf函數(shù)通過鍵盤讀入num的值。因為“num=321>99”,所以“s=3,i=3,j=2,k=1”。因為s=3,所以執(zhí)行case3.輸出k,j,i的值,然后通過break結(jié)束程序。8、有以下程序:#include<stdio.h>#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b:2;printf("%4.1f\n",S(a+b));}程序運行后的輸出結(jié)果是()。A、7.5B、31.5C、程序有錯無輸出結(jié)果D、14.0標準答案:C知識點解析:宏定義不是C語句,末尾不需要有分號。所以語句printf("%4.1f\n",s(a+b));展開后為printf("%4.1f\n",3.5;*a+b*a+b;);所以程序會出現(xiàn)語法錯誤。9、數(shù)據(jù)庫系統(tǒng)的三級模式不包括()。A、概念模式B、內(nèi)模式C、外模式D、數(shù)據(jù)模式標準答案:D知識點解析:數(shù)據(jù)庫系統(tǒng)的三級模式是概念模式、外模式和內(nèi)模式,所以選擇D。10、在關(guān)系中凡能惟一標識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個鍵,它們稱為該表的()。A、連接碼B、關(guān)系碼C、外碼D、候選碼標準答案:D知識點解析:在關(guān)系中凡能惟一標識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個鍵,它們稱為該表的候選碼或候選鍵。從二維表的所有候選鍵中選取一個作為用戶使用的鍵稱為主鍵或主碼。11、若有定義語句:intx=10;,則表達式x-=x+x的值為()。A、0B、-20C、-10D、10標準答案:C知識點解析:算術(shù)運算符+的優(yōu)先級高于-=,且-=的結(jié)合方向為自右向左,所以表達式x-=x+x可以表示成x=x-(x+x)=10-(10+10)=-10,選擇C。12、以下定義數(shù)組的語句中錯誤的是()。A、intnum[][3]={{1,2},3,4,5,6};B、intnum[2][4]={{1,2},{3,4},{5,6}};C、intnum[]={1,2,3,4,5,6};D、intnum[][4]={1,2,3,4,5,6};標準答案:B知識點解析:B選項中定義的數(shù)組為2行4列,而賦值時賦成了3行所以出錯。13、有以下程序:#include<stdio.h>voidfun1(char*p){char*q;q=p;while(*q!=’\0’){(*q)++;q++;}main(){chara[]={"Program"},*p;p=&a[3];fun1(p);printf("%s\n",a);}程序執(zhí)行后的輸出結(jié)果是()。A、PrphsbnB、ProhsbnC、ProgsbnD、Program標準答案:B知識點解析:(*q)++是q所指的字符加1,q++就是指針移到下一個字符。因此B選項正確。14、有以下程序:#include#include“string.h”voidfun(char*s[],intn){char*t;inti.d;for(i=0;istrlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;}}main(){char*ss[]={“bcc”,“bbcc”,“xy”,“aaaacc”,“aabcc”);fun(ss,5);printf(“%s,%s\n”,ss[0],ss[4]);}程序的運行結(jié)果是()。A、xy,aaaaccB、aaaacc,xyC、bcc,aabccD、aabcc,bcc標準答案:A知識點解析:從main函數(shù)入手,定義了一個一維數(shù)組并賦初值,接著調(diào)用函數(shù)fun(),函數(shù)的功能是:比較數(shù)組中各元素的長度,按元素長度從小到大的順序排列元素,所以執(zhí)行fun(SS,5)函數(shù)后,*ss[]={"xy","bcc","bbcc""aabcc""aaaacc"},所以調(diào)用printf函數(shù)輸出ss[0],ss[4]的值分別為xy,aaaacc。15、以下程序的輸出結(jié)果是()。#include<stdio.h>voidprt(int*x,int*y,int*z){printf(’’%d,%d,%d\n’’,++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&c);prt(&a,&b,&c);}A、11,42,3112,22,41B、11,41,2012,42,20C、11,21,4011,21,21D、11,41,2112,42,22標準答案:B知識點解析:本題考查的是函數(shù)參數(shù)的傳遞及自加運算符。主函數(shù)中第一次調(diào)用函數(shù)“prt(&a,&b,&C;”,此函數(shù)中的輸出語句“printf(’’%d,%d,‰\n’’,++*x,++*y,*(z++));”使得a和b的值均加1,而“*(z++)”由于先執(zhí)行“z++”所以c的值不變;第二次調(diào)用函數(shù)“pn(&a,&b,&c);”使得a和b在上一次的基礎(chǔ)上再各自加1(因為形參和實參進行的是地址傳遞),而c的值仍不變。16、對于循環(huán)隊列,下列敘述中正確的是()。A、隊頭指針是固定不變的B、隊頭指針一定大于隊尾指針C、隊頭指針一定小于隊尾指針D、隊頭指針可以大于隊尾指針,也可以小于隊尾指針標準答案:D知識點解析:循環(huán)隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進行變化。因為是循環(huán)利用的隊列結(jié)構(gòu)所以對頭指針有時可能大于隊尾指針有時也可能小于隊尾指針。17、若有代數(shù)式,(其中e僅代表自然對數(shù)的底數(shù),不是變量),則下列能夠正確表示該代數(shù)式的C語言表達式是()。A、sqrt(abs(n^x+e^x))B、sqrt(fabs(pow(n,x)+pow(x,e)))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é)果就是題干中表達式的值。18、設(shè)已有定義:floatx;則以下對指針變量p進行定義且賦初值的語句中正確的是()。A、float*p=&;x;B、int*p=(float)x;C、floatp=&;x;D、float*p=1024:標準答案:A知識點解析:考查指針變量的初始化。只能把對應(yīng)類型的變量的地址賦值給指針,選項B錯誤;定義指針時要加上“*”標明該變量為一個指針變量,選項C錯誤;不能把一個整數(shù)直接賦值給指針變量,選項D錯誤;所以答案選A。19、if語句的基本形式是:if(表達式)語句,以下關(guān)于“表達式”值的敘述中正確的是()。A、必須是邏輯值B、必須是整數(shù)值C、必須是正數(shù)D、可以是任意合法的數(shù)值標準答案:D知識點解析:if語句中的表達式可以是任意合法的數(shù)值,如常量、變量表達式。所以D選項正確。20、有以下程序:#includemain(){intk=5,n=0;do{switch(k){ease1:ease3:n+=1;k一一;break;default:n=0;k一一;case2:ease4:n+=2;k一一;break;}pfintf(“%d”,n);}while(k>0&&n<5);}程序運行后的輸出結(jié)果是()。A、02356B、0235C、235D、2356標準答案:C知識點解析:k的值為5,逐個對case語句進行匹配,均不匹配,執(zhí)行default下的語句n=0;k一一。再執(zhí)行case2:cased.:后面的語句n+=2;k一一;。執(zhí)行break語句跳出switch判斷,打印n的值,即2。經(jīng)過第一次循環(huán)后,k的值為3,然后進行k>0&&n<5條件判斷為真。第二次執(zhí)行循環(huán)體,執(zhí)行case3:后面的語句n+=1;k一一;。再執(zhí)行break語句跳出循環(huán),此時打印n的值3,此時k的值為2。第三次執(zhí)行循環(huán)體k的值為2,滿足條件,執(zhí)行case2:case4:后面的語句n+=2;k一一;執(zhí)行break語句跳出循環(huán)體,打印n的值5。此時n不滿足條件k>0&&n<5,所以結(jié)束循環(huán)。整個程序的打印結(jié)果為235。21、下列方法中,不屬于軟件調(diào)試方法的是()。A、回溯法B、強行排錯法C、集成測試法D、原因排除法標準答案:C知識點解析:軟件調(diào)試主要采用以下三種方法:強行排錯法:作為傳統(tǒng)的調(diào)試方法,其過程可概括為設(shè)置斷點、程序暫停、觀察程序狀態(tài)、繼續(xù)運行程序。回溯法:該方法適合于小規(guī)模程序的排錯、即一旦發(fā)現(xiàn)了錯誤,先分析錯誤征兆,確定最先發(fā)現(xiàn)“癥狀”的位置。原因排除法:原因排除法是通過演繹和歸納,以及二分法來實現(xiàn)。22、設(shè)有如下類型說明語句typedefstruet{intnum;struet{inty,m,d;}date;}PER;則以下定義結(jié)構(gòu)體數(shù)組并賦初值的語句中錯誤的是()。A、PERst[2]={{1001},2008,8,1,{1002},2006,5,20};B、PERst[2]={1001,{2008,8,1},1002,{2006,5,20}};C、PERst[2]={{1001,2008,8,1},{1002,2006,5,20}};D、PERst[2]={1001,2008,8,1,1002,2006,5,20};標準答案:A知識點解析:結(jié)構(gòu)體PER類型定義了兩個成員:num為整型,date為嵌套的結(jié)構(gòu)體類型,初始化時,成員值的順序必須與成員定義的順序相同,num必須是整數(shù),date必須是小括號括起來的嵌套的三個整數(shù),選項A中,{1001}和{1002}都不是整數(shù),所以選項A錯誤,本題答案為A。23、設(shè)R是一個2元關(guān)系,有3個元組,S是一個3元關(guān)系,有3個元組。如T=R×S,則T的元組的個數(shù)為()。A、6B、8C、9D、12標準答案:C知識點解析:R為n元關(guān)系,有p個元組S為m元關(guān)系,有q個元組。兩個關(guān)系笛卡兒積是一個n+m元的關(guān)系,元組個數(shù)是q×p。所以T的元組的個數(shù)為9個。24、以下程序的輸出結(jié)果是()。#include<stdio.h>main(){inta=8,b=6,m=1;switch(a%4){case0:m++;break;case1:m++:switch(b%3){default:m++;case0:m++:break;}}printf(’’%d\n’’,m);}A、1B、2C、3D、4標準答案:B知識點解析:本題考查switch語句。因為a=8,a%4=0,所以執(zhí)行case0后面的語句,將m加1,遇到break語句跳出switch。25、閱讀以下程序#includemain(){IntCase;floatprintF;printf("請輸入2個數(shù):");scanf("%d%f",&Case,&printF);printf("%d%f\n",Case,printF);}以下說法正確的是()。A、定義語句出錯,Case是關(guān)鍵字,不能用作用戶自定義標識符,printF不能用作用戶自定義標識符.B、定義語句出錯,Int無法被識別。C、定義語句無錯,scanf不能作為輸入函數(shù)使用D、定義語句無錯,printf不能輸出Case的值標準答案:B知識點解析:C語言是一種大小寫敏感的語言,因此Int應(yīng)為int,而CaseprintF則可以使用。26、下面不屬于需求分析階段任務(wù)的是()。A、確定軟件系統(tǒng)的功能需求B、確定軟件系統(tǒng)的性能需求C、需求規(guī)格說明書評審D、制定軟件集成測試計劃標準答案:D知識點解析:需求分析階段的工作有:需求獲?。恍枨蠓治?;編寫需求規(guī)格說明書;需求評審,所以選擇D。27、設(shè)文件指針fp已定義,執(zhí)行語句fp=fopen(“file”,“w”);后,以下針對文本文件file操作敘述的選項中正確的是()。A、只能寫不能讀B、寫操作結(jié)束后可以從頭開始讀C、可以在原有內(nèi)容后追加寫D、可以隨意讀和寫標準答案:A知識點解析:考查文件操作函數(shù)fopen的基礎(chǔ)知識,以”w”方式打開文件,只能寫不能讀。選項A正確。28、有以下程序#include<stdio.h>main(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--);continue;}printf("%d,",--x);}}程序的運行結(jié)果是A、7,4,2,B、8,7,5,2,C、9,7,6,4,D、8,5,4,2,標準答案:D知識點解析:coutinue的作用是跳出循環(huán)體中剩余的語句而進行下一次循環(huán),第一次循環(huán)x的值為8,循環(huán)體中if條件成立,打印x的值8后將x減1,再執(zhí)行continue語句,跳出本次循環(huán),第二次判斷循環(huán)條件時,x的值變?yōu)?,不滿足循環(huán)體內(nèi)if條件,執(zhí)行打印--x的操作,即打印5后跳出循環(huán),第三次判斷循環(huán)條件時x的值為4,滿足循環(huán)體中if條件,執(zhí)行打印x--的操作,即打印4,后將x值減一,執(zhí)行continue語句,跳出本次循環(huán),第四次判斷循環(huán)條件時x的為2,滿足循環(huán)體中if條件,打印x--,即打印2后將x減一,執(zhí)行continue語句,跳出本次循環(huán),在進行for條件表達式中第三個表達式x--的操作后x的值為0,不滿足條件結(jié)束循環(huán),所以打印結(jié)果為8,5,4,2,。29、有以下程序#includemain(){intk=5,n=0;while(k>0){switch(k){default:break;case1:n+=k;case2:case3:n+=k:}k--;}printf("%d\n",n);}程序運行后的輸出結(jié)果是A、0B、4C、6D、7標準答案:D知識點解析:因為沒有break語句,當k=2的時候,會順序執(zhí)行兩條語句,k=1的時候,會順序執(zhí)行3條語句。30、設(shè)循環(huán)隊列的存儲空間為Q(1:35),初始狀態(tài)為front=rear=35?,F(xiàn)經(jīng)過一系列入隊與退隊運算后,front=15,rear=15,則循環(huán)隊列中的元素個數(shù)為A、15B、16C、20D、0或35標準答案:D知識點解析:在循環(huán)隊列中,用隊尾指針rear指向隊列中的隊尾元素,用排頭指針front指向排頭元素的前一個位置。在循環(huán)隊列中進行出隊、入隊操作時,頭尾指針仍要加1,朝前移動。只不過當頭尾指針指向向量上界時,其加1操作的結(jié)果是指向向量的下界0。由于入隊時尾指針向前追趕頭指針,出隊時頭指針向前追趕尾指針,故隊空和隊滿時,頭尾指針均相等。答案為D選項。31、設(shè)有定義:doublex=5.16894;,則語句printf("%lf\n",(int)(x*1000+0.5)/1000.);的輸出結(jié)果是()。A、5.16900B、5.16800C、0.00000D、輸出格式說明符與輸出項不匹配,產(chǎn)生錯誤信息標準答案:A知識點解析:(x*1000+0.5)表示x移動3位小數(shù),加0.5,也就是小數(shù)第4位加5,若這位大于等于5,則進1到個位。因為“5.16894*10005168.94+0.55169.44”所以(int)(x*1000+0.5)強制轉(zhuǎn)換為整型結(jié)果為5169。(5169/1000.0)5.169,由于1000.0結(jié)果自動轉(zhuǎn)換為浮點數(shù)所以printf(“%lf\n”,5.169)結(jié)果是5.16900。故答案為A選項32、若有以下程序#include<stdio.h>main(){inta=0,b=0,c=0c=(a+=++b,b+=4);printf("%d,%d,%d\n",a,b,c);}則程序的輸出結(jié)果是A、1,5,1B、1,5,5C、-1,4,4D、-1,4,-1標準答案:B知識點解析:逗號運算符的結(jié)合性從左到右,因此逗號表達式將從左到右進行計算,且逗號運算符的優(yōu)先級最低,先計算a+=++b,結(jié)果a為1,b為1,然后計算b+=4,b的值為5,逗號表達式的值為其中最后一個表達式的值,所以將5賦給變量c,即a為1,b為5,c為5,所以選擇B。33、有以下程序:#include#defineM6#defineg(x)(x*M)main(){intm,n,k=1;m=g(k+1);n=g(2);printf(’’%d,%d\n’’,m,n);}程序運行后的輸出結(jié)果是()。A、7,12B、12,12C、7,11D、7,7標準答案:A知識點解析:宏定義一定要先代入再計算表達式的值,m=(k+1*6)=(1+6)=7;n=(2*6)=12。34、假如下列選項中的變量已正確定義并成功賦值,其中正確的表達式是()。A、int(22.1%2)B、n=y+m+5,++yC、x=y*3=x+kD、x=21%7.0標準答案:B知識點解析:求余運算符的左右兩個數(shù)字都必須是整數(shù),所以選項A和D錯誤,另外,進行整型強制轉(zhuǎn)化時正確的表達式是(int)x,而不是int(x);選項C中不能將x+k的值賦給y*3,所以選項C錯誤。選項B中涉及逗號運算符,它的級別最低,因此,選項B表達式的執(zhí)行過程是先將y+m+5的值賦給n,y值自加一次。35、設(shè)有某函數(shù)的說明為int*func(inta[10],intn);則下列敘述中,正確的是A、形參a對應(yīng)的實參只能是數(shù)組名B、說明中的a[10]寫成a[]或*a效果完全一樣C、func的函數(shù)體中不能對a進行移動指針(如a++)的操作D、只有指向10個整數(shù)內(nèi)存單元的指針,才能作為實參傳給a標準答案:B知識點解析:本題重點考察返回指針值的函數(shù)相關(guān)知識,返回指針值的函數(shù),一般定義形式為:類型名*函數(shù)名(參數(shù)列表)。func函數(shù)被定義為指針型函數(shù),它的形參inta[10]和intn,分別指一維數(shù)組a[0]和整型變量n。36、有以下程序#include<stdio.h>structS{inta;int*b;};main(){intx1[]={3,4},x2[]={6,7};structSx[]={1,x1,2,x2};printf("%d,%d\n",*x[0].b,*x[1].b);}程序的運行結(jié)果是A、1,2B、3,6C、4,7D、變量的地址值標準答案:A知識點解析:程序的執(zhí)行過程為:定義整型數(shù)組x1,x2并進行初始化,兩個數(shù)組長度均為2。定義結(jié)構(gòu)體數(shù)組x,并為其初始化,則x[0].a=1,x[0].b=x1,x[1].a=2,x[0].b=x2。輸出x[0]的成員指針b指向的內(nèi)存單元值,即數(shù)組x1的第一個元素3,輸出x[1]的成員指針b指向的內(nèi)存單元值,即數(shù)組x2的第一個元6。程序的運行結(jié)果是3,6,B選項正確。37、以下對C語言函數(shù)的敘述中正確的是A、調(diào)用函數(shù)時,只能把實參的值傳給形參,形參的值不能傳給實參B、函數(shù)既能嵌套定義,又能遞歸定義C、函數(shù)必須有返回值,否則不能使用D、程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個源程序中標準答案:A知識點解析:C語言不能嵌套定義函數(shù),能遞歸定義函數(shù),因此B選項錯誤;函數(shù)可以沒有返回值,沒有返回值的函數(shù)返回類型為void,C選項錯誤;程序有調(diào)用關(guān)系的所有函數(shù)可以不放在同一源程序中,D選項錯誤,答案為A選項。38、有以下程序#include<stdio.h>#include<string.h>main(){charstr[][20]={"One*World","One*Dream!"},*p=str[1];printf("%d,",strlen(p));printf("%s\n",p);}程序運行后的輸出結(jié)果是A、10,One*Dream!B、9,One*Dream!C、9,One*WorldD、10,One*World標準答案:A知識點解析:unsignedintstrlen(char*s);計算字符串s的(unsignedint型)長度,不包括’\0’在內(nèi);p指向數(shù)組的第二個元素,因此strlen(p)=10,并打印,故答案為A選項39、軟件生命周期是指A、軟件的定義和開發(fā)階段B、軟件的需求分析、設(shè)計與實現(xiàn)階段C、軟件的開發(fā)階段D、軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程標準答案:D知識點解析:通常把軟件產(chǎn)品從提出、實現(xiàn)、使用、維護到停止使用、退役的過程稱為軟件生命周期。選項A、B、C選項均為生命周期的一部分。故選D選項40、下列程序的運行結(jié)果是()。#include<stdio.h>voidfun(int*s,int*p){staticintt==3;*p=s[t];t--;}voidmain(){inta[]={2,3,4,5},k,x;for(k=0;k<,4;k++){fun(a,&x);printf("%d,",x);}}A、5,4,3,2,B、2,3,4,5,C、2,2,2,2,D、5,5,5,5,標準答案:A知識點解析:分析fun函數(shù)程序段,可知fun函數(shù)要實現(xiàn)的功能是將s中第(t+1)個元素以前的元素“逆置”賦給數(shù)組p。由于fun函數(shù)定義了靜態(tài)變量t=3,因此,在主函數(shù)中調(diào)用函數(shù)fun(a,&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)組x,最后輸出x數(shù)組。二、程序填空題(本題共1題,每題1.0分,共1分。)41、下列給定程序中,函數(shù)fun的功能是:將形參a所指數(shù)組中的前半部分元素中的值與后半部分元素中的值對換。形參n中存放數(shù)組中數(shù)據(jù)的個數(shù),若n為奇數(shù),則中間的元素不動。例如,若a所指數(shù)組中的數(shù)據(jù)為:1,2,3,4,5,6,7,8,9,則調(diào)換后為:6,7,8,9,5,1,2,3,4。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除.使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN9voidfun(inta[],intn){inti,t,P;/**********found***********/P=(n%2==0)?n/2:n/2+【1】;for(i=0;i<n/2;i++){t=a[i];/**********found***********/a[i]=a[P+【2】];/**********found***********/【3】=t,}}main(){intb[N]={1,2,3,4,5,6,7,8,9),i;printf(“\nTheoriginaldata:\n”);for(i=0,i<N;i++)printf(“%4d”,b[i]);printf(“\n”);fun(b,N),printf(“\nThedataaftermoving:\n”);for(i=0;i<N;i++)printf(“%4d”,b[i]),printf(“\n”);}標準答案:(1)1(2)i(3)a[p+i]或*(a+p+i)知識點解析:填空1:該處是判斷數(shù)組元索的個數(shù)足奇數(shù)還是偶數(shù),為奇數(shù)時要使當前位置加1,使p指向數(shù)組中間位置。填空2和填空3:這里是一個比較常見的數(shù)組位置調(diào)換程序,應(yīng)填入i和a[p+i]或*(a+p+i)。三、程序修改題(本題共1題,每題1.0分,共1分。)42、給定程序MODll.C中函數(shù)fhn的功能是:將m(1≤m≤10)個字符串連接起來,組成一個新串,放入pt所指存儲區(qū)中。例如:把3個串:“abc”,“CD”,“EF”連接起來,結(jié)果是“abcCDEF”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includevoidfun(charstr[][10],intm,char*pt){/**********found***********/Intk,q,i;for(k=0;k標準答案:(1)intk,q,i;(2)pt[i]=str[k][1i]j知識點解析:函數(shù)的功能是將m(1≤m≤10)個字符串連接起來。(1)第一標識下是整型變量k、q和i的定義,根據(jù)C語言中整型變量的定義方式,第一標識下應(yīng)為“intk,q,i;”。(2)第二個標識下的“pt[i]=str[k,i];”語句應(yīng)該將str中的字符依次拷貝到pt中,根據(jù)C語言中對二維數(shù)組每一位的取值,應(yīng)該是str[k][i],所以“pt[i]=str[k,i];”改為“pt[i]=str[k][i];四、程序設(shè)計題(本題共1題,每題1.0分,共1分。)43、程序定義了NxN的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(inta[][N]),函數(shù)的功能是:使數(shù)組左下三角元素中的值全部置成0。例如:a數(shù)組中的值為則返回主程序后a數(shù)組中的值應(yīng)為注意:部分源程序存在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#inc2ude#inc2ude#defineN5voidfun(inta[][N]){}NONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*rf,*wf;inti,j,a[5][5];rf=fopen(“in.dat”,“r”);wf=fopen(“out.dat”,“w”);for(i=0;i<5;i++)for(j=0;j<5;j++)fscanf(rf,“%d”,&a[i][j]);fun(a);for(i=0;i<5;i++){for(j=0;j<5;j++)fprintf(wf,“%4d”,a[i][j]);fprintf(wf,“\n”);}fclose(rf);fclose(wf);}main(){inta[N][N],i,j;printf("*****Thearray*****\n");for(i=0;i標準答案:inti,j;for(i=0;i知識點解析:程序功能是使數(shù)組左下半三角元素的值全部置成0。(1)對二維數(shù)組常用雙重循環(huán)結(jié)構(gòu)來處理:外層循環(huán)控制二維數(shù)組的行處理,內(nèi)層循環(huán)控制二維數(shù)組的列處理。(2)左下半三角元素的下標特點是列下標小于或等于行下標,即i<=i。(3)依次訪問二維數(shù)組,把符合以上條件的元素的值賦0。該題是對矩陣操作的考查。國家二級(C語言)機試模擬試卷第2套一、選擇題(本題共40題,每題1.0分,共40分。)1、對于一個正常運行的C程序,下列敘述中正確的是()。A、程序的執(zhí)行總是從main函數(shù)開始,在main函數(shù)結(jié)束B、程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束C、程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束D、程序的執(zhí)行總是從程序中的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束標準答案:A知識點解析:一個C語言源程序無論包括了多少函數(shù),總是從main函數(shù)開始執(zhí)行,從main函數(shù)結(jié)束。2、在一棵二叉樹上,第5層的結(jié)點數(shù)最多是()。A、8B、9C、15D、16標準答案:D知識點解析:根據(jù)二叉樹的性質(zhì):二叉樹第i(i≥1)層上至多有2i-1個結(jié)點。得到第5層的結(jié)點數(shù)最多是16個。3、設(shè)有定義:doublex=2.12;,則以下各項中不能完整輸出變量x值的語句是()。A、printf("x=%5.of\n",x);B、printf("x=%f\n",x);C、printf("x=%lf\n",x);D、printf("x=%O.5f\n",x);標準答案:A知識點解析:本題考查printf函數(shù)的格式輸出,“格式控制字符串”部分為“%f”表示按照浮點型輸出,選項B正確;加入長度格式符1即“%1”表示按照雙精度浮點型輸出,選項C正確;若要控制輸出精度,則需以“.”開頭,后跟十進制整數(shù),如“%.2f”或“%O.2f”,選項D正確;控制輸出寬度則是用整數(shù)表示,如“%5f”,選項A中“%5.Of’’表示輸出寬度為5,右對齊,小數(shù)點后保留位數(shù)為0,所以結(jié)果輸出為2,不能完整輸出x,答案選A。4、有以下程序:#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、321678B、876543C、1098765D、345678標準答案:A知識點解析:本題中的函數(shù)fun()的功能是將數(shù)組k中前5個元素倒序,所以返回后數(shù)組k中的元素排列是5,4,3,2,1,6,7,8,9,10。所以打印輸出k[2]到k[7]元素的值,即321678,所以選擇A。5、下列敘述中正確的是()。A、線性表鏈式存儲結(jié)構(gòu)的存儲空間一般要少于順序存儲結(jié)構(gòu)B、線性表鏈式存儲結(jié)構(gòu)與順序存儲結(jié)構(gòu)的存儲空間都是連續(xù)的C、線性表鏈式存儲結(jié)構(gòu)的存儲空間可以是連續(xù)的,也可以是不連續(xù)的D、以上說法均錯誤標準答案:C知識點解析:線性表的順序存儲結(jié)構(gòu)具備如下兩個基本特征:(1)線性表中的所有元素所占的存儲空間是連續(xù)的;(2)線性表中各數(shù)據(jù)元素在存儲空間中是按邏輯順序依次存放的。用一組任意的存儲單元來依次存放線性表的節(jié)點,這組存儲單元既可以是連續(xù)的,也可以是不連續(xù)的,甚至是零散分布在內(nèi)存中的任意位置上的。因此C選項正確。6、以下對聯(lián)合類型敘述正確的是()。A、可以對聯(lián)合變量名直接賦值B、使用聯(lián)合變量的目的是為了節(jié)省內(nèi)存C、任何一個聯(lián)合變量可以同時引用聯(lián)合中的不同成員D、聯(lián)合類型定義中不能同時出現(xiàn)結(jié)構(gòu)類型的成員標準答案:B知識點解析:山于聯(lián)合體是同一存儲區(qū)域山不同類型的變量共享,所以不可以直接對聯(lián)合體變量名進行賦值,且聯(lián)合體中的空間在某一時刻只能保持某一成員的數(shù)據(jù);另外合體中可以出現(xiàn)結(jié)構(gòu)類型的成員。7、己知函數(shù)的調(diào)用形式:fread(buffer,size,count,fp);其中buffer代表的是()。A、一個整型變量,代表要讀入的數(shù)據(jù)項總數(shù)B、一個文件指針,指向要讀的文件C、一個指針,是指向的輸入數(shù)據(jù)放在內(nèi)存中的起始位置D、一個存儲區(qū),存放要讀的數(shù)據(jù)項標準答案:C知識點解析:數(shù)據(jù)塊輸入/輸出函數(shù)的調(diào)用形式為:ffead(buffer,size,count,fp))。ffead函數(shù)參數(shù)說明:“buffer”是一個指針,對fread來說,它是讀入數(shù)據(jù)的存放地址;“size”是要讀寫的字節(jié)數(shù);“count”是要進行讀寫多少個size字節(jié)的數(shù)據(jù)項;“fp”是指文件型指針。8、在數(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è)備級上(如磁盤及磁盤操作)。9、有兩個關(guān)系R和T如下:則由關(guān)系R得到關(guān)系T的操作是()。A、選擇B、交C、投影D、并標準答案:C知識點解析:關(guān)系T是由關(guān)系R的第3、4行的元組組成的,很顯然這是對關(guān)系R進行選擇運算的結(jié)果??梢院唵卫斫鉃椋哼x擇運算是對行的操作,投影運算是對列的操作。選擇是從表中選出滿足給定條件的元組組成新表。故C選項正確。10、交換兩個變量的值,不允許用臨時變量,應(yīng)該使用下列()位運算符。A、&B、^C、‖D、~標準答案:B知識點解析:按邏輯位運算的特定作用主要有3點:①用按位與運算將特定位清0或保留特定位;②用按位或運算將特定的位置設(shè)置為1;③用按位異或運算將某個變量的特定位翻轉(zhuǎn)或交換兩個變量的值。11、有以下程序:#includemain(){intm=1,n=2,*P=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*P,*q);}程序運行后的輸出結(jié)果是()。A、1,2,1,2B、1,2,2,1C、2,1,2,1D、2,1,1,2標準答案:B知識點解析:程序中定義了兩個整型變量,然后用兩個指針分別指向這兩個整型變量,交換指針,那么原來指向第一個整數(shù)的指針將指向第二個整數(shù),原來指向第二個整數(shù)的指針將指向第一個整數(shù)。12、下面程序運行后的輸出結(jié)果是()。#inc1udemain(){inta[5]={1,0,4,2,0},b[5]={1,2,3,4,5},i,s=0;for(i=0;i<5;i++)s=s+b[a[i]];printf("%d\n",s);}A、12B、15C、11D、8標準答案:A知識點解析:這道題目是計算一維數(shù)組b中某些元素的和。這些元素的下標值是一維數(shù)組a中元素值。s=0+b[1]+b[0]+b[4]+b[2]+b[0]=2+1+5+3+1=12.13、以下敘述中錯誤的是()。A、gets函數(shù)用于從終端讀入字符串B、getchar函數(shù)用于從磁盤文件讀入字符C、fputs函數(shù)用于把字符串輸出到文件D、fwrite函數(shù)用于以二進制形式輸出數(shù)據(jù)到文件標準答案:B知識點解析:本題考查字符處理函數(shù)和文件操作函數(shù),屬于基礎(chǔ)知識,其中B選項getchar函數(shù)是用于從終端讀入一個字符。14、下列敘述中正確的是()。A、棧是一種先進先出的線性表B、隊列是一種后進先出的線性表C、棧與隊列都是非線性結(jié)構(gòu)D、以上三種說法都不對標準答案:D知識點解析:棧是一種先進后出的線性表,隊列是一種先進先出的線性表,棧與隊列都是線性結(jié)構(gòu)。15、一般情況下,當對關(guān)系R和S進行自然連接時,要求R和S含有一個或者多個共有的()。A、記錄B、行C、屬性D、元組標準答案:C知識點解析:進行自然連接時要求兩個關(guān)系具有相同列,即屬性。16、以下各項中,當x為大于1的奇數(shù)時,值為0的表達式是()。A、x%2==0B、x/2C、x%21=0D、x%2==1標準答案:A知識點解析:當x為大于1的奇數(shù)時,x%2==0表達式為0,所以答案為A。17、若有定義語句:char*s1="OK",*s2="ok";以下選項中,能夠輸出"OK"的語句是A、if(strcmp(s1,s2)!=0)puts(s2);B、if(strcmp(s1,s2)!=0)puts(s1);C、if(strcmp(s1,s2)==1)puts(s1);D、if(strcmp(s1,s2)==0)puts(s1);標準答案:B知識點解析:strcmp(s1,s2)是字符串比較函數(shù),比較規(guī)則是兩個字符串自左向右逐個字符相比(按照ASCII碼值大小),以第一個不相同的字符的大小作為比較結(jié)果。因為’OK’<’ok’,所以strcmp(s1,s2)為負值,只有B選項正確。18、有以下程序:#includeintfun(intx[],intf1){staticintsum=0,i;for(i=0;iA、55B、50C、45D、60標準答案:D知識點解析:內(nèi)部靜態(tài)變量是始終存在的,當函數(shù)被調(diào)用退出后,內(nèi)部靜態(tài)變量會保存數(shù)據(jù),再次調(diào)用該函數(shù)時,以前調(diào)用時的數(shù)值仍然保留著。fun(a,5)的值是15,再次調(diào)用后sum=15,所以fun(b,4)=45,s=45+15=60。因此D選項正確。19、若x=4,y=5,則x&y的結(jié)果是()。A、0B、4C、3D、5標準答案:B知識點解析:本題主要考查按位與運算的知識點。按位與是對兩個運算量相應(yīng)的位進行邏輯與,“&”的規(guī)則和邏輯與“&&”相同。x=4的二進制為00000100,v=5的二進制為00000101,x&y=00000100,轉(zhuǎn)化為十進制即為4。20、若有以下語句:typedefstructS{intg;charh;}T;以下敘述中正確的是()。A、可用s定義結(jié)構(gòu)體變量B、可用T定義結(jié)構(gòu)體變量C、S是struct類型的變量D、T是structS類型的變量標準答案:B知識點解析:本題考查typedef重新聲明一種結(jié)構(gòu)體類型,那么T為結(jié)構(gòu)體類型,而不是結(jié)構(gòu)體變量,所以B選項正確。21、以下關(guān)于C語言的敘述中正確的是()。A、預(yù)處理命令通常位于函數(shù)體外面,但也可以位于函數(shù)體中間B、C語言中的變量定義須在其他語句之前C、在C語言程序的書寫中,一個語句必須單占一行D、—個C語言源程序可以由一個或多個源文件組成,每個源文件可由自己的ma1n函數(shù)標準答案:A知識點解析:源程序中可以有預(yù)處理命令(inc1ude命令僅為其中的一種)。C語言中的變量可以在使用之前的任何位置進行定義。C語言程序的書寫中,多個語句可以位于一行,但為了增強可讀性,一般每行只有一條語句。一個C語言源程序可以由一個或多個源文件組成,但僅可以有一個main函數(shù)。22、若有以下程序:#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。23、有以下程序:#includemain(){intx;scanf(“%d“,&x);if(x<=0);elseif(x!=5)printf(“%d\n”,x);}程序運行時,輸入的值在哪個范圍才會有輸出結(jié)果()。A、不等于5的整數(shù)B、大于0且不等5的整數(shù)C、大于0或等于5的整數(shù)D、小于5的整數(shù)標準答案:B知識點解析:題目中,雖然else和第二個if不在同一行上,但等價于在同一行上,因此,程序的意思是當x大于0且不等于5時將其打印出來。24、下列程序的運行結(jié)果是()。#includevoidfun(int*S,int*P){staticintt=3;*p=s[t];t--;}voidmain(){inta[]={2,3,4,5),k,x;for(k=0;k<4;k++){fun(a,&x);printf(“%d,”,x);}}A、5,4,3,2,B、2,3,4,5,C、2,2,2,2,D、5,5,5,5,標準答案:A知識點解析:分析fun函數(shù)程序段,可知fun函數(shù)要實現(xiàn)的功能是將s中第(t+1)個元素以前的元素逆置賦給數(shù)組p。由于fun函數(shù)定義了靜態(tài)變量t=3,因此,在主函數(shù)中調(diào)用函數(shù)fun(a,&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)組x,最后輸出x數(shù)組。25、判斷字符串s1是否大于字符串s2,應(yīng)該使用()。A、if(strcmp(s1,s2)<0)B、if(s1>s2)C、if(strcmp(s2,s1)<0)D、if(strcmp(s1,s2))標準答案:C知識點解析:本題考查字符串比較函數(shù)strcmp(),調(diào)用形式:strcmp(str+1,str+2),其中str+1、str+2分別是字符串存儲區(qū)的首地址,函數(shù)功能:比較字符串str1和str2,當str1<str2時,返回值為負數(shù):當str1=str2時,返回0;當str1>str2,返回值為正數(shù)。注意:不能使用關(guān)系運算符比較兩個字符串的大小。26、有以下程序:#include<stdio.h>main(){inta=7;while(a--);printf("%d\n",a);}程序運行后的輸出結(jié)果是()。A、0B、-1C、1D、7標準答案:B知識點解析:a--的含義是先用后減1,所以當a的值為0時,跳出循環(huán),但是仍要執(zhí)行a--,a的值變?yōu)?1。27、有以下程序:#include<stdio.h>main(){charb,c;inti:b=’a’;c=’A’;for(i=0;i<6;i++){if(i%2)putchar(i+b);elseputchar(i+c);}printf("\n");}程序運行后的輸出結(jié)果是()。A、abcdefB、ABCDEFC、aBcDeFD、AbCdEf標準答案:D知識點解析:函數(shù)的含義是如果i的值能被2整除,以字符格式打印輸出i+c的值,如果i的值不能被2整除,打印i+b的值。第一次i值為0,執(zhí)行else語句打印字符‘A’,第二次i值為1,打印1+b的值即字符‘b’,第三次i值為2,打印字符‘C’,依此類推選擇D選項。28、下列敘述中正確的是A、程序執(zhí)行的效率與數(shù)據(jù)的存儲結(jié)構(gòu)密切相關(guān)B、程序執(zhí)行的效率只取決于程序的控制結(jié)構(gòu)C、程序執(zhí)行的效率只取決于所處理的數(shù)據(jù)量D、以上說法均錯誤標準答案:A知識點解析:程序執(zhí)行的效率與數(shù)據(jù)的存儲結(jié)構(gòu)、數(shù)據(jù)的邏輯結(jié)構(gòu)、程序的控制結(jié)構(gòu)、所處理的數(shù)據(jù)量等有關(guān)。29、結(jié)構(gòu)化程序設(shè)計的基本原則不包括()。A、多態(tài)性B、自頂向下C、模塊化D、逐步求精標準答案:A知識點解析:結(jié)構(gòu)化程序設(shè)計的思想包括:自頂向下、逐步求精、模塊化、限制使用goto語句,所以選擇A)。30、設(shè)有表示學生選課的三張表,學生S(學號,姓名,性別,年齡,身份證號),課程C(課號,課名),選課SC(學號,課號,成績),則表SC的關(guān)鍵字(鍵或碼)為()。A、課號,成績B、學號,成績C、學號,課號D、學號,姓名,成績標準答案:C知識點解析:學號是學生表S的主鍵,課號是課程表C的主鍵,所以選課表SC的關(guān)鍵字就應(yīng)該是與前兩個表能夠直接聯(lián)系且能唯一定義的學號和課號,所以選擇C)。31、若要打印出字符A,以下語句不正確的是()。(注:字符A的ASCⅡ碼值為65,字符a的ASCⅡ碼值為97)A、printf(’’%c\n’’,’a’一32);B、printf(’’%c\n’’,’B’—1);C、printf(’’%c\n’’,65);D、printf(’’%d\n’’,’A’);標準答案:D知識點解析:要打印出A,輸出格式應(yīng)該是%c,所以選項D錯誤;另外,字符是一種特殊的整型數(shù),對應(yīng)的是其ASCⅡ碼數(shù)值,所以選項A,B,C正確。32、有以下程序#include<stdio.h>voidfun(char**p){inti;for(i=0;i<4;i++)printf("%s",p[i]);}main(){char*s[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};fun(s);printf("\n");}程序運行后的輸出結(jié)果是A、ABCDEFGHIJKLB、ABCDC、AEIMD、ABCDEFGHIJKLMNOP標準答案:D知識點解析:本題考查字符串數(shù)組,s表示指向字符數(shù)組的指針,s指向了第一個字符串,s++指向了第二個字符串,所以最后輸出結(jié)果為D選項。33、一個學生可選多門課程,一門課程也可由多個學生來選。則學生和課程間的聯(lián)系是()。A、1:1聯(lián)系B、1:m聯(lián)系C、m:1聯(lián)系D、m:n聯(lián)系標準答案:D知識點解析:一個學生可選多門課程,一門課程也可由多個學生來選,所以他們之間是多對多的關(guān)系。34、有以下程序#include<stdio.h>intk=5;voidf(int*s){*s=k;}main(){intm=3,*p=&m;f(p);printf("%d,%d",m,*p);}程序的運行結(jié)果是A、5,5B、3,3C、3,5D、5,3標準答案:A知識點解析:本題程序執(zhí)行過程為:m=3,p指向m,調(diào)用函數(shù)f,將實參p中m的地址傳遞給形參s,s指向m,則k賦值給m,m=5,p依然指向m,故輸出5,5。A選項正確。35、有以下程序:#includemain(){inti=3,j=5,*p=&i,*q=&j,**r;r=&q;i++;(*q)++;printf(’’%d,%d,%d,%d,%d\n’’,i,j,*P,*q,**r);}執(zhí)行后的輸出結(jié)果是()。A、4,6,4,6,6B、5,3,5,3,5C、4,6,4,6,4D、4,6,4,4,6標準答案:A知識點解析:此題考查指針及指針的指針,(*q)是對其指向的地址空間的存儲值的引用,所以(*q)++等同于j++;同時,r指向的具體數(shù)值也會發(fā)生變化。36、有以下程序#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},k;fp=fopen("data.dat","w+");fprintf(fp,"%d\n",a[0]);for(i=1;i<6;i++){fseek(fp,0L,0);fscanf(fp,"%d",&k);fseek(fp,0L,0);fprintf(fp,"%d\n",a[i]+k);}rewind(fp);fscanf(fp,"%d",&k);fclose(fp);printf("%d\n",k);}程序的運行結(jié)果是A、21B、6C、123456D、11標準答案:A知識點解析:fopen函數(shù)以一定方式打開指定文件,返回一個指向文件的文件指針,如果不能實現(xiàn)打開指定文件的操作,則返回一個空指針NULL。fscanf函數(shù)從文本文件中按格式輸入。fprintf函數(shù)按照格式向文本文件中輸出數(shù)據(jù)。文件定位函數(shù)fseek,將指針由文件開頭0、當前位置1、末尾2移動指定字節(jié)。rewind函數(shù)功能使文件的位置指針返回到文件頭。程序執(zhí)行過程為:以讀/寫方式建立一個新的文本文件data.dat,將1寫入文件;執(zhí)行for循環(huán),將文件指針移到文件開頭,將文件第一個數(shù)值1賦給k,再將指針移動到開頭,向文件內(nèi)輸入a[i]+k=3。for循環(huán)實現(xiàn)將a數(shù)組中元素累加,結(jié)果21存放在文件中。調(diào)用rewind將文件指針移動到開頭,調(diào)用fscanf函數(shù)從文件中讀出數(shù)值賦予k=21,調(diào)用fclose函數(shù)關(guān)閉文件,打印k值,A選項正確。37、有以下程序#include<stdio.h>main(){charc;while((c=getchar())!=’\n’){switch(c-’2’){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);default:putchar(c+2);break;}}printf("\n");}程序運行后從第一列開始輸入以下數(shù)據(jù)2473<回車>程序的輸出結(jié)果是A、668977B、4444C、6677877D、68766標準答案:A知識點解析:本題執(zhí)行過程為:輸入c=’2’,c-’2’=0,首先匹配case0,依次輸出6,6,后執(zhí)行break語句,跳出分支結(jié)構(gòu);輸入c=’4’,c-’2’=2,匹配case2,輸出8,執(zhí)行break語句,跳出分支結(jié)構(gòu);輸入c=’7’,c-’2’=5,匹配default,輸出9,執(zhí)行break語句,跳出分支結(jié)構(gòu);輸入c=’3’,c-’2’=1,匹配case1,依次輸出7,7,執(zhí)行break語句,跳出分支結(jié)構(gòu)。輸入回車,結(jié)束循環(huán)。A選項正確。38、設(shè)循環(huán)隊列為Q(1:m),其初始狀態(tài)為front=rear=m。經(jīng)過一系列入隊與退隊運算后,front=15,rear=20?,F(xiàn)要在該循環(huán)隊列中尋找最大值的元素,最壞情況下需要比較的次數(shù)為A、4B、6C、m-5D、m-6標準答案:A知識點解析:循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu),用隊尾指針rear指向隊列中的隊尾元素,用排頭指針指向排頭元素的前一個位置,因此,從排頭指針front指向的后一個位置直到隊尾指針rear指向的位置之間所有的元素均為隊列中的元素,隊列初始狀態(tài)為front=rear=m,當front=15,rear=20時,隊列中有5個元素,比較次數(shù)為4次,A選項正確。39、有如下程序#include<stdio.h>intsum(inta,intb){returna+b-2;}main(){inti;for(i=0;i<5;i++)printf("%d",sum(i,3));printf("\n");}程序運行后的輸出結(jié)果是A、54321B、1234C、45678D、12345標準答案:D知識點解析:函數(shù)調(diào)用的一般形式為:函數(shù)名(實際參數(shù)表)對無參函數(shù)調(diào)用時,則無實際參數(shù)表。實際參數(shù)表中的參數(shù)可以是常數(shù)、變量或其它構(gòu)造類型數(shù)據(jù)及表達式。各實參之間用逗號分隔。函數(shù)sum在main函數(shù)之前,所以在main函數(shù)中不需要聲明。本題程序執(zhí)行過程為:在i=0,1,2,3,4時依次輸出sum(i,3),即調(diào)用sum函數(shù)后依次輸出1、2、3、4、5,D選項正確。40、以下敘述正確的是A、在C語言中分號是語句的組成部分B、C語言程序由C語句組成,可以省略main函數(shù)C、分號是C語句之間的分隔符D、所有程序行都必須用分號結(jié)束標準答案:A知識點解析:C語言C程序的入口函數(shù)是main(),因此C程序中有且只有一個main函數(shù),故選項B錯誤。分號是C語言一條語句的結(jié)束標志,不是分隔符,C語言分隔符是用來分隔多個變量、數(shù)據(jù)項、表達式等的符號,包括逗號、空白符、分號和冒號等等,選項C錯誤。C語言的程序不是以分號結(jié)束的,分號是C語言一條語句的結(jié)束標志,C語言是面向過程的,從main函數(shù)開始在main函數(shù)里結(jié)束,選項D錯誤。故答案為A選項。二、程序填空題(本題共1題,每題1.0分,共1分。)41、給定程序的功能是:調(diào)用函數(shù)fun將指定源文件中的內(nèi)容復(fù)制到指定的目標文件中,復(fù)制成功時函數(shù)返回值為1,失敗時返回值為0。在復(fù)制的過程中,把復(fù)制的內(nèi)容輸出到終端屏幕。主函數(shù)中源文件名放在變量sfname中,目標文件名放在變量tfname中。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includeintfun(char*source,char*target;)(FILE*fs,*ft;charch;/**********found**********/if((fs=fopen(source,______1______))==NULL)return0;if((ft=fopen(target,"w"))==NULL)return0;printf("\nThedatainfile:\n");ch=fgetc(fs);/**********found**********/while(!feof(______2______)){putchar(ch);/**********found**********/fputc(ch,______3______);ch=fgetc(fs);}fclose(fs);fclose(ft);printf("\n\n");return1;}main()(charsfname[20]="myfile1",tfname[20]="myfile2";FILE*myf;inti;chac;myf=fopen(sfname,"w");printf("\nTheoriginaldata:\n");for(i=1;i<30;i++){c=’A’+rand()%25;fprintf(myf,"%c",c);printf("%c",c);)fclose(myf);printf("\n\n");if(fun(sfname,tfname))printf("Succeed!");elseprintf("Fail!");}標準答案:(1)"r"(2)fs(3)ft知識點解析:第一空:將指定源文件中的內(nèi)容復(fù)制到指定的目標文件中,源文件只需讀,因此以只讀方式打開即可,故第一空處應(yīng)該是“if((fs=fopen(source,"r"))=NULL)”。第二空:“while(!feof(__2__))”循環(huán)的目的是不斷讀取源文件直至到達源文件的末尾,循環(huán)結(jié)束標志是已達到文件的末尾。用feof()函數(shù)來檢查是否已經(jīng)到了文件末尾,文件狀態(tài)檢測函數(shù)feof()的調(diào)用形式是:feof(fs),如果已經(jīng)到達文件尾函數(shù)返回非零值,否則返回0,故第二空處應(yīng)該是“while(!feof(fs))”。第三空:考察fputc函數(shù)的使用方法,fputc函數(shù)的調(diào)用形式是:fputc(ch,ft),ch是要輸出的字符,由“ch=fgetc(fs)”從源文件讀到字符ch,然后將ch寫到目標文件中,故第三空處應(yīng)該是“fputc(ch,ft);”。三、程序修改題(本題共1題,每題1.0分,共1分。)42、給定程序MODIl.C中函數(shù)fun的功能是:將長整型數(shù)s中每一位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當s中的數(shù)為:87653142時,t中的數(shù)為:8642。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includevoidfun(longs,long*t){intd;longs1=1;*t=0;while(s>0){d=s%10;/************found************/if(d%2=0){*t=d*s1+*t;s1*=10;}/************found************/s\=10;}}main(){longs,t;printf("\nPleaseenters:");scanf("%1d",&s);fun(s,&t);printf("Theresultis:%ld\n",t);}標準答案:(1)if(d%2==0)(2)s/=10;知識點解析:(1)第一個標識是判斷d是否是偶數(shù),即比較d%2是否等于0,在C語言中,“==”表示的是“等于”,而“=”是賦值,因此第一個標識下“if(d%2=0)”應(yīng)改為“if(d%2==0)”。(2)第二個標識下的“s\=10:”是對a的截取,這里的“\”本意應(yīng)該是除號,但這個在C語言中是不可識別的,所以第二個標識下“s\=10;”應(yīng)該改為“s/=10;”。四、程序設(shè)計題(本題共1題,每題1.0分,共1分。)43、函數(shù)fun的功能是:將a、b中的兩個兩位正整數(shù)合并形成一個新的整數(shù)放在C中。合并的方式是:將a中的十位和個位數(shù)依次放在變量c的千位和十位上,b中的十位和個位數(shù)依次放在變量c的個位和百位上。例如,當a=45,b=12。調(diào)用該函數(shù)后,c=4251。注意:部分源程序存在文件PROGl.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(inta,intb,long*c){}voidNONO(){/+本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d,%d",&a,&b);fun(a,b,&c);fprintf(wf,"a=%d,b=%d,c=%1d\n",a,b,c);}fclose(rf);fclose(wf);}msin(){inta,b;longc;voidNONO();printf(”Inputa,b:”);scanf(”%d%d”,&a,&b);fun(a,b,&c);printf("Theresultis:%1d\n",c);NONO();}標準答案:*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);知識點解析:(1)分解兩位數(shù)的正整數(shù)n的個位和十位數(shù),可用n%10和n/10實現(xiàn)。(2)設(shè)x0、x1、x2、x3為一位數(shù),則x0、x1×10、x2×100、x3×1000,可以分別使x0、x1、x2、x3構(gòu)成個、十、百、下帶權(quán)數(shù),而x0+x1×10+x2×100+x3×1000構(gòu)成四位數(shù)。本題最多只考慮四位數(shù)。國家二級(C語言)機試模擬試卷第3套一、選擇題(本題共40題,每題1.0分,共40分。)1、下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是()。A、循環(huán)隊列B、帶鏈隊列C、二叉樹D、帶鏈棧標準答案:C知識點解析:線性結(jié)構(gòu)的特點:①有且只有一個根結(jié)點;②每一個結(jié)點最多有一個前件,也最多有一個后件。不滿足線性結(jié)構(gòu)條件的稱為非線性結(jié)構(gòu),二叉樹的非葉子結(jié)點最多可以有兩個后件,屬于非線性結(jié)構(gòu)。2、算法的空間復(fù)雜度是指()。A、算法在執(zhí)行過程中所需要的計算機存儲空間B、算法所處理的數(shù)據(jù)量C、算法程序中的語句或指令條數(shù)D、算法在執(zhí)行過程中所需要的臨時工作單元數(shù)標準答案:A知識點解析:算法的空間復(fù)雜度是指算法在執(zhí)行過程中所需要的內(nèi)存空間,故本題答案為A選項。3、下列數(shù)據(jù)結(jié)構(gòu)中,能夠按照“先進后出”原則存取數(shù)據(jù)的是()。A、循環(huán)隊列B、棧C、隊列D、二叉樹標準答案:B知識點解析:棧是按“先進后出”的原則組織數(shù)據(jù)的;隊列是按“先進先出”的原則組織數(shù)據(jù)的,故本題答案為B選項。4、某二叉樹共有12個結(jié)點,其中葉子結(jié)點只有1個。則該二叉樹的深度為(根結(jié)點在第1層)()。A、3B、6C、8D、12標準答案:D知識點解析:二叉樹中,度為0的結(jié)點數(shù)等于度為2的結(jié)點數(shù)加1,即n2=n0-1,葉子結(jié)點即度為0,n0=1,則n2=0,總結(jié)點數(shù)為12=n0+n1+n2=1+n1+0,則度為1的結(jié)點數(shù)n1=11,所以深度為12,故D選項正確。5、下面不能作為結(jié)構(gòu)化方法軟件需求分析工具的是()。A、系統(tǒng)結(jié)構(gòu)圖B、數(shù)據(jù)字典(DD)C、數(shù)據(jù)流程圖(DFD圖)D、判定表標準答案:A知識點解析:結(jié)構(gòu)化方法軟件需求分析工具主要有數(shù)據(jù)流圖、數(shù)據(jù)字典、判定樹和判定表。6、下面不屬于軟件測試實施步驟的是()。A、集成測試B、回歸測試C、確認測試D、單元測試標準答案:B知識點解析:軟件測試主要包括單元測試、集成測試、確認測試和系統(tǒng)測試。7、下面描述中不屬于數(shù)據(jù)庫系統(tǒng)特點的是()。A、數(shù)據(jù)共享B、數(shù)據(jù)完整性C、數(shù)據(jù)冗余度高D、數(shù)據(jù)獨立性高標準答案:C知識點解析:數(shù)據(jù)庫系統(tǒng)的特點為高共享、低冗余、獨立性高、具有完整性等,故C選項錯誤。8、負責數(shù)據(jù)庫中查詢操作的數(shù)據(jù)庫語言是()。A、數(shù)據(jù)定義語言B、數(shù)據(jù)管理語言C、數(shù)據(jù)操縱語言D、數(shù)據(jù)控制語言標準答案:C知識點解析:數(shù)據(jù)定義語言負責數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建;數(shù)據(jù)操縱語言負責數(shù)據(jù)的操縱,包括查詢及增、刪、改等操作;數(shù)據(jù)控制語言負責數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復(fù)等功能。9、設(shè)數(shù)據(jù)元素的集合D={1,2,3,4,5},則滿足下列關(guān)系R的數(shù)據(jù)結(jié)構(gòu)中為線性結(jié)構(gòu)的是()。A、R={(1,2),(3,2),(5,1),(4,5)}B、R={(1,3),(4,1),(3,2),(5,4))C、R={(1,2),(2,4),(4,5),(2,3)}D、R={(1,3),(2,4),(3,5),(1,2)}標準答案:B知識點解析:關(guān)系R中的每個結(jié)點由兩個部分構(gòu)成,分別是數(shù)據(jù)域和指針域。B選項中可以看出,元素序列為5→4→1→3→2,
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧警察學院《財務(wù)會計分崗核算實驗》2023-2024學年第二學期期末試卷
- 2025全新版委托維修合同
- 班級交流平臺的建立計劃
- 2025網(wǎng)絡(luò)平臺開發(fā)與運維合同協(xié)議
- 提升倉庫人員工作積極性的計劃
- 2025企業(yè)租賃私人車輛合同模板
- 心靈成長的幼兒園小班班級工作計劃
- 幼兒園小班的課程設(shè)置計劃
- 2025建筑外墻涂料承包合同
- 物業(yè)裝修現(xiàn)場巡查培訓
- 國開電大2024秋《經(jīng)濟法學》形考任務(wù)1-4參考答案
- 2024年廣西壯族自治區(qū)中考地理試題含答案
- GB/T 3487-2024乘用車輪輞規(guī)格系列
- 五年級口算題卡每天100題帶答案
- 七律長征讀書分享 課件
- 自考00808商法押題及答案解析
- 語文教研專題講座講稿
- 2024年新物業(yè)管理技能及理論知識考試題與答案
- 2024年國考公務(wù)員行測真題及參考答案
- 2024年江西省高考化學試卷(真題+答案)
- DG-TJ 08-2407-2022 城市道路交通安全評價標準
評論
0/150
提交評論