![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
江蘇計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言考前模擬試卷第2套 |
考試模擬2 1.下面關(guān)于集成電路(IC)的說(shuō)法中錯(cuò)誤的是_______(1)_______ A.集成電路是現(xiàn)代信息產(chǎn)業(yè)的基礎(chǔ) B.現(xiàn)代PC機(jī)中使用的微型處理器都是超大規(guī)模或極大規(guī)模集成電路 C.集成電路的特點(diǎn)是體積小,重量輕,可靠性強(qiáng) D.IC卡分存儲(chǔ)器卡與智能卡(CPU卡),比如手機(jī)的SIM卡就是一種存儲(chǔ)器卡 2.下面關(guān)于通信技術(shù)的敘述中,錯(cuò)誤的是_________(2)________ A.數(shù)字通信是當(dāng)代通信技術(shù)的主流,它比模擬通信更能適應(yīng)現(xiàn)代社會(huì)的要求 B.計(jì)算機(jī)網(wǎng)絡(luò)中采用的最基本的多路復(fù)用技術(shù)是時(shí)分多路復(fù)用技術(shù) C.信息在光纖中傳輸時(shí),每隔一定距離需要加入中繼器,將信號(hào)放大后再繼續(xù)傳輸 D.無(wú)線(xiàn)通信可以按頻率分成中波,短波,超短波和微波,其中微波的波長(zhǎng)很短,通常在 3.Pentinum處理器中的一個(gè)16位帶符號(hào)整數(shù),如果它的十六進(jìn)制數(shù)是FFF0,那么它的實(shí)際數(shù)值是________(3)____ A.-16 B 4.下面關(guān)于微處理器的敘述中不正確的是___(4)______ A.微處理器通常以單片集成電路制成 B.它具有運(yùn)算和控制功能,但不具備數(shù)據(jù)存儲(chǔ)功能 C.Pentinum4及其兼容的微處理器是目前PC機(jī)中使用最廣泛的一種處理器 D.Intel公司是國(guó)際上研制、生產(chǎn)CPU最著名的公司 5.下面關(guān)于PC機(jī)的主機(jī)敘述不正確的是_________(5)________ A.RAM代表隨機(jī)存取存儲(chǔ)器,ROM代表只讀存儲(chǔ)器,關(guān)機(jī)后前者所有存儲(chǔ)的信息會(huì)丟失,而后者不會(huì) B.保存在BIOS中的自舉程序的功能是裝入操作系統(tǒng) C. 數(shù)碼相機(jī)和優(yōu)盤(pán)中使用的芯片類(lèi)型是Flash Rom D.I/O總線(xiàn)上有三類(lèi)信號(hào):數(shù)據(jù)信號(hào)、地址信號(hào)和控制信號(hào) 6. .磁盤(pán)存儲(chǔ)器的下列敘述中,錯(cuò)誤的是____(6)____。 A磁盤(pán)盤(pán)片的表面分成若干個(gè)同心圓,每個(gè)圓稱(chēng)為一個(gè)磁道 A. 硬盤(pán)上的數(shù)據(jù)存儲(chǔ)地址由兩個(gè)參數(shù)定位:磁道號(hào)和扇區(qū)號(hào) B. 硬盤(pán)的盤(pán)片、磁頭及驅(qū)動(dòng)機(jī)構(gòu)全部密封在一起,構(gòu)成一個(gè)密封的組合件 C. 每個(gè)磁道分為若干個(gè)扇區(qū),每個(gè)扇區(qū)的容量一般是512字節(jié) 7. 在下列幾種存儲(chǔ)器中,速度慢、容量小的是_____(7)___。 A. 優(yōu)盤(pán) B. 光盤(pán)存儲(chǔ)器 C. 硬盤(pán)存儲(chǔ)器 D.軟盤(pán)存儲(chǔ)器 8.下列有關(guān)操作系統(tǒng)作用的敘述中,正確的是___(8)____。 A. 有效地管理計(jì)算機(jī)系統(tǒng)的資源是操作 系統(tǒng)的主要作用之一 B. 操作系統(tǒng)只能管理計(jì)算機(jī)系統(tǒng)中的軟件資源,不能管理硬件資源 C. 操作系統(tǒng)提供的用戶(hù)界面都是圖形用戶(hù)界面 D. 在計(jì)算機(jī)上開(kāi)發(fā)和運(yùn)行應(yīng)用程序與安裝和運(yùn)行的操作系統(tǒng)無(wú)關(guān) 9.下面關(guān)于算法和數(shù)據(jù)結(jié)構(gòu)的敘述中,錯(cuò)誤的是___(9)__________ A.算法的基本特征是:確定性,有窮性,能行性,輸出 B.算法的一個(gè)顯著特征是,它解決的是一個(gè)問(wèn)題而不是一類(lèi)問(wèn)題 C.算法的好壞除了考慮正確性外,還要看執(zhí)行算法所占用的空間資源 D.數(shù)據(jù)結(jié)構(gòu)研究如何根據(jù)實(shí)際問(wèn)題組織數(shù)據(jù)與定義新數(shù)據(jù)類(lèi)型,與具體的程序設(shè)計(jì)語(yǔ)言無(wú)關(guān) 10. 以太網(wǎng)是一種使用的最廣泛的局域網(wǎng),下面是關(guān)于以太網(wǎng)的敘述, ①以太網(wǎng)的節(jié)點(diǎn)每次只能發(fā)送一幀信息 ②以太網(wǎng)中的每個(gè)節(jié)點(diǎn)都有一個(gè)唯一的地址,發(fā)送每一幀信息時(shí),必須包含自己的地址和接收節(jié)點(diǎn)的地址,該地址就是IP地址 ③以太網(wǎng)的數(shù)據(jù)傳輸速率為10Mbps—100Mbps,甚至更快 ④以太網(wǎng)大多使用集線(xiàn)器組網(wǎng),網(wǎng)絡(luò)中每一個(gè)節(jié)點(diǎn)通過(guò)網(wǎng)卡和雙絞線(xiàn)與集線(xiàn)器連接 正確的是_________(10)______ A. ①③④ B. ①② C. ①②③④ D①④ 11.廣域網(wǎng)是一種跨越很廣的的計(jì)算機(jī)網(wǎng)絡(luò),下面關(guān)于廣域網(wǎng)的敘述中,正確的是______(11)_____ A.廣域網(wǎng)是一種公用計(jì)算機(jī)網(wǎng),所有計(jì)算機(jī)都可無(wú)條件的接入廣域網(wǎng) B.廣域網(wǎng)使用專(zhuān)門(mén)的通信線(xiàn)路,數(shù)據(jù)傳輸更高 C.廣域網(wǎng)能連接任意多的計(jì)算機(jī),也能將相距任意距離的計(jì)算機(jī)互相連接起來(lái) D.廣域網(wǎng)像很多局域網(wǎng)一樣按廣播方式通信 12.能將異構(gòu)的計(jì)算機(jī)網(wǎng)絡(luò)互相連接起來(lái)的基本設(shè)備是________(12)________ A.中繼器 B.路由器 C.集線(xiàn)器 D.調(diào)制解調(diào)器 13.以下關(guān)于因特網(wǎng)提供的服務(wù),錯(cuò)誤的是_______(13)______ A.電子郵件必須要有郵件服務(wù)器才能使用,郵件服務(wù)器程序包括SMTP協(xié)議與POP3協(xié)議 B.Web服務(wù)器中的網(wǎng)頁(yè)采用的是http超文本傳輸協(xié)議傳輸 C.把網(wǎng)絡(luò)上一臺(tái)計(jì)算機(jī)中的文件移動(dòng)到另外一臺(tái)計(jì)算機(jī)中,稱(chēng)為遠(yuǎn)程文件傳輸,簡(jiǎn)稱(chēng)mailto D.遠(yuǎn)程登錄的含義是用戶(hù)可以把自己的機(jī)器作為一個(gè)終端,通過(guò)因特網(wǎng)連接到遠(yuǎn)程的計(jì)算機(jī)上,就可以使用這臺(tái)計(jì)算機(jī)了,使用的協(xié)議是Telnet 14.下面對(duì)漢字編碼標(biāo)準(zhǔn)敘述錯(cuò)誤的是______(14)_____ A.采用GB2313,GBK,和GB18030三種不同的漢字編碼標(biāo)準(zhǔn)時(shí),一些常用的漢字如”中”,”國(guó)”等,它們?cè)谟?jì)算機(jī)中的表示(內(nèi)碼)都是相同的 B.GB2312,GBK主要在我國(guó)大陸使用,而臺(tái)灣、香港地區(qū)使用的是BIG5漢字編碼 C.GBK漢字編碼比GB2312的漢字多,已經(jīng)得到了較好的應(yīng)用,微軟公司的Windows操作系統(tǒng)均支持GBK編碼 D.Unicode是包含的漢字比GB18030的漢字多 15.下面關(guān)于圖像壓縮編碼的敘述中,錯(cuò)誤的是_____(15)_____ A.圖像壓縮編碼的目的是為了節(jié)省壓縮容量和減少在網(wǎng)絡(luò)上的傳輸時(shí)間 B.圖像數(shù)據(jù)壓縮都是有損的,重建的圖像與原始圖像不會(huì)相同 C.大多數(shù)圖像文件都對(duì)圖像進(jìn)行了壓縮編碼 D.GIF與JPEG是常用的兩種文件格式,Gif圖像是無(wú)損壓縮,JPEG圖像是有損壓縮 16.下面關(guān)于計(jì)算機(jī)輸入輸出聲音信息的敘述中,錯(cuò)誤的是_____(16)_____ A.聲卡的主要功能是實(shí)現(xiàn)波形聲音和MIDI聲音的輸入和輸出 B.無(wú)論是波形聲音還是MIDI聲音的輸入,都需要使用麥克風(fēng) C. 無(wú)論是波形聲音還是MIDI聲音的輸出,都需要使用揚(yáng)聲器 D.波形聲音和MIDI聲音可以混合在一起進(jìn)行輸出 17.數(shù)字視頻信息的數(shù)據(jù)量很大,目前DVD光盤(pán)上存儲(chǔ)的數(shù)字視頻應(yīng)用存儲(chǔ)的數(shù)字視頻采用的壓縮編碼標(biāo)準(zhǔn)是____(17)________ A.MPEG-1 B.MPEG 18.用結(jié)構(gòu)化生命周期方法進(jìn)行信息系統(tǒng)開(kāi)發(fā),一般經(jīng)過(guò)五個(gè)階段,其正確順序?yàn)?/SPAN>____(18)__ A.系統(tǒng)分析,系統(tǒng)規(guī)劃,系統(tǒng)設(shè)計(jì),系統(tǒng)實(shí)施,系統(tǒng)維護(hù) B. 系統(tǒng)規(guī)劃,系統(tǒng)分析,系統(tǒng)設(shè)計(jì),系統(tǒng)實(shí)施,系統(tǒng)維護(hù) C. 系統(tǒng)分析,系統(tǒng)規(guī)劃,系統(tǒng)設(shè)計(jì),系統(tǒng)維護(hù),系統(tǒng)實(shí)施 D. 系統(tǒng)分析,系統(tǒng)設(shè)計(jì),系統(tǒng)規(guī)劃,系統(tǒng)實(shí)施,系統(tǒng)維護(hù) 19. 在下列有關(guān)Microsoft Office 2000的應(yīng)用程序功能的敘述中,正確的是___(19)____。 A.Word和Excel編輯的文檔均可以另存為HTML語(yǔ)言 B.Word可以直接讀取Excel文檔(.xls),且Excel可以直接讀取Word文檔(.doc) C.Word與Excel均支持表格的自動(dòng)填充功能 D.用戶(hù)不能利用“剪切板”功能在Word與Excel編輯的文檔之間進(jìn)行交換數(shù)據(jù) 20在使用Microsoft Word 97/2000編輯文檔時(shí),如果需要打印當(dāng)前文檔的第4、6-8頁(yè),則應(yīng)___(20)_____,然后在出現(xiàn)的對(duì)話(huà)框中設(shè)置需打印的頁(yè)碼。 A.使用菜單命令“文件/打印” B.單擊“常用”工具欄上的“打印”按鈕 C.按鍵盤(pán)上的PrtSc(PrintScreen)鍵 D.按組合鍵ALT+PrtSc(PrintScreen) C語(yǔ)言部分 21.在定義任何一個(gè)函數(shù)時(shí),下列選項(xiàng)中,______________是不可缺少的 A.函數(shù)名之前的數(shù)據(jù)類(lèi)型 B.函數(shù)名之后的一對(duì)圓括號(hào) C.形式參數(shù)聲明 D.函數(shù)體內(nèi)的語(yǔ)句 22.已知某程序如下: float p=1.5; #define p 2.5 main() {printf("%f",p);} 則main函數(shù)中標(biāo)識(shí)符P代表的操作數(shù)是(22) 。 A.float型變量 B.double型變量 C.float型常量 D.double型常量 23.已有聲明"int s[2][3]",以下選項(xiàng)中(23)正確地引用了數(shù)組S中的基本元素。 A.S[1>2][!1] B.S[2][0] C.S[1] D.S 24.已有數(shù)據(jù)類(lèi)型定義和變量聲明如下: struct person { int num; char name[20],sex; strrut{int class;char prof[20];}in; }a={20,"Li ning",'M',{5,"computer"}},*P=&a; 下列語(yǔ)句中正確的是(24) A•printf("%s",a->name); B.printf("%s",P->in.prof); C•printf("%s",*p.name); D.printf(" Ctr P->in->prof); 25.若有以下程序: int x: int f(int Y) {return 標(biāo)識(shí)符;} #include<stdio.h> int w: main() {int z=2;f(z);…} 則在函數(shù)f中return語(yǔ)句后允許出現(xiàn)的標(biāo)識(shí)符是 (25) 。 A.x或w B.x或y C.z或w D.NULL 26.邏輯"異或"運(yùn)算可描述為"a xor b",其中a和b為參加運(yùn)算的兩個(gè)操作數(shù),運(yùn)算結(jié)果為當(dāng) 且僅當(dāng)a、b兩個(gè)操作數(shù)中只有一個(gè)為真時(shí)才為真,其他情況下均為假。以下表達(dá)式中 (26)可以正確表示邏輯"異或"運(yùn)算。 A.a||b B.a&&b C.(a&&b)&&!(a||b) D.(a||b)&&!(a&&b) 27.若有聲明"int a [5],*b=a,(*c)[3],*d[3];",則在以下表達(dá)式中有語(yǔ)法錯(cuò)誤的是 (27) 。 A.a[0]=0 B.b[0]= 28.若有聲明: int k,a,b; unsigned long y=5; double x=1.23; 則以下表達(dá)式中正確的是(28) 。 A.x%(-5) B.x=y[6] C.k=(a=l,b=2,&a+&b) D.a+=a-=(b=2)*(a=3) 29.以下跳轉(zhuǎn)語(yǔ)句中,只有 (29) 可以選擇不唯一的跳轉(zhuǎn)目的地。 A.continue; B.break; ’C.goto標(biāo)識(shí)符; D•return; 30.在缺省情況下,標(biāo)準(zhǔn)C的編譯系統(tǒng)中預(yù)定義的標(biāo)準(zhǔn)輸出流stdout直接連接的設(shè)備是 (30) 。 A.軟盤(pán) B.硬盤(pán) C.鍵盤(pán) D.顯示器 二、填空題(請(qǐng)將答案填寫(xiě)在答題紙的相應(yīng)答題號(hào)內(nèi),每個(gè)答案只占一行) ●基本概念題(共5分) 1.在聲明變量時(shí),類(lèi)型修飾符unsigned一般用于修飾基本類(lèi)型中的int和____(1)_________。 2.已知某程序中有如下片段: int i;float f; /*P的聲明*/ P=&i;P=&f; 若要保證該段程序沒(méi)有任何語(yǔ)法錯(cuò)誤,P應(yīng)當(dāng)聲明為( 2 ) 3.已有聲明"float x;double y;int a;long b;chat c;",則表達(dá)式x+y*a/x+b/y+c值的類(lèi)型為(3) 4.系統(tǒng)庫(kù)函數(shù)scanf和gets在被調(diào)用執(zhí)行時(shí)都可以讀取從鍵盤(pán)輸入的一串?dāng)?shù)字字符,其中函數(shù) (4)具有將讀取的數(shù)字字符串轉(zhuǎn)換為整型數(shù)的功能。 5.在文件中,以符號(hào)常量EOF作為文本文件(字符流文件)的結(jié)束標(biāo)記,EOF代表的值是( 5 ) ●閱讀程序題(共11分) 6.以下程序運(yùn)行時(shí)輸出結(jié)果是( 6 ) 。 #define PT 3.14 #define S(x) PT*x*x main() ’ {int a=2; printf("% } 7.已知int型變量的存儲(chǔ)字節(jié)數(shù)為2,以下程序運(yùn)行時(shí)輸出結(jié)果是( 7 )。 #include<stdio.h> main() {int a=3,b=2,c=7,d=6,e=8; long f=a*10000+b*1000+c*100+d*10+e; printf("%ld",f); } 8.以下程序運(yùn)行時(shí)輸出結(jié)果是( 8 ) 。 #include<stdio.h> main() {char *P="student"; if(P=="student") printf("yes"); else printf("no"); } 9.以下程序運(yùn)行時(shí)輸出結(jié)果是( 9 )。 #include<ctype.h> #include<stdio.h> main() {char *s=" int k=0,a=0,b=0; do {if(isdigit(s[k])) {if(s[k]%2==0) {a=a+s[k]-'0'; continue; } a=a+s[k]-'0';b=b+s[k]-'0'; } }while(s[k+1]&&++k); printf("%d,%d,%d\n",k,a,b); } 10.以下程序運(yùn)行時(shí)輸出結(jié)果是(10) 。 #include<stdio.h> int f(int a[],int m,int b[],int n,int c[]) {int i,j,k=0,t; for(i=0;i<m;i++) {for(t=1,j=0;j<n;j++) if(a[i]==b[j]) {t=O;break;} if(t) c[k++]=a[i]; } return k; } void main() {int x[]={7,2,3,6,5,4,1},y[]={5,10,7,9,8,6},z[10],w,j; w=f(x,7,y,6,z); for(j=0;j<w;j++)printf("%d",z[j]); } 11.以下程序運(yùn)行時(shí)輸出結(jié)果是(11) void fun(int *p1,int *p2); main() {int i,a[6]={1,2,3,4,5,6}; fun(a,a+5); for(i=O;i<5;i++) printf("%2d",a[i]); } void fun(int *pl,int *p2) {int t; if(pl<p2) . { t=*p1,*pl=*p2;*p2=t; fun(p1+=2,p2-=2); } } 12.以下程序運(yùn)行時(shí)輸出結(jié)果的第一行是 ( 12 ) ,第二行是( 13 )。 void swap(int *a,int *b) {int c; c=*a; *a=*b; *b=c; } main() {int i,j,a[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0:i<2:i++) for(j=0;j<2-i;j++) if(i==j) swap(&a[i][j],&a[i+2][j+2]); else swap(&a[i][j],&a[i+1][j+1]); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%d",a[i][j]); printf("\n"); } } 13.以下程序運(yùn)行時(shí)輸出結(jié)果的第一行是 ( 14 ) ,第二行是 ( 15 ) ,第三行是(16 ) 提示:函數(shù)int toupper(int ch)的功能是:將小寫(xiě)字母字符轉(zhuǎn)換為對(duì)應(yīng)的大寫(xiě)字母字符。 #include<stdio.h> #include<ctype.h> long fun(char *s) {long n,sign,base=10,t; for(;isspace(*s);s++); sign=(*s=='-')?-1:1; if(*s=='+'||*s=='-')s++; if(*s=='0'&&s++) {if(*s=='x||*s=='X') {base=16;S++;} else base=8; } for(n=0,t=1;t&&(isdigit(*s)||isalpha(*s));s++) switch(base) {case 10:if(isdigit(*s)) n=n*base+*s-'0'; else t=0; break: case 8:if(*s>='0'&&*s<='7')n=n*base+*s-'0'; else t=0: break; default:if(isdigit(*s))n=n*base+*s-'0'; else if(toupper(*s)>='A'&&toupper(*s)<='F') n=n*base+toupper(*s)-'A'+lO; else t=0; } return sign*n: } main() {char c1[]="0x printf("%ld\n%ld\n%ld",fun(c1),fun(c2),fun(c3)); } ●完善程序題(共14分) 14.程序中函數(shù)double,mycos(double x)的功能是:根據(jù)下列公式計(jì)算cos(x)的近似值。 cos(x)=1-x^2/2!+x^4/4!-x^6/6!+....+(-1)^n*(x^2*n/(2*n)!) 精度要求:當(dāng)通項(xiàng)的絕對(duì)值小于等于10^-6時(shí)為止。 #include<stdio.h> #include< ____(17)____________> . double mycos(double x) . {int n=1; double sum=0,term=1.0; while( ___(18)_________ >=le-6) {sum+=term; term*= ___(19)_________ ; n=n+2: } return sum; } main() {double x; scanf("%lf",&x); printf("fx(%f)=%f,%f\n",x,mycos(x),cos(x)); } 15.main函數(shù)內(nèi)結(jié)構(gòu)數(shù)組P中的元素已按結(jié)構(gòu)成員index的值升序排列。以下程序先在P中插入s1和s2兩組數(shù)據(jù),再將數(shù)組的所有元素輸出。要求插入數(shù)據(jù)后數(shù)組p中的元素仍按 結(jié)構(gòu)成員index的值升序排列。 #include<stdio.h> typedef struct s {int index; char text[10]; }T; int inserttv(T *p,T s,int n) {int k,j; for(k=0;k<n;k++) if( 20 )>s.index) {for(j=n;j>k;j--)p[j]=p[j一1]; break; } ( 21 ) =s; return n+1; } main() {int n; T p[8]={{0,"a",},{5,"t",},{10,"e",},{15,"r"}}; T s1={3,"f"},s2={16,"s"},*q; n=inserttv(p,s2, __________(22)__________ ); for(q=p;q<p+n;q++)printf("%d%s\n",q->index,q->text); } 16.以下程序的功能是:查找所有滿(mǎn)足以下條件的兩個(gè)整數(shù)對(duì):(1)兩個(gè)整數(shù)都是3位數(shù);(2) 組成兩個(gè)整數(shù)各位的數(shù)字各不相同并且不出現(xiàn)數(shù)字O;(3)第二個(gè)數(shù)等于第一個(gè)數(shù)的兩 倍。例如,134和268就是滿(mǎn)足該條件的一個(gè)整數(shù)對(duì)。 main() {int a,b,c,j,k,w,s[6],sum; for(a=1;a<=5;a++) /*a百位,b十位,c個(gè)位*/ for(b=1;b<=9;b++) for(c=1;c<=9;c++) {s[o]=a;s[1]=b;s[2]=c; sum= ____(23)_________ ; sum=2*sum; if(sum>999) continue; s[3]= ______(24)_____________ ; s[4]=(sum-s[3]*100)/10; s[5]=sum%10; _____(25)___________________ ; for(j=0;j<5;j++) for(k=0;k<6;k++) if(s[k]==0||j!=k&& ___(26)____________ w=0; if(w) for(k=0;k<2;k++) printf("%d%d%d\n",s[k*3],s[k*3+1],s[k*3+2]); } } 17.設(shè)有一個(gè)線(xiàn)性單鏈表的結(jié)點(diǎn)定義如下: struct node {int d; struct node next; }; . 函數(shù)int copy_dellist(struct node *head,int x[])的功能是:將head指向的單鏈表中存儲(chǔ)的所有 整數(shù)從小到大依次復(fù)制到x指向的整型數(shù)組中并撤消該鏈表;函數(shù)返回復(fù)制到x數(shù)組中的整 數(shù)個(gè)數(shù)。算法:找出鏈表中數(shù)值最小的結(jié)點(diǎn),將其值存儲(chǔ)到x數(shù)組中,再將該結(jié)點(diǎn)從鏈表中刪 除,重復(fù)以上操作直到鏈表為空為止。 int copy_dellist(struct node *head,int x[]) {struct node *pk,*pj,*pm,*pn; int data,k=O; while(head!=0) {pk=head;data=pk->d;pn=pk; while(______(27)_______!=0) {pj=pk->next; if(_____(28)___________<data) {data=pj->d;pm=pk;pn=pj;} pk=pj; } x[k++]=pn->d; . if( ___29___________)pm->next=pn->next; else head=pn->next; free(pn); } . ____(30)__________________ ; } 參考答案 1.D2.D3.A4.B5.B6.B7.D8.A9.B10.A11.C12.C13.C14.D15.B16.B17.B18.B19.A20.A 21.B 22. D 23.A 24.B 25.B 26.D (1)char (2)void *p; (3)double (4) scanf (5)-1 (6)8.0 (7)-32768 (8) no (9)3, 9, 3 (10)2,3,4,1 (11)6,2,4,3,5,1 (12)9 6 3 (13)8 5 2 (14)31 (15)32 (16)-33 (17) math.h (18)fabs(term) (19)--x*x/(n*(n+1)) (20)p[k].index (21)p[k] (22)inserttv(p,s1,4) (23)a*100+b*10+c (24)sum/100 (25)w=1; (26)s[j]==s[k] (27)pk->next (28)pj->d (29)pn!=head (30)return k 一:改錯(cuò)題(20分) 題目: 函數(shù)find_replace的功能是:在s1串中查找s2子串,并用s3子串替換找到的所有s2子串,若s1串中沒(méi)有出現(xiàn)s2子串,則不做替換并使函數(shù)返回0,否則返回1. 例如:若s1子串為”This is a test program and a test data.”,s2子串為”test”,s3子串為”actual”,若程序正確,輸出結(jié)果應(yīng)為:”This is a actual program and a actual data.” 含有錯(cuò)誤的源程序如下: #include <stdio.h> #include <string.h> int find_replace(char *s1, char *s2, char s3) { int i,j,k=0,t=0; char temp[80]; if(*s1='\0' || *s2='\0') return t; for(i=0;s1[i]!='\0';i++) { for(j=0,k=0;s1[j]= =s2[k];j++,k++); /*比較s2是否在s1中*/ if(s2[k]= ='\0') { strcpy(temp, s1[j]); strcpy(&s1[i],s3); i=i+strlen(s3); strcpy(&s1[i],temp); t=1; } } return t; } main() { char line[80]="This is a test program and a test data.", substr1[10]="test",substr2[10]="actual"; puts(line); if(find_replace(line,substr1,substr2)) puts(line); else printf("not found"); } 編程題目: [題目] 1. 編寫(xiě)函數(shù)int encode(int a[ ][4]),對(duì)二維數(shù)組中左下三角的全部元素(包括對(duì)角線(xiàn)上的元素)做如下變換:(1)若該元素不是素?cái)?shù)則保持不變(2)若該數(shù)是素?cái)?shù),則用大于它的最小素?cái)?shù)替換該數(shù),函數(shù)返回二維數(shù)組左下三角的元素中素?cái)?shù)的個(gè)數(shù) 2. 編寫(xiě)main函數(shù),聲明一個(gè)二維數(shù)組并用以下測(cè)試數(shù)據(jù)給二維數(shù)組賦初值。調(diào)用encode函數(shù)對(duì)該數(shù)組作變換,將變換后的數(shù)組全部元素(以二維數(shù)組形式)及左下三角元素中素?cái)?shù)的個(gè)數(shù)寫(xiě)入文件myf2.out中 測(cè)試數(shù)據(jù) 3 6 4 7 8 5 9 10 12 19 7 20 4 14 21 23 變換后的數(shù)據(jù) 5 6 4 17 8 7 9 10 12 23 11 20 4 14 21 29 1.將源文件取名為myf2.c,輸出結(jié)果文件取名為myf2.out。 ‘ 2.?dāng)?shù)據(jù)文件的打開(kāi)、使用和關(guān)閉等操作均用C標(biāo)準(zhǔn)庫(kù)中緩沖文件系統(tǒng)的文件操作函數(shù) 實(shí)現(xiàn)。 3.源程序文件和運(yùn)行結(jié)果文件均須保存在T:盤(pán)的根目錄下,供閱卷用。 4.不要將myf2.obj、myf2.exe保存到T:盤(pán)中。 改錯(cuò)題答案: (1) int find_replace(char *s1, char *s2, char s3) 修改為:int find_replace(char *s1, char *s2, char *s3) (2) if(*s1='\0' || *s2='\0') 修改為: if(*s1= ='\0' || *s2= ='\0') (3) for(j=0,k=0;s1[j]= =s2[k];j++,k++); 修改為:for(j=i,k=0;s1[j]= =s2[k];j++,k++); (4) strcpy(temp, s1[j]); 修改為: strcpy(temp, &s1[j]); 編程題答案: #include <stdio.h> #include <math.h> int prime(int n) /*判斷素?cái)?shù)算法*/ { int i,k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0) return 0; return 1; } int encode(int a[][4]) { int i,j,k=0; for(i=0;i<4;i++) for(j=0;j<=i;j++) if(prime(a[i][j])) { while(!prime(a[i][j]+=2));k++;/*求大于它的最小素?cái)?shù)*/ } return k; } main() { FILE *fp; int a[4][4]={3,6,4,17,8,5,9,10,12,19,7,20,4,14,21,23},i,j,count=0; if((fp=fopen("myf2.out","w"))==NULL) {printf("create file myf2.out failed!\n");exit(0);} count=encode(a); for(i=0;i<4;i++) { for(j=0;j<4;j++) {fprintf(fp,"%4d",a[i][j]); printf("%4d\n",a[i][j]); } fprintf(fp,"\n"); } fprintf(fp,"count=%4d\n",count); fclose(fp); } |