2021年寧夏回族自治區(qū)吳忠市全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第1頁
2021年寧夏回族自治區(qū)吳忠市全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第2頁
2021年寧夏回族自治區(qū)吳忠市全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第3頁
2021年寧夏回族自治區(qū)吳忠市全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第4頁
2021年寧夏回族自治區(qū)吳忠市全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021年寧夏回族自治區(qū)吳忠市全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)學(xué)校:班級:姓名:考號:一、2.填空題(10題)1.下列程序段的輸出結(jié)果是【】。intn=,c,;switch(n++){default:printf(nerrorn);break;caseW:case'A':case:caseB:printf(ngoodn);break;case:case!C:printf(npassn);case:case^*:printsnwarnn);}2.注釋一般分為序舌性注釋和注釋。3.軟件生命周期可分為多個階段,一般分為定義階段、開發(fā)階段和維護(hù)階段。編碼和測試屬于【】階段。4.閱讀下面語句,貝IJ程序的執(zhí)行結(jié)果是【]o#includenstdio.hnmain(){inta=-l,b=l,k;if((++a<0)&&!(b-—<=0))printf(n%d,%d\nn,a,b);elseprintf(n%d,%d\nu,b,a);}5.在計算機(jī)軟件系統(tǒng)的體系結(jié)構(gòu)中,數(shù)據(jù)庫管理系統(tǒng)位于用戶和【]之間。6.以下程序段的功能是統(tǒng)計鏈表中結(jié)點(diǎn)的個數(shù),其中first為指向第一個結(jié)點(diǎn)的指針(鏈表帶頭結(jié)點(diǎn))。請在下劃線內(nèi)填入正確內(nèi)容。structlink{chardata;structlink*next;};???structlinkup,*first;intc=0;p=first;while([]){c++;P=【】;}7.若有如下結(jié)構(gòu)體說明:structSTRU{inta,b;charc:doubled;structSTRU*pl,*p2;};請?zhí)羁眨酝瓿蓪數(shù)組的定義,t數(shù)組的每個元素為該結(jié)構(gòu)體類型。[]t[20]8.以下函數(shù)用來求出兩整數(shù)之和,并通過形參將結(jié)果傳回,請?zhí)羁?。voidfunc(intx,inty,[]z){*z=x+y;}9-已知字母A的ASC□碼為65o以下程序運(yùn)行后的輸出結(jié)果是()。main(){chara,b;a='A'+5-3;b=a+6-2;a='A'+5-3;b=a+6-2;printf(n%d%c\nn,a,B);}10.以下程序運(yùn)行后的輸出結(jié)果是【]o#defineS(x)4*x*x+]mah(){血i=6,j=8;printf(n%d\nn,S(i+j));二、單選題(10題)11.將兩個字符串連接起來組成一個字符串時,選用()函數(shù)。A.strlenQB.strcpy()C.strcat()D.strcmpQ12.以下程序的輸出結(jié)果是o^defineM(x,y,z)x*y+zmain(){inta=l,b=2,c=3;printf(n%d\nn,M(a+b,b+c,c+a));}A.19B.17C.15D.1213.下面描述中,不屬于軟件危機(jī)表現(xiàn)的是()A.軟件過程不規(guī)范B.軟件開發(fā)生產(chǎn)率低C.軟件質(zhì)量難以控制D.軟件成本不斷提高14.以下敘述中正確的是oA.C語言比其他語言高級B.C語言可以刁;用編譯就能被計算機(jī)識別執(zhí)行C.C語言以接近英語國家的自然語言和數(shù)學(xué)語言作為語言的表達(dá)形式D.C語言出現(xiàn)的最晚,具有其他語言的一切優(yōu)點(diǎn)15.設(shè)有二維數(shù)組A7x8,每個數(shù)據(jù)元素占8個字節(jié)存儲單元,順序存放,A第一個元素A0,0的存儲地址為1000,數(shù)組A的最后一個元素A6,7的存儲地址為()。A.1024B.1440C.1448D.143216.下列程序的執(zhí)行結(jié)果是()。#include<stdioh>main{inta,b,c;a=b=2,c=I;c=(a++)-l;printf("%d,OAd",a,c);c+=-a+++(++b);printf("%d,%d",a,c);)A.3,14,1B.3,14,2C.2,04,1D.2,14,117.在待排序文件已基本有序的前提下,下述排序方法中效率最高的是()。A.直接插入排序B.直接選擇排序C.快速排序D.二路歸并排序18.采用鄰接表存儲的圖的深度優(yōu)先遍歷算法類似于二叉樹的()。A.先序遍歷B.中序遍歷C.后序遍歷D.按層遍歷19.將一棵有100個結(jié)點(diǎn)的完全二叉樹從上到下,從左到右依次對結(jié)點(diǎn)進(jìn)行編號,根結(jié)點(diǎn)的編號為1,則編號為49的結(jié)點(diǎn)的左孩子的編號為____________OA.98B.99C.50D.4820.層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫劃分原則是()。A.記錄長度B.文件的大小C.聯(lián)系的復(fù)雜程度D.數(shù)據(jù)之間的聯(lián)系方式三、程序設(shè)計題(10題)21.請編寫一個函數(shù)proc,它的功能是:求出l~m(含m)能被7或11整除的所有整數(shù)放在數(shù)組a中,通過n返回這些數(shù)的個數(shù)。例如,若傳給m的值為70,則程序輸出:7111421222833354244495556636670注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填人所編寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#defineN100voidproc(intm,int*a,int*n){}voidmain{intarr[N],n,k;system("CLS");proc(70,arr,&n);for(k=0;k<n;k++)if((k+1)%20==0)//每行輸出20個數(shù){printf("%4d",arr[k]);printf("\n");}elseprintf("%4d",arr[k]);printf("\n");}22.請編寫函數(shù)proc,該函數(shù)的功能是:將放在字符串?dāng)?shù)組中的m個字符串(每串的長度不超過N),按順序合并組成一個新的字符串。例如,若字符串?dāng)?shù)組中的M個字符串為:ABCDBCDEFGCDEFGHI則合并后的字符串內(nèi)容應(yīng)該是ABCDBCDEFGCDEF—GH1。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填人所編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#defineM3#defineN20voidproc(chararr[M][N],char*b){}voidmain{charstr[M][N]=("ABCD","BCDEFG","CDEFGHI"},i;chararr[100]=("##################");printf("Thestring:\n");for(i=0;i<M;i++)puts(str[i]);printf("\n");proc(str?arr);printf("TheAstring:\n");printf(n%s",arr);printf("\n\n");}23.餡編與函數(shù)proc(),該函數(shù)的功能是:移動一維數(shù)組中的內(nèi)容若數(shù)組中有n個整數(shù),要求把下標(biāo)從p到n-1(p<n-l)的數(shù)組元素平移到數(shù)組的前面。例如,一維數(shù)組中的原始內(nèi)容為1,2345678,9,10,11,12,13,14,P的值為4。移動后,一維數(shù)組中的內(nèi)容應(yīng)為5,6,7,8,9,10.11,12,13,14,1,2,3,4。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:Sinclude<Ii3>—defineMHUvoidpric(iiitW*、inip<tntnJvendmnint1intair[1k2"j3.L5+&了田?!?HLLnt:,]}kT1I4Fprin?H-Thcorigina3由1衡1口"'forti"Oii<n:i+1+)prin時廠?43iJ-?arr£]J)tprin\nEntcrp,"i]M?anfrH

