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

下載本文檔

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

文檔簡介

國家二級(C語言)機試模擬試卷10(共9套)(共303題)國家二級(C語言)機試模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.C。在此程序中,函數(shù)fun的功能是:將a所指4×3矩陣中第k行的元素與第0行元素交換。例如,有下列矩陣:123456789101112若k為2,程序執(zhí)行結(jié)果為:789456123101112請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BIANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN3#defineM4/*********found*********/voidfun(int(*a)[N],int【1】){inti,temp;/*********found*********/for(i=0;i<【2】;i++){temp=a[0][i];/*********found*********/a[0][i]=【3】;a[k][i]=temp;}}main(){intx[M][N]={{1,2,3},{4,5,6},{7,8,9),{10,11,12)},i,j;printf("Thearraybeforemoving:\n\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%3d",x[i][j]);printf("\n\n");}fun(x,2);printf("Thearrayaftermoving:\n\n");for(i=0;i<M;i++){for(j=0;J<N;j++)printf("%3d",x[i][j]);printf("\n\n");}}標(biāo)準(zhǔn)答案:(1)k(2)N(3)a[k][i]知識點解析:填空1:變量k在函數(shù)體fun中已經(jīng)使用,但在函數(shù)體中沒有定義,肯定是在函數(shù)的形參中定義的,所以應(yīng)填k。填空2:數(shù)組共N列,所以應(yīng)填N。填空3:這部分語句實現(xiàn)的功能是變量值的交換,所以應(yīng)填a[k][i]。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCII碼值升序排序后輸出。例如,若輸入“edcba”,則應(yīng)輸出“abede”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODl1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<string.h>#include<Stdio.h>voidfun(chart[]){charc;inti,j;/*********found*********/for{i=strlen(t);i;i--)for(j=0;j<i;j++)/*********found*********/if(t[j]<t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}main(){chars[81];printf("\nPleaseenteracharacterstring:");gets(s);printf("\n\nBeforesorting:\n%s",s);fun(s);printf("\nAftersortingdecendingly:\n%s",s);}標(biāo)準(zhǔn)答案:(1)for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)(2)if(t[j]>t[j+1])知識點解析:(1)本題是利用選擇法對數(shù)組元素進(jìn)行比較排序。所謂選擇法,是依次用當(dāng)前取得的元素和其后面的元素進(jìn)行比較,在第一個元素和其后面的元素順次比較時,可以借助中間變量來對兩個數(shù)進(jìn)行交換,要保證第一個元素始終存放數(shù)組中的最大數(shù),以后依次挑選出次大數(shù),這樣最終的數(shù)組就是有序的。strlen函數(shù)所求得的字符串長度,數(shù)組最大下標(biāo)表示為字符串長度減1,所以要減1。(2)這里是一個分析邏輯錯誤,題中要求按升序排序,所以應(yīng)改為if(t[j]>t[j+1])。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫一個函數(shù)fun,它的功能是:將ss所指字符串中所有下標(biāo)為奇數(shù)位置的字母轉(zhuǎn)換為大寫(若該位置上不是字母,則不轉(zhuǎn)換)。例如,若輸入“abc4Efg”,則應(yīng)輸出“aBc4EFg”。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<Stdio.h>#include<string.h>#include<stdlib.h>voidfun(char*ss){}voidmain(){FILE*wf;chartt[81],s[81]="abc4Efg";system("CLS");printf("\nPleaseenteranstringwithin80characters:\n");gets(tt);printf("\n\nAfterchanging,thestring\n%s",tt);fun(tt);printf(“\nbecomes\n%s\n",tt);/*****************/wf=fopen("out.dat","w"),fun(s),fprintf(wf,"%s",s);fclose(wf);/*****************/}標(biāo)準(zhǔn)答案:voidfun(char*ss){inti;for(i=0,ss[i]!=’\0’;i++)/*將ss所指字符串中所有下標(biāo)為奇數(shù)位置的字母轉(zhuǎn)換為大寫*/if(i%2==1&&ss[i]>=’a’&&ss[i]<=’z’)ss[i]=ss[i]-32;}知識點解析:該題要求將給定字符串中奇數(shù)位置的字母轉(zhuǎn)換為大寫,需要先判斷奇數(shù)位置以及是否是小寫字母,如果是再通過其轉(zhuǎn)換方法進(jìn)行轉(zhuǎn)換。從C語言的學(xué)習(xí)中知道,只要將小寫字母減去32即轉(zhuǎn)成大寫字母,將大寫字母加上32即轉(zhuǎn)成小寫字母。本程序用if語句實現(xiàn)轉(zhuǎn)換功能。國家二級(C語言)機試模擬試卷第2套一、選擇題(本題共40題,每題1.0分,共40分。)1、在C語言中,只有在使用時才占用內(nèi)存單元的變量的是()。A、auto和registerB、extern和registerC、auto和staticD、static和register標(biāo)準(zhǔn)答案:A知識點解析:C語言中,動態(tài)存儲區(qū)域中存放的變量在使用時才分配內(nèi)存空間。auto變量的存儲單元是分配在內(nèi)存的動態(tài)存儲區(qū)中,每當(dāng)進(jìn)入函數(shù)體時自動分配存儲單元。register變量也是自動類變量。static說明的變量為靜態(tài)變量,靜態(tài)變量在內(nèi)存的靜態(tài)存儲中占據(jù)著永久的存儲單元,直至程序運行結(jié)束。extern說明的變量為外部變量,屬于全局變量,全局變量在整個程序運行期間都占用內(nèi)存空間。2、下列關(guān)于C語言文件的敘述中正確的是()。A、文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進(jìn)制文件B、文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件C、文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件D、文件由字符序列組成,其類型只能是文本文件標(biāo)準(zhǔn)答案:C知識點解析:C語言將文件看作是一個字符(字節(jié))的序列,即由一個一個字符(字節(jié))數(shù)據(jù)順序組成。根據(jù)數(shù)據(jù)的組成形式,可將文件分為兩種:①ASCII文件,又稱文本(text)文件,它的每一個字節(jié)可放一個ASCII碼,代表一個字符;②二進(jìn)制文件,是把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣輸出到磁盤上存放。所以C文件就是一個字節(jié)流或一個二進(jìn)制流。3、下列敘述中正確的是()。A、棧是一種先進(jìn)先出的線性表B、隊列是一種后進(jìn)先出的線性表C、棧與隊列都是非線性結(jié)構(gòu)D、以上三種說法都不對標(biāo)準(zhǔn)答案:D知識點解析:棧是一種先進(jìn)后出的線性表,隊列是一種先進(jìn)先出的線性表,棧與隊列都是線性結(jié)構(gòu)。4、以下關(guān)于C語言的敘述中正確的是()。A、預(yù)處理命令通常位于函數(shù)體外面,但也可以位于函數(shù)體中間B、C語言中的變量定義須在其他語句之前C、在C語言程序的書寫中,一個語句必須單占一行D、一個C語言源程序可以由一個或多個源文件組成,每個源文件可由自己的main函數(shù)標(biāo)準(zhǔn)答案:A知識點解析:源程序中可以有預(yù)處理命令(include命令僅為其中的一種)。C語言中的變量可以在使用之前的任何位置進(jìn)行定義。C語言程序的書寫中,多個語句可以位于一行,但為了增強可讀性,一般每行只有一條語句。一個C語言源程序可以由一個或多個源文件組成,但僅可以有一個main函數(shù)。5、有關(guān)return語句說法不正確的是()。A、系統(tǒng)默認(rèn)的返回值類型為整型,故當(dāng)函數(shù)的返回值為int型時,在函數(shù)定義時,返回值的類型說明可以省略。B、當(dāng)函數(shù)有返回值時,凡是允許表達(dá)式出現(xiàn)的地方,都可以調(diào)用該函數(shù)。C、當(dāng)函數(shù)沒有返回值時,函數(shù)的返回值類型可以說明為void型,它表示“無類型”或“空類型”。D、函數(shù)的返回值類型必須與return語句中的表達(dá)式值的類型一致,但C語言也允許不同;這時,系統(tǒng)以函數(shù)定義時的返回值類型說明為準(zhǔn),并自動地將return語句中表達(dá)式的值轉(zhuǎn)換為函數(shù)的返回值類型。標(biāo)準(zhǔn)答案:D知識點解析:函數(shù)的返回值類型一般與return語句中的表達(dá)式值的類型一致,但C語言也允許不同;這時,系統(tǒng)以函數(shù)定義時的返回值類型說明為準(zhǔn),并自動地將return語句中表達(dá)式的值轉(zhuǎn)換為函數(shù)的返回值類型。6、若有定義inta[5],*p=a;則正確引用數(shù)組元素的是()。A、*&a[5]B、*a+2C、*(p+5)D、*(a+2)標(biāo)準(zhǔn)答案:D知識點解析:本題考查通過指針引用數(shù)組元素。用指針引用數(shù)組有以下3種形式:①(p+n)與(a+n)表示數(shù)組元素a[n]的地址:②*(p+n)與*(a+n)表示數(shù)組元素a[n];③p[n]=*(p+n),都表示數(shù)組元素a[n]。選項A、B沒有這種引用形式;選項C,*(p+5)是引用數(shù)組的第6個元素,而數(shù)組一共有5個元素,出現(xiàn)越界;選項D,*(a+2)引用數(shù)組的第3個元素。7、若輸入’’abcdef’’、’’abdef’’,以下程序的輸出結(jié)果為()。#include<stdio.h>#include<string.h>main(){intn;chars1[201,s2[20],*p1,*p2;scanf(’’%s’’,s1);scanf(’’%s’’,s2);p1=s1;p2=s2;n=strcmp(p1,p2);printf(’’%d\n’’,n);}A、-B、0C、’’abcdef’’D、’’abdef’’標(biāo)準(zhǔn)答案:A知識點解析:本題考查兩個知識點:①字符串比較函數(shù)strcmp(s1,s2),若s1>s2,則返回1;若s1=s2,則返回0;若s1<s2,則返回-1。②字符串依次比較的是它們相同位置上字符的ASCII碼值。8、在數(shù)據(jù)處理中,其處理的最小單位是()。A、數(shù)據(jù)B、數(shù)據(jù)項C、數(shù)據(jù)結(jié)構(gòu)D、數(shù)據(jù)元素標(biāo)準(zhǔn)答案:B知識點解析:數(shù)據(jù)元素是由多個數(shù)據(jù)項組成,數(shù)據(jù)是能夠被計算機識別、存儲和加工處理的信息載體,數(shù)據(jù)處理的最小單位是數(shù)據(jù)項。9、軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應(yīng)用軟件的是()。A、編譯程序B、操作系統(tǒng)C、教務(wù)管理系統(tǒng)D、匯編程序標(biāo)準(zhǔn)答案:C知識點解析:編譯軟件、操作系統(tǒng)、匯編程序都屬于系統(tǒng)軟件,只有教務(wù)管理系統(tǒng)才是應(yīng)用軟件。10、設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是()。A、x=y+z+5,++yB)int(15.8%5)B、x=y*5=x+zC、x=25%5.0標(biāo)準(zhǔn)答案:A知識點解析:B與D選項中取模運算符%的左右兩個操作數(shù)均應(yīng)為整數(shù),所以B、D錯誤。C選項中不能將x+y的值賦給表達(dá)式y(tǒng)*5,所以C錯誤。11、有以下程序#include<stdio.h>voidmain(){inta=1,b=0;printf(’’%d,’’,b=(a++)+(a++));printf(’’%d\n’’,a+b);}程序運行后的輸出結(jié)果是()。A、4,6B、2,5C、3,5D、2,6標(biāo)準(zhǔn)答案:B知識點解析:在主函數(shù)中定義了兩個整型變量a和b,并把它們的初值分別設(shè)置為1和0;在第二條語句中,首先計算b=a+a,然后a自增兩次,因此第二句結(jié)束時,b=2,a=3,然后第三句,a+b=5。12、以下函數(shù)按每行8個輸出數(shù)組中的數(shù)據(jù):voidfun(int*w,intn){inti;for(i=0;i<n;i++){________printf("%d",w[i]);}printf("\n");}下畫線處應(yīng)填入的語句是()。A、if(i/8==0)printf("\n");B、if(i/8==0)continue;C、if(i%8==0)printf("\n");D、if(i%8==0)continue;標(biāo)準(zhǔn)答案:C知識點解析:每行輸出8個數(shù)組數(shù)據(jù),即輸出8個后就輸出一個換行,所以,應(yīng)該對8取余,當(dāng)結(jié)果為0時輸出換行符,即填入語句“if(i%8==0)printf("\n");”。13、若有chars[3][3]={"AAA","BBB","CCC"};說明語句,則與它等價的語句是()。A、char**s={"AAA","BBB","CCC"};B、char*s[31={"AAA","BBB","CCC"};C、chars[][5]:{"AAA","BBB","CCC"};D、chars[][3]={"AAA","BBB","CCC"};標(biāo)準(zhǔn)答案:D知識點解析:二維字符數(shù)組在定義時可省略第一維的維數(shù),根據(jù)初始化有3個字符串,所以選項D)中數(shù)組有3行,與已知說明語句等價。14、在數(shù)據(jù)管理技術(shù)發(fā)展的三個階段中,數(shù)據(jù)共享最好的是()。A、人工管理階段B、文件系統(tǒng)階段C、數(shù)據(jù)庫系統(tǒng)階段D、三個階段相同標(biāo)準(zhǔn)答案:C知識點解析:數(shù)據(jù)庫系統(tǒng)階段實現(xiàn)了數(shù)據(jù)共享,具有數(shù)據(jù)的集成性,這使得數(shù)據(jù)可被多個應(yīng)用所共享,還可以極大地減少數(shù)據(jù)冗余性。A項,在人工管理階段,數(shù)據(jù)不保存,沒有對數(shù)據(jù)進(jìn)行管理的軟件,數(shù)據(jù)不能共享;B項,文件系統(tǒng)階段是數(shù)據(jù)庫系統(tǒng)發(fā)展的初級階段,它提供了簡單的數(shù)據(jù)共享與數(shù)據(jù)管理能力,但是這種能力十分有限。從人工管理階段到文件系統(tǒng)階段再到數(shù)據(jù)庫系統(tǒng)階段,對數(shù)據(jù)共享的能力在不斷增強。15、有如下程序段:intx=12:doubley=3.141593;printf("%d%8.6f",x,y);其輸出結(jié)果是()。A、123.141593B、123.141593C、12,3.141593D、123.1415930標(biāo)準(zhǔn)答案:A知識點解析:printf函數(shù)中格式字符“%8.6”的含義是:變量y的輸出寬度為8(包括小數(shù)點),小數(shù)點后面保留6位小數(shù),且右對齊。所以選擇A。16、關(guān)于字符常量,以下敘述正確的是()。A、空格不是一個字符常量B、字符常量能包含大于一個的字符C、單引號中的大寫字母和小寫字母代表的是相同的字符常量D、所有的字符常量都可以作為整型量來處理標(biāo)準(zhǔn)答案:D知識點解析:本題考查字符常量的4個知識點:①空格是一個字符常量,而且單引號中的空格不可以省略;②字符常量只能包含一個字符;③單引號中的大寫字母和小寫字母代表的是不相同的字符常量;④所有的字符常量都作為整型量來處理,在計算機內(nèi)部,其對應(yīng)的整數(shù)值就是ASCII碼值。17、若a是數(shù)值類型,則邏輯表達(dá)式(a==1)||(a!=1)的值是A、1B、0C、2D、不知道a的值,不能確定標(biāo)準(zhǔn)答案:A知識點解析:邏輯或"||"要求只要兩邊的運算對象有一個非零,結(jié)果就為真,雖然不知道a的值,但是若a為1,則左邊運算對象為1,若a的值不是1,則右邊運算對象的值為1,所以總能保證一邊非零,所以結(jié)果為真,即1。18、若有以下定義:intx[10],*pt=x;則對x數(shù)組元素的正確引用是()。A、pt+3B、*&x[10]C、*(pt+10)D、*(x+3)標(biāo)準(zhǔn)答案:D知識點解析:沒有A選項的引用形式。*與&放在一起作用抵消,所以B選項錯誤,最大只能引用到x[9]。*(pt+i)表示引用指針pt所指元素后的第i個元素,所以c選項錯誤,最大只能為*(pt+9)。因此D選項正確。19、有以下程序#include<stdio.h>main(){FILE*pf;char*s1="China",*s2="Beijing";pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指針回到文件開頭*/fwrite(s1,5,1,pf);fclose(pf);}以上程序執(zhí)行后abc.dat文件的內(nèi)容是A、ChinaB、ChinangC、ChinaBeijingD、BeijingChina標(biāo)準(zhǔn)答案:B知識點解析:本題考查文件操作函數(shù),fwrite和rewind函數(shù),題目中先是將s2字符串寫入adc.dat中,然后將寫指針回到文件開頭,然后寫入s1字符串,那么s1字符串就將前五個字符覆蓋,所以最終結(jié)果為Chinang,選項B正確。20、設(shè)有一聯(lián)合體變量定義如下:uniondata{longa;floatb:intc:chard:};uniondatax:執(zhí)行下列語句后,正確的聯(lián)合體變量x的值是()。x.a(chǎn)=111111,x.b=2222;x.c=2.1546;x.d=’R’;A、111111B、2222C、2.1546D、R標(biāo)準(zhǔn)答案:D知識點解析:本題主要考查的知識點是聯(lián)合體的內(nèi)存使用。聯(lián)合體與結(jié)構(gòu)體的定義相同,其本質(zhì)區(qū)別就在于內(nèi)存使用方式的不同。聯(lián)合體所占用的內(nèi)存空間為最長的成員所占用的空間,各個成員分量全部是從低地址方向開始使用內(nèi)存單元;聯(lián)合體中的空間在某一時刻只能保持某一個成員的數(shù)據(jù),所以本題執(zhí)行完一系列賦值后,只得到最后執(zhí)行的字符’R’。21、以下選項中可用做C程序合法實數(shù)的是()。A、3.0e0.2B、.1e0C、E9D、9.12E標(biāo)準(zhǔn)答案:B知識點解析:A選項中e后面的指數(shù)必須為整數(shù),所以錯誤C語言規(guī)定,F(xiàn)之前必須要有數(shù)字,所以C選項錯誤E后面必須要有數(shù)字,且必須為整數(shù),所以D選項錯誤。22、下面關(guān)于數(shù)據(jù)庫三級模式結(jié)構(gòu)的敘述中,正確的是()。A、內(nèi)模式可以有多個,外模式和模式只有一個B、外模式可以有多個,內(nèi)模式和模式只有一個C、內(nèi)模式只有一個,模式和外模式可以有多個D、模式只有一個,外模式和內(nèi)模式可以有多個標(biāo)準(zhǔn)答案:B知識點解析:數(shù)據(jù)庫的三級模式結(jié)構(gòu)是指數(shù)據(jù)庫系統(tǒng)的外模式、模式和內(nèi)模式。一個數(shù)據(jù)庫可以有多個外模式,但只有一個模式和一個內(nèi)模式。23、下列選項中屬于面向?qū)ο笤O(shè)計方法主要特征的是()。A、繼承B、自頂向下C、模塊化D、逐步求精標(biāo)準(zhǔn)答案:A知識點解析:面向?qū)ο蠡痉椒ǖ幕靖拍钣袑ο?、類和實例、消息、繼承與多態(tài)性,所以選擇A、24、若有以下程序:#includevoidfun(inta[],intn){intt,i,j;for(i=1;ia[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){inte[10]:{10,9,8,7,6,5,4,3,2,1},i;fun(c,10);for(i=0;i<10;i++)printf("%d,",e[i]);printf("\n");}則程序的輸出結(jié)果是()。A、1,10,3,8,5,6,7,4,9,2,B、10,9,8,7,6,5,4,3,2,1,C、2,9,4,7,6,5,8,3,10,1,D、10,1,8,3,6,5,4,7,2,9,標(biāo)準(zhǔn)答案:D知識點解析:本題主要考查for的嵌套循環(huán)。該題首先對一維數(shù)組進(jìn)行初始化,c[0]到c[9]依次賦值為10到1;fun(c,10);語句調(diào)用fun函數(shù),fun函數(shù)的功能是將一維數(shù)組偶數(shù)位元素的數(shù)值由小到大排序;最后將排好序的新的一維數(shù)組進(jìn)行輸出。因此D選項正確。25、有以下程序:#include#definef(X)x*x*xmain(){inta=3,s,t;s=f(a+1);t=f((a+1));printf(“%d,%d\n”,s,t);}程序運行后的輸出結(jié)果是()。A、10,64B、10,10C、64,10D、64,64標(biāo)準(zhǔn)答案:A知識點解析:本題考查宏定義的用法,宏定義只是做個簡單的替換,所以本題中執(zhí)行f(a+1)=a+1*a+1*a+1=3*a+1=10,f((a+1))=(a+1)*(a+1)*(a+1)=64,所以答案為A選項。26、設(shè)文件指針fp已定義,執(zhí)行語句fp=fopen("file","w");后,以下針對文本文件file操作敘述的選項中正確的是()。A、只能寫不能讀B、寫操作結(jié)束后可以從頭開始讀C、可以在原有內(nèi)容后追加寫D、可以隨意讀和寫標(biāo)準(zhǔn)答案:A知識點解析:考查文件操作函數(shù)fopen的基礎(chǔ)知識,以"w"方式打開文件,只能寫不能讀。選項A正確。27、以下程序段中的變量已正確定義for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");該程序段的輸出結(jié)果是()。A、*B、****C、**D、********標(biāo)準(zhǔn)答案:A知識點解析:暫無解析28、下列敘述中正確的是()。A、在C程序的函數(shù)中不能定義另一個函數(shù)B、在C程序中main函數(shù)的位置是固定的C、C程序中所有函數(shù)之間都可以相互調(diào)用D、每個C程序文件中都必須要有一個main函數(shù)標(biāo)準(zhǔn)答案:A知識點解析:暫無解析29、程序測試的主要目的是()。A、設(shè)計測試程序B、驗證程序的正確性C、發(fā)現(xiàn)程序中的錯誤D、改正程序中的錯誤標(biāo)準(zhǔn)答案:D知識點解析:程序測試的主要目的是改正程序中的錯誤。30、若有說明intm[3][4]={3,9,7,8.5),(*q)[4];和賦值語句q=m;,則對數(shù)組元素m[i][j](其中0<=i<3,0<-j<4)值的正確引用為()。A、(q+i)[j]B、*q[i][1]C、*(*q[i]+j)D、*(*(q+i)+j)標(biāo)準(zhǔn)答案:D知識點解析:*q+i)指向第i行首地址,*(*(q+i)+j)代表第i行第j個元素。31、有以下程序:voidss(char*s,chart){while(*S){if(*s=t)*s=t-’a’+’A’;S++:}}main(){charstrl[100]=’’ABCddfefdbd’’,c=’d’;ss(strl,c);printf(’’%s\n’’,strl);}程序運行后的輸出結(jié)果是()。A、ABCDDEFEDBDB、ABCDDfefDbDC、ABCAAfefAbAD、ABCdd~fdbd標(biāo)準(zhǔn)答案:B知識點解析:函數(shù)ss(char*s,chart)的功能是將指針s所指向的字符串中存在的字符”t”均改寫成大寫字*;所以main函數(shù)中引用函數(shù)ss后使得數(shù)組strl中的小寫字*”d”均變成了大寫字*”D”,然后輸出數(shù)組strl,結(jié)果為:ABCDDflefDbD。32、下列二維數(shù)組初始化語句中,正確且與語句inta[][3]={1,2,3,4,5}等價的是()。A、inta[2][]={{1,2,3},{4,5}};B、inta[][3]={1,2,3,4,5,0};C、inta[][3]={{1,0},{2,0},{3,0}};D、inta[2][]={{1,2,3},{4,5,6)};標(biāo)準(zhǔn)答案:B知識點解析:此題考查的是二維數(shù)組的初始化。題干中數(shù)組a的第二個下標(biāo)為3,由此可知數(shù)組a是一個2行3列的數(shù)組,初始化時未賦初值的元素的值自動為0,所以與選項B是等價的,最后一個元素的值為0。33、下列隊列的描述中,正確的是()。A、隊列屬于非線性表B、隊列在隊尾刪除數(shù)據(jù)C、隊列按“先進(jìn)后出”進(jìn)行數(shù)據(jù)操作D、隊列按“先進(jìn)先出”進(jìn)行數(shù)據(jù)操作標(biāo)準(zhǔn)答案:D知識點解析:隊列是只允許在一端刪除,在另一端插入的順序表,允許刪除的一端叫做隊頭,允許插入的一端叫做隊尾。隊列的操作數(shù)是依據(jù)先進(jìn)先出的原則進(jìn)行的。因此隊列亦稱作先進(jìn)先出的線性表,或后進(jìn)后出的線性表。34、C語言源程序名的后綴是()。A、.exeB、.CC、.objD、.cp標(biāo)準(zhǔn)答案:B知識點解析:由C語言構(gòu)成的指令序列稱為C源程序,源程序文件的后綴為“.c”。源程序經(jīng)過C編譯程序編譯生成后綴為“.obj”的二進(jìn)制文件(稱為目標(biāo)文件),然后由稱為“連接程序”(Link)的軟件把目標(biāo)文件與C語言提供的各種庫函數(shù)連接起求,生成后綴為“.exe”的可執(zhí)行文件。35、定義結(jié)構(gòu)體數(shù)組structstu{intnum;charname[20];}x[5]={1,"ZHAO",2,"QIAN",3,"SUN",4,"LEE",5,"ZHOU");for(i=1;i<5;i++)printf("%d%c",x[i].num,x[i].name[2]);程序執(zhí)行后的輸出結(jié)果是()。A、2A3N4E50B、1H213U4EC、1A2N3E40D、1A2N3E40標(biāo)準(zhǔn)答案:A知識點解析:本題主要考查結(jié)構(gòu)體數(shù)組。x[i]Inum是結(jié)構(gòu)體x[i]中的num成員,x[i]-name[2]是結(jié)構(gòu)體x[i]中name成員的第3個元素。第一次循環(huán),i=1,輸出x[1].num,x[1].name[2]的值,即2A;第二次循環(huán),i=2,輸出x[2].num,x[2].name[2]的值,即3N;第三次循環(huán),i=3,輸出x[3].num,x[3].name[2]的值,即4E;第四次循環(huán),i=4,輸出x[4].num,x[4].name[2]的值,即50。36、有C語言表達(dá)式2*3+4+15%3,關(guān)于其執(zhí)行順序,以下敘述正確的是A、先執(zhí)行2*3得6,再執(zhí)行6+4得10,再執(zhí)行15%3得0,最后執(zhí)行10+0得10B、先執(zhí)行2*3得6,再執(zhí)行15%3得5,最后執(zhí)行6+4+5得15C、先執(zhí)行15%3得0,再執(zhí)行2*3得6,最后執(zhí)行6+4+0得10D、先執(zhí)行15%3得3,再執(zhí)行4+3得7,再執(zhí)行2*3得6,最后執(zhí)行6+7得13標(biāo)準(zhǔn)答案:A知識點解析:首先運算符"*"和運算符"%"有相同優(yōu)先級,并且優(yōu)先級都高于運算符’+’,再根據(jù)運算結(jié)合性,乘法和取余運算都滿足從左到右的運算規(guī)則,C,D選項錯誤;因為15%3=0,排除B選項,答案為A選項。37、有以下程序#include<stdio.h>intk=5;voidf(int*s){s=&k;*s=k;}main(){intm=3;f(&m);printf("%d,%d\n",m,k);}程序運行后的輸出結(jié)果是A、3,3B、5,5C、3,5D、5,3標(biāo)準(zhǔn)答案:C知識點解析:函數(shù)f()的功能是:定義一個臨時的整型指針變量s,指向全局變量k,然后用k的值對s指向的內(nèi)存地址進(jìn)行賦值,結(jié)果當(dāng)然是k的值不變;另外在調(diào)用函數(shù)f()過程中,雖然使用m的地址初始化s,但是s在f函數(shù)內(nèi)部又被指向k的地址,所以s的后續(xù)操作對m沒有任何影響,因此最后輸出為3,5,答案為C選項。38、深度為7的完全二叉樹中共有125個結(jié)點,則該完全二叉樹中的葉子結(jié)點數(shù)為A、62B、63C、64D、65標(biāo)準(zhǔn)答案:B知識點解析:在樹結(jié)構(gòu)中,定義一棵樹的根結(jié)點所在的層次為1,其他結(jié)點所在的層次等于它的父結(jié)點所在的層次加1,樹的最大層次稱為樹的深度。完全二叉樹指除最后一層外,每一層上的結(jié)點數(shù)均達(dá)到最大值,在最后一層上只缺少右邊的若干結(jié)點。深度為6的滿二叉樹,結(jié)點個數(shù)為26-1=63,則第7層共有125-63=62個葉子結(jié)點,分別掛在第6層的左邊62個結(jié)點上,加上第6層的最后1個葉子結(jié)點,該完全二叉樹共有63個葉子結(jié)點,故B選項正確。39、下列敘述中正確的是A、軟件是程序、數(shù)據(jù)和文檔B、軟件是程序和數(shù)據(jù)C、軟件是算法和數(shù)據(jù)結(jié)構(gòu)D、軟件是算法和程序標(biāo)準(zhǔn)答案:A知識點解析:計算機軟件由兩部分組成:一是機器可執(zhí)行的程序和數(shù)據(jù);二是機器不可執(zhí)行的,與軟件開發(fā)、運行、維護(hù)、使用等有關(guān)的文檔。故選A選項40、有以下程序#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},k;fp=fopen("data.dat","w+");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[5-i]);rewind(fp);for(i=0;i<6;i++){fscanf(fp,"%d",&k);printf("%d,",k);}fclose(fp);}程序運行后的輸出結(jié)果是A、6,5,4,3,2,1,B、1,2,3,4,5,6,C、1,1,1,1,1,1D、6,6,6,6,6,6,標(biāo)準(zhǔn)答案:A知識點解析:fopen("data.dat","w+");w+打開可讀寫文件,若文件存在則文件長度清為零,即該文件內(nèi)容會消失。若文件不存在則建立該文件。rewind(fp);使文件fp的位置指針指向文件開始。fprintf(fp,"%d\n",a[5-i]);將a[i]輸出到fp指向的文件中。fscanf(fp,"%d",&k);將fp讀入到變量k中,第一個for循環(huán)將數(shù)組中元素倒著輸入到fp指向的文件中,rewind()則指向文件開始,因此打印是數(shù)組a的倒敘。故打印為6,5,4,3,2,1。答案為A選項二、程序填空題(本題共1題,每題1.0分,共1分。)41、下列給定程序中,函數(shù)fun的功能是:在形參ss所指字符串?dāng)?shù)組中,將所有串長超過k的寧符串中后面的寧符刪除,只保留前面的k個字符。ss所指字符串?dāng)?shù)組中共有N個字符串,且串長小于M。請在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#defineN5#defineM10/**********found***********/voidfun(char(*SS)【1】,intk){inti=0;/**********found***********/while(i<【2】){/**********found***********/ss[i][k]=【3】;i++;)}main(){charx[N][M]={“Create”,“Nodify”,“Sort”,“skip”,“Delete”};inti;printf(“\nTheoriginalstring\n\n”);for(i=0;i<N;i++)puts(x[i]);printf(“\n”);fun(x,4);printf(“\nThestringafterdeleted:\n\n”);for(i=0,i<N;i++)puts(x[i]);printf(“\n”);}標(biāo)準(zhǔn)答案:(1)[M](2)N(3)‘\0’知識點解析:填空1:根據(jù)main函數(shù)中的函數(shù)調(diào)用語句,確定函數(shù)定義時的形式參數(shù),所以填入[M]。填空2:while循環(huán)語句需要對所有字符串進(jìn)行操作,因此循環(huán)條件是i<N。填空3:字符串結(jié)尾加入字符串結(jié)束標(biāo)以‘\0’。三、程序修改題(本題共1題,每題1.0分,共1分。)42、下列給定程序的功能是:建立一個帶頭結(jié)點的單向鏈表,并用隨機函數(shù)為各結(jié)點數(shù)據(jù)域賦值。函數(shù)fun的作用是求出單向鏈表結(jié)點(不包括頭結(jié)點)數(shù)據(jù)域中的最大值,并且作為函數(shù)值返回。請改正函數(shù)fun中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4typedefstructaa5{intctata;6structaa*next;7}NODE;8fun(NODE*h)9{intmax=-1;10NODE*p;11/*********found*********/12p=h;13while(p)14{if(p->data>max)15max=p->data;16/*********found*********/17p=h->next;18}19returnmax;20}21outresult(ints,F(xiàn)ILE*pf)22{fprintf(pf,’’\nThemaxinlink:%d\n’’,s);23}24NODE*treatlink(intn,intm)25{NODE*h,*p,*s;26inti;27h=p=(NODE*)malloc(sizeof(NODE));28h->data=9999;29for(i=l;i<=n;i++)30{s=(NODE*)malloc(sizeof(NODE));31s->data=rand()%m;32s->next=p->nexL;33p->next=s;p=p->next;34}35p->next=NULL;36returnh;37}38outlink(NODE*h,F(xiàn)ILE*pf)39{NODE*p;40p=h->next;41fprintf(pf,’’\nTheLIST:\n\nHEAD’’);42while(p)43{fprintf(pf,’’->%d’’,p->data);44p=p->next;}45fprintf(pf,’’\n’’);46}47main()48{NODE*head;intm;49system(’’CLS’’);50head=creatlink(12,100);51outlink(head,stdout);52m=fun(head);53printf(’’\nTheRESULT:\n’’);54outresult(m,stdout);55}標(biāo)準(zhǔn)答案:(1)p=h->next;(2)p=p->next;知識點解析:(1)因為鏈表的頭結(jié)點沒有數(shù)據(jù)域,所以對指針p進(jìn)行初始化時,要將p指向頭結(jié)點的下一個結(jié)點。(2)通過指針p的移動遍歷鏈表,因此此處應(yīng)改為p=p->next;。四、程序設(shè)計題(本題共1題,每題1.0分,共1分。)43、編寫函數(shù)fun,其功能是:根據(jù)以下公式求π的值(要求精度0.0005,即某項小于0.0005時停止迭代)。程序運行后,若輸入精度0.0005,則程序應(yīng)輸出為3.140578。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#include<math.h>doublefun(doubleeps){}voidmain(){doublex;printf(”Inputeps:”),scanf(”%lf”,&x);printf(”\neps=%lf,PI=%lf\n”,x,fun(x));}標(biāo)準(zhǔn)答案:doublefun(doubleeps){doubles=0.0,s1=1.0;intn=1;while(sl>=eps)/*當(dāng)某項大于精度要求時,繼續(xù)求下一項*/s=s+s1;/*求和*/{s1=s1*n/(2*n+1);/*求多項式的每一項*/n++;}return2*s;}知識點解析:首先應(yīng)該定義double類型變量,并同.賦初值,用來存放多項式的某一項和最后的總和。從第二項開始以后的每一項都是其前面一項乘以n/(2*n+1),程序中用s1來表示每一項,s表示求和后的結(jié)果。需注意s1和s的初值都為1.0,因為循環(huán)變量從第二項開始累加。國家二級(C語言)機試模擬試卷第3套一、選擇題(本題共39題,每題1.0分,共39分。)1、在一棵二叉樹上,第5層的結(jié)點數(shù)最多是()。A、8B、9C、15D、16標(biāo)準(zhǔn)答案:D知識點解析:根據(jù)二叉樹的性質(zhì):二叉樹第i(i≥1)層上至多有2i-1個結(jié)點。得到第5層的結(jié)點數(shù)最多是16個。2、設(shè)有表示學(xué)生選課的三張表,學(xué)生S(學(xué)號,姓名,性別,年齡,身份證號),課程C(課號,課名),選課SC(學(xué)號,課號,成績),則表SC的關(guān)鍵字(鍵或碼)為()。A、課號,成績B、學(xué)號,成績C、學(xué)號,課號D、學(xué)號,姓名,成績標(biāo)準(zhǔn)答案:C知識點解析:學(xué)號是學(xué)生表s的主鍵,課號是課程表c的主鍵,所以選課表SC的關(guān)鍵字就應(yīng)該是與前兩個表能夠直接聯(lián)系且能唯一定義的學(xué)號和課號,所以選擇C。3、以下關(guān)于邏輯運算符兩側(cè)運算對象的敘述中正確的是()。A、可以是任意合法的表達(dá)式B、只能是整數(shù)0或非0整數(shù)C、可以是結(jié)構(gòu)體類型的數(shù)據(jù)D、只能是整數(shù)0或1標(biāo)準(zhǔn)答案:A知識點解析:C語言的邏輯運算符比較特別,它的操作數(shù)沒有明確的數(shù)據(jù)類型,可以是任意合法的表達(dá)式,所以選擇A。4、若有定義inta[5],*p=a;則正確引用數(shù)組元素的是()。A、*&a[5]B、*a+2C、*(p+5)D、*(a+2)標(biāo)準(zhǔn)答案:D知識點解析:本題考查通過指針引用數(shù)組元素。用指針引用數(shù)組有以下3種形式:①(p+n)與(a+n)表示數(shù)組元素a[n]的地址:②*(p+n)與*(a+n)表示數(shù)組元素a[n];③p[n]=*(p+n),都表示數(shù)組元素a[n]。選項A、B沒有這種引用形式;選項C,*(p+5)是引用數(shù)組的第6個元素,而數(shù)組一共有5個元素,出現(xiàn)越界;選項D,*(a+2)引用數(shù)組的第3個元素。5、對下列二叉樹進(jìn)行前序遍歷的結(jié)果為()。A、ABCDEFGHB、ABDGEHCFC、GDBEHACFD、GDHEBFCA標(biāo)準(zhǔn)答案:B知識點解析:遍歷就是不重復(fù)地訪問一叉樹的所有結(jié)點。二叉樹遍歷的方法有3種:前序遍歷、中序遍歷和后序遍歷。記住3種遍歷的順序:①前序,訪問根→按前序遍歷左子樹→按前序遍歷右子樹:②中序,按中序遍歷左子樹→訪問根→按中序遍歷右子樹;③后序,按后序遍歷左子樹→按后序遍歷右子樹→訪問根。所以對該二叉樹的中序遍歷結(jié)果為ABDGEHCF。6、有以下程序:#include<stdio.h>main(){charch[]="uvwxyz",*pc;pc=ch;printf("%c\n",*(pc+5));}程序運行后的輸出結(jié)果是()。A、zB、0C、元素ch[5]的地址D、字符y的地址標(biāo)準(zhǔn)答案:A知識點解析:語句pc=ch;使得指針變量指向字符數(shù)組ch的首地址,即指向字符‘u’。則pc+5指向的是字符向后移動5位,指向字符‘z’。所以輸出的水pc+5的值即為‘z’。因此A選項正確。7、有以下程序:voidss(char*s,chart){while(*s){if(*s==t)*s=t-’a’+’A’;s++;}}main(){charstrl[100]="abcddfefdbd",c=’d’;ss(strl,c);printf("%s\n",strl);}程序運行后的輸出結(jié)果是()。A、ABCDDEFEDBDB、abcDDfefDbDC、abcAAfefAbAD、Abcddfefdbd標(biāo)準(zhǔn)答案:B知識點解析:函數(shù)ss(char*s,chart)的功能是將指針s所指向的字符串中存在的字符“t”均改寫成大寫字母;所以main函數(shù)中引用函數(shù)ss后使得數(shù)組str1中的小寫字母“d”均變成了大寫字母“D”,然后輸出數(shù)組str1,結(jié)果為:abcDDfefDbD。8、設(shè)有以下定義:chars1[]="0123";chars2[]={’0’,’1’,’2’,’3’};則以下敘述正確的是()。A、數(shù)組s1的長度小于s2的長度B、數(shù)組s1和s2的長度相同C、數(shù)組s1的長度大于s2的長度D、數(shù)組s1和s2完全等價標(biāo)準(zhǔn)答案:C知識點解析:字符數(shù)組s1賦值字符串“0123”,字符串中字符依次放人數(shù)組中,在最后一個字符后要添加一個結(jié)束字符‘\0’,數(shù)組s1長度為5。數(shù)組s2只需要4個單元即可放下所有初始化值,故數(shù)組長度為4。所以數(shù)組s1的長度大于s2的長度。9、下列關(guān)于線性表的敘述中,不正確的是()。A、線性表可以是空表B、線性表是一種線性結(jié)構(gòu)C、線性表的所有結(jié)點有且僅有一個前件和后件D、線性表是由n個元素組成的一個有限序列標(biāo)準(zhǔn)答案:C知識點解析:線性表是一種線性結(jié)構(gòu),由n(n≥0)個元素組成,所以線性表可以是空表。但是在線性表中,第一個結(jié)點沒有前件,最后一個結(jié)點沒有后件,其他結(jié)點有且只有一個前件和后件,所以選項C是錯誤的。10、下列程序的輸出結(jié)果是()。#includevoidmain(){inta=0,b=1,c=2;if(++a>0||++b>0)++C;printf("%d,%d,%(1",a,b,c);}A、0,1,2B、1,2,3C、1,1,3D、1,2,2標(biāo)準(zhǔn)答案:C知識點解析:本題考查if語句。先判斷if語句的條件是否成立,因為++a=1>0,所以條件成立,又因為是進(jìn)行邏輯或運算,在已知其中一個運算對象為真的情況下,不必判斷另外一個運算對象的真假,即不進(jìn)行++b操作,就可以直接得出整個表達(dá)式的值為邏輯1,執(zhí)行下面的++c。11、有以下程序:#include<stdio.h>main(){inti,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++)printf("%d",t[2-i][i]);}程序執(zhí)行后的輸出結(jié)果是()。A、357B、753C、369D、751標(biāo)準(zhǔn)答案:A知識點解析:二維數(shù)組t[][3]實際上指t[3][3]={{9,8,7},{6,5,4},{3,2,1}},通過循環(huán)語句for語句可以得到i=0,t[2][0]=3、i=1,t[1][1]=5、i=2,t[0][2]=7、i=3時循環(huán)結(jié)束即t[2][0]=3、t[1][1]=5、t[0][2]=7。因此A選項正確。12、以下關(guān)于宏的敘述錯誤的是()。A、宏替換不具有計算功能B、宏是一種預(yù)處理指令C、宏名必須用大寫字母構(gòu)成D、宏替換不占用運行時間標(biāo)準(zhǔn)答案:C知識點解析:宏名習(xí)慣采用大寫字母,以便與一般變量區(qū)別,但是并沒有規(guī)定一定要用大寫字母。13、以下程序的功能是:通過調(diào)用calc函數(shù),把所求得的兩數(shù)之和值放入變量add中,并在主函數(shù)中輸出。#includevoidcalc(floatx,floaty,float*sum){________=x+y;}main(){floatx,y,add;scanf("%f%",&x,&y);calc(x,y,&add);pfintf("x+y=%f\n",add);}calc函數(shù)中下劃線處應(yīng)填入的是()。A、*sumB、sumC、&sumD、add標(biāo)準(zhǔn)答案:A知識點解析:程序的執(zhí)行過程為:從鍵盤讀入兩個。float類型數(shù)據(jù),分別賦給x、y,調(diào)用函數(shù)calc將兩數(shù)之和放入指針sum指向的地址,正確的引用形式為(*sum),所以橫線處填寫*sum。14、設(shè)有定義:inta;floatb;執(zhí)行scanf("%2d%f",&a,&b);語句時,若從鍵盤輸入876543.0,則a和b的值分別是()。A、87和6.0B、876和543.0C、87和543.0D、76和543.0標(biāo)準(zhǔn)答案:A知識點解析:scanf()函數(shù)的一般形式為:scan(格式控制,地址表列)。其中,“格式控制”是用雙引號括起來的字符串,也稱為“轉(zhuǎn)換控制字符串”,它包括兩種信息:①格式說明,由“%”和格式字符組成;②普通字符,即需要原樣輸入的字符?!暗刂繁砹小笔切枰邮蛰斎霐?shù)據(jù)的一系列變量的地址。本題中的“格式控制”是“%2d%f”,“%2d”的意思是要輸入一個整數(shù),但該整數(shù)最寬只占2個字符,而“%2d”是要輸入一個浮點數(shù)。題目要求輸入的是876空格543.0,所以scanf()函數(shù)將87賦給a,將6賦給b。15、若變量已正確定義,以下選項中非法的表達(dá)式是()。A、’a’=1/2*(x=y=20,x*3)B、a!=4||’b’C、’a’%4D、’A’+32標(biāo)準(zhǔn)答案:A知識點解析:本題考查用戶標(biāo)識符,用戶自己定義的標(biāo)識符不能與關(guān)鍵字相同,并且盡量避免和預(yù)定義標(biāo)識符相同。本題中scanf為預(yù)定義標(biāo)識符,可以作為用戶標(biāo)識符;case為關(guān)鍵字,不能作為用戶標(biāo)識符,故而答案選A)。16、對于現(xiàn)實世界中事物的特征,在實體-聯(lián)系模型中使用()。A、屬性描述B、關(guān)鍵字描述C、二維表格描述D、實體描述標(biāo)準(zhǔn)答案:A知識點解析:在實體一聯(lián)系模型中,用屬性來描述現(xiàn)實世界中對象的屬性所表示的對象的性質(zhì)、特征和行為。17、若有定義和語句:inta,b;scanf("%d,%d,",&a,&b);以下選項中的輸入數(shù)據(jù),不能把值3賦給變量a、5賦給變量b的是()。A、3,5B、3,5C、3,5,D、3,5,4標(biāo)準(zhǔn)答案:A知識點解析:考查數(shù)據(jù)的輸入,printf("%d,",b=a+b);先計算b=a+b,得出b=1,再輸出b值。語句printf("%d\n",a=2*b);先計算a=2*b,得出a=2,再輸出a值。所以輸出結(jié)果為A)。18、下列關(guān)于數(shù)據(jù)庫設(shè)計的敘述中,正確的是()。A、在需求分析階段建立數(shù)據(jù)字典B、在概念設(shè)計階段建立數(shù)據(jù)字典C、在邏輯設(shè)計階段建立數(shù)據(jù)字典D、在物理設(shè)計階段建立數(shù)據(jù)字典標(biāo)準(zhǔn)答案:A知識點解析:數(shù)據(jù)字典是在需求分析階段建立,在數(shù)據(jù)庫設(shè)計過程中不斷修改、充實和完善的。19、設(shè)有以下語句:typedefstruetTr{charc;inta14]:}CIN;則下面敘述中正確的是()。A、CIN是struetTT類型的變量B、Tr是struet類型的變量C、可以用TT定義結(jié)構(gòu)體變量D、可以用CIN定義結(jié)構(gòu)體變量標(biāo)準(zhǔn)答案:D知識點解析:本題考查typedef重新聲明一種結(jié)構(gòu)體類型,其中CIN為結(jié)構(gòu)體類型名,而不是結(jié)構(gòu)體變量,所以D選項正確。20、設(shè)有說明int(*ptr)[M];其中的標(biāo)識符ptr是()。A、M個指向整型變量的指針B、指向M個整型變量的函數(shù)指針C、一個指向具有M個整型元素的一維數(shù)組的指針D、具有M個指針元素的一維指針數(shù)組,每個元素都只能指向整型變量標(biāo)準(zhǔn)答案:C知識點解析:根據(jù)C語言的語法規(guī)則可知,int(*ptr)[M]中的標(biāo)識符ptr是一個指向具有M個整型元素的一維數(shù)組指針。21、對關(guān)系S和R進(jìn)行集合運算,結(jié)果中既包含S中的所有元組也包含尺中的所有元組,這樣的集合運算稱為()。A、并運算B、交運算C、差運算D、積運算標(biāo)準(zhǔn)答案:A知識點解析:關(guān)系的并運算是指由結(jié)構(gòu)相同的兩個關(guān)系合并,形成一個新的關(guān)系,新關(guān)系中包含兩個關(guān)系中的所有元組。22、定義無符號整數(shù)類為UInt,下面可以作為類UInt實例化值的是()。A、一369B、369C、0.369D、整數(shù)集合{1,2,3,4,5}標(biāo)準(zhǔn)答案:B知識點解析:只有B選項369可以用無符號整數(shù)來表示和存儲。A選項一369有負(fù)號,選項C0.369是小數(shù)都不能用無符號整數(shù)類存儲。選項D是一個整數(shù)集合得用數(shù)組來存儲。23、有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&j,&y,name);當(dāng)執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A、55566B、566C、7777D、566777標(biāo)準(zhǔn)答案:B知識點解析:因為在輸入格式控制符中指定變量j的輸入格式控制符為“%2d”,即變量.j所占的寬度為2,所以變量j只接收輸入數(shù)據(jù)的前兩位,從第3位開始直到空格之間的輸入整數(shù)都會被保存到變量y中,因為y為浮點型數(shù)據(jù),所以輸出結(jié)果為選項B)。24、有以下程序:#include#includestruetA{inta;charb[10];doublec;};structAf(struetAt);main(){struetAa={1001,“ZhangDa”,1098.0};a=f(a);printf(“%d,%s,%6.1f\n”,a.a(chǎn),a.b,a.c);}struetAf(struetAt){t.a(chǎn)=1002;strcpy(t.b,“ChangRong”);t.e=1202.0:returnt;}程序運行后的輸出結(jié)果是()。A、1002,ZhangDa,1202.0B、1002,ChangRong,1202.0C、1001,ChangRong,1098.0D、1001,ZhangDa,1098.0標(biāo)準(zhǔn)答案:B知識點解析:本題考查結(jié)構(gòu)體變量的引用以及作為函數(shù)參數(shù),題目雖然看似復(fù)雜,其實比較容易,f函數(shù)的參數(shù)是結(jié)構(gòu)體變量,然后對參數(shù)重新賦值并返回,所以該題目的答案為B選項。25、有以下計算公式若程序前面已在命令行中包含math.h文件,不能夠正確計算上述公式的程序段是()。A、if(x>=0)y=sqrt(x);if(x<0)y=sqrt(一x);B、if(x>=0)y=sqrt(x);elsey=sqrt(一x);C、y=sqrt(x);D、if(x<0)y=sqrt(一x);標(biāo)準(zhǔn)答案:C知識點解析:本題重點考查的知識點是:sqrt()函數(shù)。sqrt()函數(shù)的作用是計算平方根,要求輸出的參數(shù)x必須大于等于0。題目公式的要求是無論x大于等于0還是小于0,y的值都為x絕對值的開方。選項C中調(diào)用了sqrt(x)函數(shù),而沒有判斷x的正負(fù),則y=sqrt(x)會出錯。26、設(shè)有兩行定義語句:intscanf;floatcase;則以下敘述正確的是()。A、第2行語句不合法B、兩行定義語句都合法C、第1行語句不合法D、兩行定義語句都不合法標(biāo)準(zhǔn)答案:A知識點解析:本題考查用戶標(biāo)識符,用戶自己定義的標(biāo)識符不能與關(guān)鍵字相同,并且盡量避免和預(yù)定義標(biāo)識符相同。本題中scanf為預(yù)定義標(biāo)識符,可以作為用戶標(biāo)識符;case為關(guān)鍵字,不能作為用戶標(biāo)識符,故而答案選A)。27、有以下程序#includeintm1(intx,inty){returnx<=y?x:y;}intm2(intx,inty){returnx<=y?y:x;}intfun(inta,intb){returna+b;}main(){intx=2,y=3,z=1;printf("%d\n",fun(m1(x,y),m2(y,z)));}程序的運行結(jié)果是()。A、5B、6C、4D、3標(biāo)準(zhǔn)答案:A知識點解析:暫無解析28、有以下程序#includetypedefstruct{intb,p;}A;voidf(Ac)/*注意:c是結(jié)構(gòu)變量名*/{intj;c.b+=1;c.p+=2;}main(){inti;Aa={1,2};f(a);printf("%d,%d\n",a.b,a.p);}程序運行后的輸出結(jié)果是()。A、1,2B、2,4C、1,4D、2,3標(biāo)準(zhǔn)答案:A知識點解析:暫無解析29、以下選項中非法的C語言字符常量是A、’\x9d’B、’9’C、’\x09’D、’\09’標(biāo)準(zhǔn)答案:D知識點解析:本題考察字符常量,字符常量是用單引號括起來的一個字符。例如:’a’、’=’、’+’等。轉(zhuǎn)義字符是一種特殊的字符常量。轉(zhuǎn)義字符以反斜線"\"開頭,后跟一個或幾個字符。D選項中’\09’,\0表示后面的字符是八進(jìn)制數(shù)。又出現(xiàn)9所以是非法的,故D選項正確。30、有以下程序#include<stdio.h>intfuna(inta,intB){returna+b;}intfunb(inta,intB){returna-b;}intsss(int(*t)(),intx,inty){return((*t)(x,y));}main(){intx;x=sss(funa,9,3);x+=sss(funb,8,3);printf("%d\n",x);}程序運行后的輸出結(jié)果是A、24B、23C、17D、22標(biāo)準(zhǔn)答案:C知識點解析:由x=sss(funa,9,3);可得到x=9+3=12,而后直接傳入函數(shù)funb,x=x+8-3=12+5=17。因此C選項正確。31、程序中若有以下的說明定義和語句:#include#includestructST{charnum[10];ints;};main(){structSTt,*p;p=&t;…}下列語句不能正確賦值的是()。A、(*p).s=2;p->num[0]=’\0’;B、p->s=12;p->num[0]=0;C、(*p).s=12;(*p).num=’’’’;D、p->s=12;strcpy((*p).mum,’’’’);標(biāo)準(zhǔn)答案:C知識點解析:結(jié)構(gòu)體變量使用,運算符引用結(jié)構(gòu)體成員變量,結(jié)構(gòu)體指針使用一>運算符引用結(jié)構(gòu)體成員變量。另外,由于成員變量num是字符數(shù)組,所以不能直接進(jìn)行賦值,若要對num賦空字符串值,可以把num中第一個元素賦值為0或’0\’,或者用strcpy()函數(shù)。32、定義結(jié)構(gòu)體數(shù)組structstu{intnum;charname[20];}x[5]={1,"ZHAO",2,"QIAN",3,"SUN",4,"LEE",5,"ZHOU"};for(i=1;i<5;i++)printf("%d%c",x[i].num,x[i].name[2]);程序執(zhí)行后的輸出結(jié)果是()。A、2A3N4E5OB、1H213U4EC、1A2N3E4OD、1A2N3E4O標(biāo)準(zhǔn)答案:A知識點解析:本題主要考查結(jié)構(gòu)體數(shù)組。x[i].num是結(jié)構(gòu)體x[i]中的num成員,x[i].name[2]是結(jié)構(gòu)體x[il中name成員的第3個元素。第一次循環(huán),i=1,輸出x[1].num,x[1].name[2]的值,即2A;第二次循環(huán),i=2,輸出x[2].num,x[2].name[2]的值,即3N;第三次循環(huán),i=3,輸出x[3].num,x[3].name[2]的值,即4E;第四次循環(huán),i=4,輸出x[4].num,x[4].name[2]的值,即50。33、有以下程序#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、變量的地址值標(biāo)準(zhǔn)答案:A知識點解析:程序的執(zhí)行過程為:定義整型數(shù)組x1,x2并進(jìn)行初始化,兩個數(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選項正確。34、以下敘述正確的是A、只使用三種基本結(jié)構(gòu)即可解決任何復(fù)雜問題B、C語言程序并不是必須要定義main()函數(shù)C、只要程序包含了任意一種基本結(jié)構(gòu),就肯定是結(jié)構(gòu)化程序D、程序中的語法錯誤只能在運行時才能顯現(xiàn)標(biāo)準(zhǔn)答案:A知識點解析:C語言程序必須要定義main()函數(shù),B選項錯誤;只有同時包含三種基本結(jié)構(gòu)時,程序才是結(jié)構(gòu)化程序,C選項錯誤;程序中的語法錯誤在編譯時能顯現(xiàn),排除D選項,答案選A。35、某循環(huán)隊列的存儲空間為Q(1:m),初始狀態(tài)為front=rear=m。現(xiàn)經(jīng)過一系列的入隊操作和退隊操作后,front=m,rear=m-1,則該循環(huán)隊列中的元素個數(shù)為A、m-1B、mC、1D、0標(biāo)準(zhǔn)答案:A知識點解析:循環(huán)隊列長度為m,由初始狀態(tài)為front=rear=m,可知此時循環(huán)隊列為空。入隊運算時,首先隊尾指針進(jìn)1(即rear+1),然后在rear指針指向的位置插入新元素。特別的,當(dāng)隊尾指針rear=m+1時,置rear=1。退隊運算時,排頭指針進(jìn)1(即front+1),然后刪除front指針指向的位置上的元素,當(dāng)排頭指針front=m+1時,置front=1。從排頭指針front指向的后一個位置直到隊尾指針rear指向的位置之間所有的元素均為隊列中的元素。如果rear-front>0,則隊列中的元素個數(shù)為rear-front個;如果rear-front<0,則隊列中的元素個數(shù)為rear-front+m。該題中m-1<m,即rear-front<0,則該循環(huán)隊列中的元素個數(shù)為(m-1)-m+m=m-1。故選A選項.36、設(shè)有定義:chars[81];inti=0;,以下不能將一行(不超過80個字符)帶有空格的字符串正確讀入的語句或語句組是()。A、gets(s);B、while((s[i++]=getchar())?。健痋n’);s[i]=’\0’;C、scanf("%s",s);D、do{scanf("%c",&s[i]);}while(s[i++]?。健痋n’);s[i]=’\0’;標(biāo)準(zhǔn)答案:C知識點解析:字符串的輸入不能使用scanf("%s",s);而應(yīng)該使用gets(s)。37、算法的時間復(fù)雜度是指()。A、算法的長度B、執(zhí)行算法所需要的時間C、算法中的指令條數(shù)D、算法執(zhí)行過程中所需要的基本運算次數(shù)標(biāo)準(zhǔn)答案:D知識點解析:算法的時間復(fù)雜度,是指執(zhí)行算法所需要的工作量,可以用算法在執(zhí)行過程中所需基本運算的執(zhí)行次數(shù)來度量算法的工作量。38、當(dāng)變量C的值不為2、4、6時,值為“真”的表達(dá)式是()。A、(c==2)||(c==4)||(c==6)B、(c>=2&&c<=6)||(c!=3)||(c!=5)C、(c>=2&&c<=6)&&!(c%2)D、(c>=2&&c<=6)&&(c%21=1)標(biāo)準(zhǔn)答案:B知識點解析:本題主要考查的是邏輯表達(dá)式。邏輯與運算中只有兩邊的表達(dá)式同時為真.最后結(jié)果才為真;參與邏輯或運算的表達(dá)式只要有一個為真,最后結(jié)果就為真。選項A中表達(dá)式的意思是當(dāng)c等于2或4或6時,表達(dá)式的值為真,否則為假,所以不滿足題意。選項C中表達(dá)式的意思是當(dāng)c大于等于2且小于等于6,并且c不是奇數(shù)時,表達(dá)式的值為真,否則為假。此時滿足該表達(dá)式的c只能取值為2、4、6,所以也不滿足題意。選項D中后面一個子表達(dá)式(c%2!=1)和選項C中的!(c%2)是等價的,都是判斷c不是奇數(shù),因此也不滿足題意。故B選項正確。39、若有定義語句:inta[4][10],*P,*q[4];,且0≤i<4,則錯誤的賦值是()。A、p=aB、q[i]=a[i]C、p=a[i]D、p=&a[2][1]標(biāo)準(zhǔn)答案:A知識點解析:二維數(shù)組名是指向指針的指針,所以a和q都為指向指針的指針,而p為指向int類型的指針,p和a不同類型,故A項p=a賦值語句錯誤。其余選項可以正確賦值,其中D項是用&返回整數(shù)的地址,然后復(fù)賦值p。二、程序填空題(本題共1題,每題1.0分,共1分。)40、給定程序中,函數(shù)fun的功能是將不帶頭結(jié)點的單向鏈表逆置,即若原鏈表中從頭至尾結(jié)點數(shù)據(jù)域依次為2、4、6、810,逆置后,從頭至尾結(jié)點數(shù)據(jù)域依次為10、8、6、4、2。請在程序的下畫線處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<stdlib.h>#defineN5typedefstructnode{intdata;structnode*next,}NODE;/**********found***********/【1】fun(NODE*h){NODE*P,*q,*r;p=h;if(p==NULL)returnNULL;q=p一>next;P一>next=NULL:while(q){/**********found***********/r=q一>【2】;q一>nexL=P,p=q,/**********found***********/q=【3】,}returnp,}NODE*creatlist(inta[]){NODE*h,*p,*q,inti;h=NULL;for(i=0;i<N;i++){q=(NODE*)malloc(sizeof(NODE));q一>data=a[i];q一>next=NULL;if(h==NULL)h=p=q,else{P一>next=q;p=q,)}returnh;}voidoutlist(NODE*h){NODE*p;P=h;if(p=NULL)printf(“ThelistisNULL!\n”);else{printf(“\nHead”);do{printf(“一>%d”,p一>data),p=P一>next;)while(P!=NULL);printf(“一>End\n”);}}main(){NODE*head;inta[N]={2,4,6,8,10},head=creatlist(a);printf(“\nTheoriginallist:\n”);outlist(head);head=fun(head);printf(“\nThelistafteriverting:\n”);outlist(head);}標(biāo)準(zhǔn)答案:(1)NODE(2)next(3)r知識點解析:填空1:本題考查了函數(shù)指針變量的函數(shù)返回值的類型,*fun(NODE*)的返回值為p,而p的數(shù)據(jù)類型為NODE,因此本空應(yīng)該填寫NODE。填空2:從此空的形式p一>可知本空應(yīng)該填寫next。填空3:本題要求將不帶頭結(jié)點的單向鏈表逆置,為了使q的指針向后移,此空應(yīng)該填寫r。三、程序修改題(本題共1題,每題1.0分,共1分。)41、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:將s所指字符串中位于奇數(shù)位置的字符或ASCII碼值為偶數(shù)的字符依次放人t所指數(shù)組中。例如,字符串中的數(shù)據(jù)為“AABBCCDDEEFF”,則輸出應(yīng)當(dāng)是“ABBCDDEFF”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<conlo.h>#include<stdio.h>#include<string.h>#defineN80voidfun(char*s,chart[]){inti,j=0;for(i=0;i<(int)strlen(s);i++)/*********found*********/if(i%2&&s[i]%2==0)t[j++]=s[

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論