網(wǎng)』“*&-時iprDT-(iirr*p>ni("primf('\nThedslnnEtermavinjj.A?/f?r(i^Opi^niLi"+>printF廠%3d"*arr[i])pprintf("\n\nn

jt24.、請編寫一個函數(shù)proc(),它的功能是:根據(jù)以下公式求"的值'求滿足精度0.0005,即某項小于0.005時停止迭代)o-I-Fi/3+L?2/(3#5)+1*2"3/<3*5*7)+1*2*3*1/(3?5*7*9)-+*—]*2???,?

*n/i

5?£*7■*<Zn+⑵程序運(yùn)行后,如果輸入精度0.0005,則程序輸出3.140578。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:血<-coniodhA*include<Ktdio,h><CmsTh,h>doubkproc^do^bl^ep*}Yuidmain(1(doubles:priqtfc"\nPtca?c^nttreipnxi>iun;'"J;salite"光HL阮k):[iTinlfC*\nEJL=

K}[\n",practs)"ic25.規(guī)定輸入的字付串中只包含字母和*號。編寫函數(shù)魚n,其功能是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用c語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******刪除*后字符串中的內(nèi)容應(yīng)當(dāng)是:ABCDEFGO注意:部分源程序在文件PR0G1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。4inrluilr<4[(liur

h>vt^rifian(uhar?占}EtLunl】If'hilrgl』:V,制MUEWC,liriniff"如ihtjiHlriFigi\n、'j;都叫?Q=九展、)f|5nntf<"*rhosiringMm:「d"md:加I”);f>lJH(H〕;WM)l:]J“WMONUf}■z*奉哧霞用于打并文件\精人散娓,詞用前數(shù),的出地?fù)?jù),關(guān)閉文件\./FII上:*in,?印1匚:inEi■L'hdr衛(wèi);inH("in.ri^r廣廣]二ntr[二""rmt.djiPZ1w"j:FurfL-(J;P<.10^l*4)l|in!"冬LHF):H.Jm吊rinU,仙ih

”吼J^n11.sj,IhTmg囪】:f^lnhF!(#ij|)\I26.n個人的成績存放在score數(shù)組中,請編寫函數(shù)proc(),它的功能是將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在down所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為{99,80,40,56,59,84,60,76,100}時,函數(shù)返回的人數(shù)應(yīng)該是4,down中的數(shù)據(jù)應(yīng)為40565960。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:iriTiclvdtkAinchidrUrunio.hL>#&1叫乩旨>5?irluludcVsErir\g.Ea>intpruc(iniscore^J.inrn,hndow□口)}void麗曲()<ir|tI-F)1和wn[9〕ImtxortC^]—i.40i5Cp55-i8'i+fiO,76.100Ita對cittiFCI^S-*1>iti=prt)c(srorc?9■down)iprinltt"\ndnwntothenversRcJicnrtisre:Hfor(i0r】<nfi++)prlnrf^"J4dHTfi^wnfi]:prinrf("*n?):j27.請編寫函數(shù)proc(),其功能是:將str所指字符串中下標(biāo)為偶數(shù)的字符刪除,串中剩余字符形成的新串放在t所指數(shù)組中。例如,當(dāng)str所指字符串中的內(nèi)容為abcdefg,則在t所指數(shù)組中的內(nèi)容應(yīng)是bdfo注意:部分源程序給出如下。請勿改動main。函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:Uinclude<siTdlih,h>#induUrim"h?>#inrtudeVw小HincluiJcWstn咯.hAv0^pnK<chnr??6上白『,[])voidm們制>IellRf、可IM]3O01]i瀏irrums>rp>ritnKH\HHwmrtritorstringwLnM);wanff71

昭k*.Plr):pmctstCft),prit?f<"\nThe佗wit恥%s\nt}28.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項目中包含一個源程序文件progl.c。在此程序中,編寫函數(shù)fun(),其功能是實(shí)現(xiàn)B=A+At,即將矩陣A加上A的轉(zhuǎn)置,結(jié)果存放在矩陣B中。計算結(jié)果在main()函數(shù)中輸出。舉例如下。輸入如下的矩陣:其轉(zhuǎn)置炬陣如下:12314745625S7gy369程序輔出:2(j1061014IQuIS注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>voidfun(inta[3][3],intb[3][3]){}voidmain(){inta[3][3]={{l,2,3},{4,5,6},{7,8,9}},t[3][3];inti,j;system("CLS");fun(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)printfC34%7d”,t[i][j]);printfC偵,29.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項目中包含一個源程序文件progl.c。在此程序中,編寫函數(shù)fun().其功能是根據(jù)以下公式求兀的值(要求精度0.0005,即某項小于0.0005時停止迭代)。2L_i」,1妃.頃乂3,I2_3八53^5x7+3xj5x7x9+"+1x2x■■■xn-3比5xx(&+1)程序運(yùn)行后,若輸入精度0.0005,則程序應(yīng)輸出為3.140578c注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#includeVstdio.h〉#includeVconio.h〉#includeVmath.h〉doublefun(doubleeps){}voidmain(){doublex;printf(“Inputeps:");scanf("%lf',&x);printf("\neps=%lf,PI=%lf\n”,x,fUn(x));}30.請編寫函數(shù)proc(),其功能是:利用以下所示的簡單迭代方法求方程cos(x)-x=0的一個實(shí)根。xn+1=COS(xn)迭代步驟如下:⑴取x1初始值為0.0;(2)x0=x1,把?X1的值賦給x0;⑶x1=cos(xO),求出一個新的x1;(4)若x0-x1的絕對值小于0.000001,則執(zhí)行步驟(5),否則執(zhí)行步驟(2);(5)所求x1就是方程cos(x)-x=0的一個實(shí)根,作為函數(shù)值返回。程序?qū)⑤敵鼋Y(jié)果root=0.739085。注意:部分源程序給出如下。請勿改動main。函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:界include<codiO.bA井iucltideCmath.h2>整includt!Viitdixi-hAf】響piw()H<m1mL

=OrO',xO1dfr劉)fliIwhile({aBjiChO—

61,}vejjdTHAinf)((InMif=prnc(hprinif("raat^t\nHiD;I四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fim()的功能是:用冒泡法對6個字符串按由大到/]\的順序進(jìn)行排序。請改正程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:^include<conio.h>^include<stdio.h>#defineMAXLINE20voidfun(char*pstr[6]){inti,j;char*p;for(i=0;i<5;i++)for(j=i+1;j<6;j++)/*************found*************/if(strcmp((pstr+i),(pstr+j))<0){p=*(pstr+i);*(pstr+i)=*(pstr+j);/*************found*************/*(pstr+j)=*p;}}main(){inti;char*pstr[6],str[6][MAXLINE];clrscr();for(i=0;i<6;i++)pstr[i]=str[i];printf("/nEnter6string(1stringateachline):\n");for(i=0;i<6;i++)scanf("%s",pstr[i]);fUn(pstr);printf("Thestringsaftersorting:\n");fbr(i=O;i<6;i++)printf(n%s\nn,pstr[i]);32-下列給定程序中函數(shù)血1()的功能是:求出字符串中最后一次出現(xiàn)的子字符串的地址,通過函數(shù)值返回,在主函數(shù)中輸出從此地址開始的字符串;若未找到,則函數(shù)值為NULLO例如,當(dāng)字符串中的內(nèi)容為abcdabfabcdx,t中的內(nèi)容為ab時,輸出結(jié)果應(yīng)是abcdxo當(dāng)字符串中的內(nèi)容為abcdabfabcdx,t中的內(nèi)容為abd時,則程序輸出未找到的信息:Notfound!請改正程序中的錯誤,使它能得出正確的結(jié)果。注意,?不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:^include<stdio.h>^include<conio.h>^include<string.h>char*fiin(char*s,char*t)char*p,*r,*a;/*************Qund**************/a=Null;while(*s){p=s;r=t;while(*r)/*************Qund**************/if(r==p){r++;p++;}elsebreak;iH*r=='\0‘)a=s;s++;returna;}main(){chars[100],t[100],,*p;clrscr();printsn\nPleaseenterstringS:”);scanf(n%sn,s);printf(n\nPleaseentersubstringt:”);scanf(n%sn,t);p=fun(S,t);if(p)printf(n\nTheresultis:%s\nn,p);elseprintf(n\nNotfound!\n”);}33.給定程序M0D11.C中函數(shù)fim的功能是:首先把b所指字符串中的字符按逆序存放,然后將a所指字符串中的字符和b所指字符串中的字符,按排列的順序交叉合并到c所指數(shù)組中,過長的剩余字符接在c所指數(shù)組的尾部。例如,當(dāng)a所指字符串中的內(nèi)容為%bcdefT,b所指字符串中的內(nèi)容為“1234”1時,c所指數(shù)組中的內(nèi)容應(yīng)該為%4b3e2dle您”;而當(dāng)a所指字符串中的內(nèi)容為“1234”,b所指字符串中的內(nèi)容為%bedefg”時,c所指數(shù)組中的內(nèi)容應(yīng)該為“Ig2f3e4dcba”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1I1lincluds<stdio?h>iii2j1#include^string,ii3|voidfun(chsr*ar

*Jbr

*C)4!{i5Jintitj;chareh;6ii=Ojj=strlen(t>)-1;7i/*i*i+*******found*********?**/B!while{i>j>9i{ch=b[i];b[i}=b[j];b[j]=ch.;10Jmj—fu!}12jwhile(*a||*bj{13;/***^******14/d14jIf(*a?U!(*c-*a;c++;a++;}1€iif(*b)d17j(*c=*b;□+-<-;b++;)18j,)19;七h(yuǎn)9』20\}21!main(J22\(23;charsi[100]rs2[100],t[230]f24252723!printfr\nEntersistring:fl);iscanf(w%s'\sl);iprintfUT\n£ntejs2stxing;");\MM壬[n%S'Trs2j;!fun<sl,s2ft)jitprlntf("\nTheresultis:%5An",t);34.給定程序中,函數(shù)fim()的功能是:使數(shù)組中的元素的值增加10倍。改正其中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).試題程序:^include<stdio.h>^include<conio.h>ihtm[10];voidfun(void){intj;printf(nInsubfiincaftercalling\nn);for(j=0;j<10;j++){/************Qund**********************/printf(n%3dn,m[j]*10);}}main(){inti;printf(nInmainbeforecalling\nn);for(i=0;i<10;i++){m[i]=i;printf(n%3dn,m[i]);}fun();printf(n\nlnmainaftercalling\nn);for(i=0;i<10;i++)printf(°%3dn,m[i]);getch();}35.假如整數(shù)數(shù)列中的數(shù)不重復(fù)并存放在數(shù)組中。下列給定的程序中,函數(shù)fim()的功能是:刪除數(shù)列中值為X的元素。N中存放的是數(shù)列中元素的個數(shù)。請改正程序中的錯誤,使它能夠得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:^include<stdio.h>#defineN20fun(int*a,intn,intx){intp=0,i;a[n]=x;while(x!=a[p])P=P+1;if(p==n)return-1;else{for(i=p;i<n;i++)/***************************/a[i+l]=a[i];returnn-1;}}main(){intw[N]={?3,0,l,5,7,99,10,15,30,90},x,n,i;n=10;printf(nTheoriginaldata:\nn);fbr(i=0;i<n;i++)printf(n%5dn,w[i]);printf(n\nlnputx(todelete):");scanf(n%dn,&x);printf(nDelete:%d\nn,x);n=fun(w,n,x);if(n==-l)printf("***Nobefound!***\n\rT);else{print町Thedataafterdeleted:\nn);fbr(i=0;i<n;i++)printR”%5d”,w[i]);printf(n\n\nn);}}36.下列給定程序中,函數(shù)fUn()的功能是;求出兩個數(shù)的最大公約數(shù),并作為函數(shù)值返回。例如,若給numl和num2輸入49和21,則輸出的最大公約數(shù)為7:若給numl和num2分別輸入27和81,則輸出最大公約數(shù)為27o請改正函數(shù)ftm()中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)試題程序:^include<stdio.h>intfon(inta,intb){intr,t;if(a<b)/**********************************/{t=a;b=a;a=t;}r=a%b;while(r!=0){a=b;b=r;r=a%b;}/*!<?£?*1**1*廠1?!??!??!*?£?//*p*r*p*p*r*r*p*r*p*p*p*r*r*r*r*p*r*r1"C1],廠|不平奪不不平不不不不不不不奪不不不/return(a);}main(){intnuml,num2,a;printf(nInputnumlnum2:n);scanf(n%d%dn,&numl,&num2);printf(nnum1=%dnum2=%d\n\nu,numl,num2);a=fun(numl,num2);printf(nThemaximuncommondivisoris%d\n\nn,a);37.給定程序M0D11.C中函數(shù)fim的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCII碼升序排序后輸出。例如,若輸入:edcba,則應(yīng)輸出:abcdeo請改正程序中的錯誤,使它能統(tǒng)計出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!123456F391011121314151617Ui4include<stdio,h>I;<ln.elude<str±.ng.h>h!voidfun(chartil)IItl||;eharc;[inti,j;ifsmd**.......*/jfqti=st;i~i—)I|for(i=0;j<i;j十十)ly^**#-^--*#*ffiif(Ujl<tij+1])!i!ct[j];!t[j]=tu+J-U;t(j4-L]=c;II.;睥m()19-12D!chars[81];21;prLntf(,p\nPleaseenteracharacterJstring:");22'!'gets(s)f23!printf("\n\nB-efores?Ttings\n-s);24!tun(£I;I25iprintf("\riAfterAortln^decendingly;!\ns);26!}38.下列給定程序中,函數(shù)fbn()的功能是根據(jù)整型形參m,計算如下公式的值。y=l-l/(2x2)+l/(3x3)-l/(4x4)+...+(-l)(m+l)/(mxm)例如:m中的值為5,則應(yīng)輸出0.83861lo請改正程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main函數(shù)不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:^include<conio.h>^include<stdio.h>doublefun(intm){doubley=1.0;/**********Qund*************/intj=l;inti;for(i=2;i<=m;i++)j=-l*j;/****************found*******+******/y+=l/(i*i);}return(y);}main(){intn=5;clrscrQ;printf(n\nTheresultis%lf\nn,fiin(n));39.下列給定程序中,函數(shù)fim()的功能是:用下面的公式求兀的近似值,直到最后一項的絕對值小于指定的數(shù)(參數(shù)num)為止。71/4^1-1/3+1/5-1/7+...例如,程序運(yùn)行后,輸入0.0001,則程序輸出3.1414。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意?.不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)試題程序:#include<math.h>^include<stdio.h>floatfun(floatnum){ints;floatn,t,pi;t=l;pi=0;n=l;s=l;/?£??£?^3^^3^^3^^3^?!<廠_1?£??!??£??1?>1*//^^^*p*p*p*p*p*p*p*p*p*p*tTCI]了)廠|不不不不不不不不不不不不不不不/while(t>=num)pi=pi+1;n=n+2;s=-s;/kJ*//^*p*p*p*p*p*p*p*p*p*p*p*r*rTCI]T1Cl不不不不不不平平不不不不不不/t=s%n;}pi=pi*4;returnpi;}main(){floatnl,n2;clrscr();printf("Enterafloatnumber:");scanf&nl);n2=fiin(nl);printf(n%6.4f\nn,n2);}40.下列給定程序中,函數(shù)fUn()的功能是:將m(l<m<10)個字符串連接起來,組成一個新串,放入pt所指字符串中,例如:把3個串a(chǎn)bc,CD,EF串聯(lián)起來,結(jié)果是abcCDEFo請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:^include<conio.h>^include<string.h>^include<stdio.h>/1kJx//不不不平奪不不不不不不不不1~cimrl不不不不不不不不不不不不不不/intfiin(charstr[][10],intm,char*pt){intk,q,i,j=O;fbr(k=O;k<m;k++){q=strlen(str[k]);j+=q;fbr(i=O;i<q;i++)/1//不不不不不不不不不不不不不tci不不不不不不不不不不不不不不/pt[i]=str[k,i];pt+=q;pt[O]=0;}Pt-=j;main(){intm,h;chars[10][10],p[120];clrscr();printf(n\nPleaseenterm:");scanf(n%dn,&m);gets(s[O]);printf(n\nPleaseenter%dstring:Inn,m);fbr(h=O;h<m;h++)gets(s[h]);fun(s,m,p);print町\nTheresultis:%s\nn,p);}五、程序改錯題(2題)41.下列給定程序中函數(shù)fun的功能是:用冒泡法對6個字符串進(jìn)行升序排列。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!^itKlude<btdicr.h>#IFKllKk£

執(zhí)ring,b>瞄gMAX11NE20hin〔clur*patr[6]5Iimi+j:char*p;fcr(i=Qi<5;i++)|/*?************臨nd************知(j=\+1,i<6,j+*)Iiff4ti?p(*(網(wǎng)r4-i>,?(psir+j)),0)tp-■(Pfltr十i];中普中*********Ibiuncl*+**+*****??*(ptr十i)=p?tr+j;?<F?Jr4j)三口;nuin()I油i&clidT■pslr[A]十b(f[6][MAXUNE];fcrO=0;i<&;i++)呻1汀~**【;]:prinlf("^raEnterCutiingf1H-lrin^steachlirw)t\iT);fw(i蘭0;i<*F++)iMjanft41^s"tp*tr[i]j;iun(pfttr):printf(l,T1irfiirin^fa/icrsorting;kn"}jkr苔-0;i<4;i+-f-}pnntf(HWaVn^tpetr[i]HI42.下列給定程序中,函數(shù)proc()的功能是:計算str所指字符串中含有t所指字符串的數(shù)目,并作為函數(shù)值返回。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:畀includeWwidl&Xh>4includeVctm血號incLudtVWnoff.h>牯indudc<?[dkCihA玷drfin.rM軸i^rproc{cSuir■str,cMr*(.iriELnnrhiir斗m*rtn"Lwhilst*H.IF)Kp=str;//-**-*±found*itr*r=-pcwhi|或*pj詛*r==*p}g++mp--;\wImwbrgakt//<-*<*fcund*-+**]f(*r==cr>nH-+r(str+}rriurn14Ivoidmqin(1IiduirjicrLM],b[M]iInimi.n均miylW'CLg"}ifffinlF('\nPlease^nT?r^trinpra,,"\i1Pluajs^tnitr^uTi^lrangb=HDtmiprucC?tr^h>^p-rijitF("\TiTh^r&suhm-=咒啟Wm,六、操作題(2題)43.下列程序的運(yùn)行結(jié)果是#definePOW(r)(r)*(r)main(){intx=3,y=2,t;t=POW(x+y);printf(n%d\nn,t);44.請補(bǔ)充函數(shù)proc(),其功能是:計算并輸出給定10個數(shù)的方差。例如,給定的10個數(shù)為12.0,9.0,26.0,5.0,6.0,31.0,9.0,3.0,8.0,18.0,輸出為s=8.877500。注意:部分源程序給出如To請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)P”c()的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:uincludeIi>sincludeWtgTh,hAdouhlrpresHeirauhkk[1CI]}>nI>1doublea0.山sloijlhk'^tim=0.0tcJquMeDi(orci=o:i<io:i++1[I]ifnr(i=0:i<|0ii++)Eldh4rllh(}dniilih1

C)l=12,Drfr,0.31,0.9.0.U,0.IS.0]jifitprintH"\nTbedw位:頃"}?[orti=0[iC10[i++)jiriivft]f"if>rinlT("\n\_TiMitprimf(Hs=^f\j]\nrf

ls);參考答案1.passwarnpasswarn解析:n++是在執(zhí)行完其所在的語句后再加1,因此,在執(zhí)行case的時候,n的值依然為。,執(zhí)行cas"后面的語句先打印出“pass”;在執(zhí)行完cas"后,未遇到break跳出switch,便接著執(zhí)行下面的語句,又打印出wam。所以此題輸出結(jié)果是passwamo2.功能性功能性解析:注釋一般分為序言性注釋和功能性注釋。序言性注釋通常位于每個程序的開頭部分,給出程序的整體說明;功能性注釋—般嵌在源程序體之中,主要描述其后的語句或程序做什么,3.開發(fā)開發(fā)解析:軟件生命周期(SDLC,軟件生存周期)是軟件的產(chǎn)生直到報廢的生命周期,周期內(nèi)有問題定義、可行性分析、總體描述、系統(tǒng)設(shè)計、編碼、調(diào)試和測試、驗收與運(yùn)行、維護(hù)升級到廢棄等階段,其中的編碼和測試屬于開發(fā)階段。4.101,0解析:與運(yùn)算兩邊的語句必須同時為真時,結(jié)果才為真,當(dāng)執(zhí)行完if((++a<0)&&!(b-<=0))時,a,b的值已經(jīng)發(fā)生了變化。5.操作系統(tǒng)或OS操作系統(tǒng)或OS解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)。位于用戶和操作系統(tǒng)之間。6.p!=NULLp->nextp!=NULL\r\np->next解析:結(jié)構(gòu)體變量構(gòu)成鏈表需要每個節(jié)點(diǎn)中都有一個指向下一個結(jié)點(diǎn)的指針,就像本題中的next指針一樣。注意:掌握可以對鏈表進(jìn)行的操作。7.strudctSTRUstrudctSTRU解析:結(jié)構(gòu)件類型是構(gòu)造數(shù)據(jù)類型,是用戶自己定義的一種類型。結(jié)構(gòu)體類型的定義:struct結(jié)構(gòu)體類型名成員項表/};定義結(jié)構(gòu)體變量的的形式為:struct結(jié)構(gòu)體類型名變量1,變量2,...?其中變量包括;—般變量、指針變量、數(shù)組變量等。8.int*int*解析:從題中代碼可知:z應(yīng)該是一個整型指針,因此應(yīng)填int*。9.67G67G解析:根據(jù)題意,a='A'+'5'*3'=65+2=67,b=67+4=71,71即為字母G的ASC□碼值。程序要求按十進(jìn)制形式輸出@按字符形式輸出b,所以結(jié)果為67Go10.8181解析:本題的宏調(diào)用S(i+j)將被替換成表達(dá)式4*i+j*i+j+l等于4*6+8*6+8+1=24+48+8+1=81。所以本題輸出81。11.C將兩個字符串連接起來組成一個字符串,選用strcat函數(shù)來連接。12.D解析:C語言的宏定義包括不帶參數(shù)的宏定義與帶參數(shù)的宏定義。本題為帶參數(shù)的宏定義,其形式為:^define宏名(形參表)字符串本題的M(a+b,b+c,c+a)被字符串a(chǎn)+b*b+c+c+a代替。13.A軟件危機(jī)主要表現(xiàn)在:軟件需求的增長得不到滿足;軟件開發(fā)成本和進(jìn)度無法控制;軟件質(zhì)量難以保證;軟件不可維護(hù)或維護(hù)程度非常低;軟件的成本不斷提高;軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長。所以選擇A。14.C解析:計算機(jī)語言分為低級語言、匯編語言和高級語言,C語言屬于高級語言,但并不是說C語言比其他語言高級,所以選項A錯誤;除了低級語言外,其他各種語言都必須譯成能被計算機(jī)識別的二進(jìn)制數(shù)才能執(zhí)行,選項B錯誤;C語言出現(xiàn)從1972年到1973年間,并不是出現(xiàn)最晚的語言,所以選項D也是錯誤的。15.B16.A本題主要考查自加減運(yùn)算符(++,--)的使用。①如果作為前綴變量“++a,--a”,在使用a之前,先使a的值加1或者減1,再使用表達(dá)式的值參與運(yùn)算;②后綴變量%++,a--”,先使用表達(dá)式的值參與運(yùn)算,在使用a之后,再使i的值加1或者減1。在本題中計算表達(dá)式c=(a++)-l時先使用a的值進(jìn)行計算,結(jié)果為c=2-1=1,然后將a的值加1,即執(zhí)行完此句后13-的值是3;表達(dá)式c+=-a+++(++b)也可寫成C=c+(—a++)+(++b),c=l+(—3)+3=1,此時a=4,b=3o17.C18.A19.A20.D層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu),網(wǎng)狀模型是一個不加任何條件限制的無向圖,關(guān)系模型采用二維表來表示,所以三種數(shù)據(jù)庫的劃分原則是數(shù)據(jù)之間的聯(lián)系方式。21,\n\tvoidproc(intm,int*a,int*n)\n{\ninti,j=0;\nfor(i=l;i<=m;i++)//進(jìn)行m次循環(huán)\nif(i%7==0lli%ll==0)//能被7或11整除的所有整數(shù)\na[j++]=i;

//符合條件的數(shù)放在數(shù)組a中\(zhòng)n*n=j;//返回這些數(shù)的個數(shù)\n}\n【解析】本題需要先判斷1?m每一個整數(shù)能否被7或11整除,然后將符合條件的整數(shù)放在數(shù)組a中,最后將符合條件的數(shù)的個數(shù)通過形參n返回主函數(shù)。\n22.\n\tvoidproc(chararr[M][N],char*b)\n{\ninti,j,k=0;\nfor(i=0;i<M;i++)//i表示其行下標(biāo)\nfor(j=0;.rr[i][j]!=\O;j++)//由于每行的個數(shù)不等,因此用a[i][j]!=\O來作為循環(huán)結(jié)束的條件\nb[k++]=arr[il[j];

//把二維數(shù)組中的元素茄到b的一維數(shù)組中,\nb[k]=\O;

//最后把b賦'。作為字符串結(jié)束的標(biāo)志\n}\n【解析】字符串?dāng)?shù)組中每一行都是一個一個完整的字符串,其結(jié)束標(biāo)志為\0。因此,通過字符串的結(jié)束標(biāo)志來判斷每一個字符串是否結(jié)束,將字符串?dāng)?shù)組中的所有字符串均賦值新的一維數(shù)組b來完成字符串的合并。\n23.【解析】題目中要求把下標(biāo)從p到n的數(shù)組元素平移到數(shù)組的前面,可以通過每一次循環(huán)將最后一個元素放在第一個位置上,使其成為第―個元素,其余元素后移一個位置。通過n1次循環(huán)實(shí)現(xiàn)將從p到n1的數(shù)組元素平移到數(shù)組的前面。24.【解析】我們應(yīng)定義一個變量表示其和,一個變量表示其分?jǐn)?shù),由題目中可知循環(huán)結(jié)束的標(biāo)志為分?jǐn)?shù)小于eps,因此其為循環(huán)結(jié)束的條件,根據(jù)公式的變化規(guī)律,可求得s,最后把2*s返回到主函數(shù)中。25.【考點(diǎn)分析】要刪除字符串中所有*號需要用循環(huán)語句遍歷字符串,用判斷語句判斷字符是否為*號,由此可以決定該程序應(yīng)使用循環(huán)判斷結(jié)構(gòu)?!窘忸}思路】26.【解析】要找到所有學(xué)生中成績低于平均分?jǐn)?shù)的人數(shù),首先需要算出所有學(xué)生的平均成績。然后將所有學(xué)生的成績與平均成績相比較。將低于平均分?jǐn)?shù)學(xué)生的記錄存放在新的數(shù)組中,并將低于平均分?jǐn)?shù)的學(xué)生數(shù)返回給主函數(shù)。27.voidpracichar?f口){inii?j=O.k=Mirlen(5itrJ4.//k是放字骨申的長度krti=lii<h;i=i-F2>//(=示為奇敝i口十〃把下斷為爵數(shù)的到〔ft貌中i[j]=Vi「明為t是字位串,因世必頊用」3【解析】題目要求將下標(biāo)為偶數(shù)的字符刪除,其余字符放在新的字符數(shù)組t中。首先取出字符串str中下標(biāo)為奇數(shù)的字符,將其賦值給新的字符串t,最后用’\0,作為字符串結(jié)束的標(biāo)志。28.voidfun(inta[3][3],intb[3][3])(inti,j;for(i=0;i<3;i++)for(j=0;j<3;j++)b[i][j]=a[i][j]+aU][i];/*把矩陣a加上a的轉(zhuǎn)置,存放在矩陣13中*/}行列數(shù)相等的二維數(shù)組的轉(zhuǎn)置就是行列互換。即轉(zhuǎn)置后的第i行第j列正好對應(yīng)原矩陣的第j行第i列。本題使用兩層循環(huán)實(shí)現(xiàn)矩陣的轉(zhuǎn)置,并將計算結(jié)果存入矩陣b中,外層循環(huán)控制矩陣的行下標(biāo),內(nèi)層循環(huán)控制矩陣的列下標(biāo)。29.doublefun(doubleeps)doubles=0.0,sl=1.0;intn=l;while(sl>=eps)/*當(dāng)某項大于精度要求時,繼續(xù)求下一項*/(s=s+sl;/*求和*/sl=sl*n/(2*n+l);/*求多項式的每一項*/n++;}return2*s;}該題考核的是通過迭代法求給定多項式的值。迭代法是讓計算機(jī)對一組指令(或一定步驟)進(jìn)行重復(fù)執(zhí)行,在每次執(zhí)行這組指令(或這些步驟)時,都從變量的原值推出它的一個新值。需要注意變量的數(shù)據(jù)類型和賦初值操作。定義double類型變量s,并為其賦初值,用來存放多項式的某一項和最后的總和。從第2項開始,以后的每一項都是其前面一項乘以n/(2*n+l)。程序用si來表示每一項,用s表示求和后的結(jié)果。需注意變量si和s的初值都為1.0,因為循環(huán)變量從第2項開始累加。30.【解析】本題比較簡單,因為題目中已經(jīng)給出了算法,只要把題目中的說法轉(zhuǎn)換成C語言表達(dá)式基本上就出來了,本題最好用do-while循環(huán)來做,但要注意循環(huán)終止的條件。31.(1)錯誤:if(strcmp((pstr+i)(pstr+j))<0)正確:if(strcmp(*(pstr+i)*(pstr+j))<0)⑵

錯誤:*(pstr+j)=*p;正確:*(pstr+j)=p;⑴錯誤:if(strcmp((pstr+i),(pstr+j))<0)正確:if(strcmp(*(pstr+i),*(pstr+j))<0)\r\n(2)錯誤:*(pstr+j)=*p;正確:*(pstr+j)=p;解析:錯誤1:本題旨在考查指針的引用方法。*(pstr+i)指字符串中下標(biāo)為i的字符。錯誤2:*p是字符類型,而*(pstr+j)是指針類型,二者不能進(jìn)行賦值運(yùn)算。32.⑴錯誤:a=NuLL;正確:a=NULL;⑵錯誤;if(r==p){r++;p++;}正確if(*r==*p){r++;p++;}(l)錯誤a=NuLL;正確:a=NULL;\r\n(2)錯誤;if(r==p){r++;p++;}正確:if(*r==*p){r++;p++;}解析:題目要求將最后—次出現(xiàn)的輸入字符后面的字符串做一復(fù)制處理,并在主函數(shù)中輸出從此地址開始的字符串。a=NuLL;是明顯的常識性錯誤。題目中已經(jīng)定義了指針變量chaf*p,*r,*a;,循環(huán)條件應(yīng)該是if(*r==*p){r++;p++;},而非iRf(r==p){r++;p++;}。33.(l)while(i<j)或while(j>i)(2)if(*a)(l)while(i<j)或while(j>i)⑵if(*a)解析:本題中函數(shù)的功能是首先把b所指字符串中的字符按逆序存放,然后將a所指字符串中的字符和b所指字符串中的字符,按排列的順序交叉合并到c所指數(shù)組中,過長的剩余字符接在c所指數(shù)組的尾部。其中,對于字符串的逆序過程,分別用變量i和j代表字符串中開始和末尾字符的下標(biāo),把下標(biāo)i和j元素中的值對調(diào)后,i++和j-直到i的值大于j時逆序操作完成。34.錯誤:printf(n%3dnm[j]*10);正確:printf(,,%3dnm[j]=m|j]*l0錯誤:printH'%3dm[j]*10);正確:printf(,%3d,m[j]=m[j]*10解析:本題考查全局變量相關(guān)知識。該題程序中的fUn()沒有參數(shù)輸入,但數(shù)組m[10]為全局變量,故可在fUn()函數(shù)中使用,fUn()函數(shù)對數(shù)組m的操作可以反映到主函數(shù)的輸出結(jié)果中。35.錯誤:a[i+l]=a[i];正確:a[i]=a[i+l];錯誤:a[i+l]=a[i];正確:a[i]=a[i+l];解析:上機(jī)改錯題有一個優(yōu)勢,就是我們可以執(zhí)行該程序,根據(jù)錯誤的提示再一步一步實(shí)現(xiàn)改錯的目的,我們先不看程序是什么意思,甚至不用看它在求什么。按Ctrl+F9快捷鍵,然后看看屏幕提示。另夕卜,審題時我們必須要注意“不要改動main()函數(shù),不得增行或減行,也不得更改程序結(jié)構(gòu)”,這樣;對我們來說,只要讀懂題意,對程序執(zhí)行部分:{intp=0

溫馨提示

  • 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

提交評論