![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
2007年春季江蘇計(jì)算機(jī)C語(yǔ)言試題 |
2007年春江蘇省二級(jí)考試(C語(yǔ)言理論試題) (本試卷筆試時(shí)間為120分鐘) 說明: 1.本試卷包括計(jì)算機(jī)基礎(chǔ)知識(shí)部分和程序設(shè)計(jì)部分。 2.本試卷滿分為60分,分選擇題和填空題,試卷不分A、B類型。 3.計(jì)算機(jī)基礎(chǔ)知識(shí)部分全部是選擇題(20分),程序設(shè)計(jì)部分分為選擇題(10分)和填空 (30分)兩種。 4.選擇題用答題卡答題。每一項(xiàng)有A、B、c、D四個(gè)可供選擇的答案,請(qǐng)選擇其中一個(gè)你認(rèn) 正確的答案,用HB鉛筆或2B鉛筆涂寫在答題卡的相應(yīng)答題號(hào)內(nèi)。每選對(duì)一項(xiàng)得1分, 選或選錯(cuò)不得分。 5.填空題用答題紙答題。請(qǐng)將答案用藍(lán)色或黑色筆填寫在答題紙的相應(yīng)答題號(hào)內(nèi),每個(gè)答 只占一行,不得換行。每填對(duì)一個(gè)答案得1分,不填或填錯(cuò)不得分。 6.請(qǐng)認(rèn)真填寫并仔細(xì)核對(duì)答題卡和答題紙上的學(xué)校名稱、準(zhǔn)考證號(hào)和姓名。 7.考試結(jié)束時(shí)將試卷、答題卡和答題紙放在桌上,不得帶走。待監(jiān)考人員收畢清點(diǎn)后,方 離場(chǎng)。 第一部分基礎(chǔ)知識(shí) 1.微電子技術(shù)是信息技術(shù)領(lǐng)域的關(guān)鍵技術(shù),它以集成電路(Ic)為核心。下列有關(guān)敘述錯(cuò)誤 是(1) 。 A.目前Ic芯片(如CPU芯片)的集成度可達(dá)數(shù)千萬個(gè)電子元件 B.Moore定律指出,單塊IC的集成度平均每半年翻一番 c.從原料熔煉到最終產(chǎn)品包裝,IC的制造工序繁多,工藝復(fù)雜,技術(shù)難度非常高 D.非接觸式Ic卡采用電磁感應(yīng)方式無線傳輸數(shù)據(jù),所以又稱為射頻卡或感應(yīng)卡 2.下列有關(guān)通信中使用的傳輸介質(zhì)的敘述錯(cuò)誤的是(2) 。 A.計(jì)算機(jī)局域網(wǎng)中大多使用無屏蔽雙絞線,其無中繼有效傳輸距離大約 B.同軸電纜可用于傳輸電視信號(hào) . c.光纖價(jià)格高,一般不在校園網(wǎng)和企業(yè)網(wǎng)中使用 D.微波的波長(zhǎng)很短,適合于長(zhǎng)距離、大容量無線通信 3.二進(jìn)制數(shù)(1010)與十六進(jìn)制數(shù)(B2)相加,結(jié)果為(3) 。 A (273)8 B (274) 4.設(shè)有一段文本由基本ASCII字符和GB2312字符集中的漢字組成,其代碼為B A.1個(gè)漢字和9個(gè)西文字符 B.3個(gè)漢字和5個(gè)西文字符 C.2個(gè)漢字和7個(gè)西文字符 D 4個(gè)漢字和3個(gè)西文字符 5.下列有關(guān)CPU的敘述錯(cuò)誤的是(5)。 A.CPU的主要組成部分有運(yùn)算器、控制器和寄存器組 B.CPU的主要功能是執(zhí)行指令,不同類型CPU的指令系統(tǒng)通常有所不同 C.為了加快運(yùn)算速度,CPU中可包含多個(gè)算術(shù)邏輯部件(ALU) D.目前PC機(jī)所用的CPU芯片均為Intel公司的產(chǎn)品 6.PC機(jī)在加電啟動(dòng)過程中會(huì)運(yùn)行POST程序、引導(dǎo)程序、系統(tǒng)自舉程序等。若在啟動(dòng)過程中用戶按某一熱鍵(通常是Del鍵)則可以啟動(dòng)CMOS設(shè)置程序。這些程序運(yùn)行的順序是(6) A.POST程序--CMOS設(shè)置程序---系統(tǒng)自舉程序一-引導(dǎo)程序 B.POST程序--引導(dǎo)程序一-系統(tǒng)自舉程序---CMOS設(shè)置程序 C.CMOS設(shè)置程序一系統(tǒng)自舉程序_--引導(dǎo)程序--POST程序 D.POST程序--CMOS設(shè)置程序一引導(dǎo)程序---系統(tǒng)自舉程序 7.目前Pc機(jī)一般都有USB和FireWire接口,用于連接各種外部設(shè)備。下列關(guān)于這兩種接口的敘述錯(cuò)誤的是(7) A.USB是一種串行接口,可以連接鍵盤、鼠標(biāo)器、優(yōu)盤、數(shù)碼相機(jī)等多種設(shè)備 B.FireWire是一種并行接口,通常用于連接需要高速傳輸大量數(shù)量的設(shè)備(如音視頻設(shè)備) C.USB 2.0的數(shù)據(jù)傳輸速率是USB 1.0的數(shù)十倍 D.一個(gè)USB接口上可以連接不同的設(shè)備 。 8.下列關(guān)于PC機(jī)外存儲(chǔ)器的敘述錯(cuò)誤的是(8) A.1.44MB軟盤的每一面有吞0個(gè)磁道,每個(gè)磁道分為18個(gè)扇區(qū),每個(gè)扇區(qū)512字節(jié) B.硬盤的主要性能指標(biāo)之一是平均存取時(shí)間,它與硬盤的轉(zhuǎn)速(rpm)有很大關(guān)系。 c.優(yōu)盤的缺點(diǎn)是:優(yōu)盤均無寫保護(hù)功能,且不能起到引導(dǎo)操作系統(tǒng)的作用 D.cD-R是目前常用的可記錄式光盤,但其該錄的數(shù)據(jù)不能修改 9.下列關(guān)于Windows 98/XP操作系統(tǒng)的存儲(chǔ)管理功能的敘述錯(cuò)誤的是.(9) A.存儲(chǔ)管理的功能主要包括內(nèi)存的分配與回收、共享和保護(hù)、自動(dòng)擴(kuò)充(虛存的實(shí)現(xiàn))等 B.系統(tǒng)將程序(及其數(shù)據(jù))劃分成固定大小的頁(yè)面,以頁(yè)面為單位進(jìn)行內(nèi)存的分配和調(diào)度 c.虛擬存儲(chǔ)器采用的頁(yè)面調(diào)度算法是“先進(jìn)先出”(FIFO)算法 D.在Windows 98和Windows XP中,虛擬內(nèi)存其實(shí)就是一個(gè)磁盤文件,即“交換文件” 10.人們常說“軟件的主體是程序,程序的核心是算法”。下列有關(guān)程序、算法和數(shù)據(jù)結(jié)構(gòu)的敘述錯(cuò)誤的是.(10)。 A.程序是用程序設(shè)計(jì)語(yǔ)言對(duì)解題對(duì)象和解題步驟進(jìn)行的一種描述 B.算法和數(shù)據(jù)結(jié)構(gòu)是設(shè)計(jì)與編寫程序時(shí)首先要考慮的兩個(gè)重要方面 c.算法是問題求解規(guī)則的一種過程描述,它必須有輸入,但可以沒有輸出 D.?dāng)?shù)據(jù)結(jié)構(gòu)主要是研究數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)以及在這些數(shù)據(jù)上定義的運(yùn)算 11.下列關(guān)于局域網(wǎng)的敘述錯(cuò)誤的是(11) 。 A.光纖分布式數(shù)字接口網(wǎng)(FDDI)常用于構(gòu)造局域網(wǎng)的主干部分 。 B.采用紅外線或者無線電波進(jìn)行數(shù)據(jù)通信,可以構(gòu)造無線局域網(wǎng) C.兩個(gè)或多個(gè)局域網(wǎng)可以進(jìn)行互連 D.所有的局域網(wǎng)均為以太網(wǎng) 12·下列有關(guān)IP地址、域名和URL的敘述錯(cuò)誤的是(12) 。 A·目前互聯(lián)網(wǎng)中IP地址大多數(shù)使用4個(gè)字節(jié)(32個(gè)二進(jìn)位)表示 B·使用C類IP地址的網(wǎng)絡(luò)規(guī)摸最大,一少c類物理網(wǎng)絡(luò)可以擁有上千萬臺(tái)主機(jī) C.一臺(tái)主機(jī)通常只能有一個(gè)IP地址,但可以有多個(gè)域名 D·URL用來標(biāo)識(shí)WWW網(wǎng)中的每一個(gè)信息資源,不同的信息資源對(duì)應(yīng)不同的URL 13·TCP/IP協(xié)議棧的應(yīng)用層包括了各種高層協(xié)議,其中用于實(shí)現(xiàn)網(wǎng)絡(luò)主機(jī)域名到IP地址映射的是(13) 。 A.DNS B.SMTP C .FTP D.Telnet 14·ADSL是一種寬帶接入技術(shù),在線路兩端加裝ADSL MODEM即可實(shí)現(xiàn)連網(wǎng)。下列關(guān)于 ADsL的敘述錯(cuò)誤的是(14) I A.它利用普通銅質(zhì)電話線作為傳輸介質(zhì),成本較低 B.在上網(wǎng)的同時(shí),還可以接聽和撥打電話,幾乎互不影響 C·從實(shí)現(xiàn)的技術(shù)上來看,數(shù)據(jù)的上傳速度比數(shù)據(jù)的下載速度快 D.利用ADSL技術(shù)上網(wǎng)的用戶,其PC機(jī)必須安裝以太網(wǎng)卡 15·目前PC機(jī)使用的字符集及其編碼標(biāo)準(zhǔn)有多種,20多年來我國(guó)也頒布了多個(gè)漢字編碼標(biāo)準(zhǔn)。在下列漢字編碼標(biāo)準(zhǔn)中,不支持簡(jiǎn)體漢字的是(15) 。 I A.GB2312 B.GBK C.BIG5 D. GB18030 16.下列有關(guān)數(shù)字圖像的壓縮編碼和圖像文件格式的敘述錯(cuò)誤的是 (16) 。 A·圖像壓縮的出發(fā)點(diǎn)是圖像中的數(shù)據(jù)相關(guān)性很強(qiáng),且人眼的視覺有一定的局限性 B·壓縮編碼方法的優(yōu)劣主要是看壓縮倍數(shù)、重建圖像的質(zhì)量和壓縮算法的復(fù)雜度等 C.JPEG圖像的壓縮倍數(shù)是可以控制的,且大多為無損壓縮 D·GIF格式的圖像能夠支持透明背景,且具有在屏幕上漸進(jìn)顯示的功能 17.下列有關(guān)MIDI音樂的敘述錯(cuò)誤的是(17 ) A·MIDI是一種音樂描述語(yǔ)言,它規(guī)定了樂譜的數(shù)字表示方法 B·MIDI音樂的文件擴(kuò)展名為MID或MIDI C·MIDI音樂可以使用Windows中的媒體播放器等軟件進(jìn)行播放 D·播放MIDI音樂時(shí),聲音是通過音箱合成出來的 18.下列有關(guān)中文版Windows 98/2000/xP操作系統(tǒng)功能與操作的敘述錯(cuò)誤的是 (18) 。 A·“五筆字型”漢字輸入法是Windows內(nèi)置的輸入法之一 B·在“畫圖”軟件中畫圓和正方形時(shí),可在按Shift鍵的同時(shí)用鼠標(biāo)拖放操作 c·在“資源管理器’’窗口中,按Ctrl鍵的同時(shí)用鼠標(biāo)單擊文件,可以實(shí)現(xiàn)該文件的反向選定 D·作為虛擬存儲(chǔ)器使用的(頁(yè))交換文件可以設(shè)置在不同的邏輯硬盤上 19·下列有關(guān)Microsoft Word 97/2000/2003功能和操作的敘述錯(cuò)誤的是 (19) 。 A·Word文檔可以分別設(shè)置打開文件時(shí)的密碼和修改文件時(shí)的密碼 B·頁(yè)邊距的計(jì)量單位可以設(shè)置為磅、英寸和厘米等 c·可以將選中的英文統(tǒng)一設(shè)置為小寫,或大寫,或詞首字母大寫,或句首字母大寫等 D·利用工具欄上的“格式刷”,可以復(fù)制字體的格式,但不能復(fù)制段落的格式 20.下列有關(guān)Microsoft PowerPoint 97/2000/2003功能和操作的敘述錯(cuò)誤的是 (20) 。 A.PowerPoint文件可以另存為網(wǎng)頁(yè)文件 B.演示文稿可以按講義方打印,且一張紙(如A4規(guī)格)可以打印多達(dá)6或9張投影爿 c.演示文稿的放映方式可以設(shè)置為循環(huán)放映 D.演示文稿中可以插入聲音文件,但不可以錄制旁白 一、選擇題(10分) 21、以下關(guān)于C語(yǔ)言源程序的敘述中,錯(cuò)誤的是_____。 A.一個(gè)C語(yǔ)言源程序由若干個(gè)函數(shù)定義組成,其中必須有且僅有一個(gè)名為main的函數(shù)定義 B.函數(shù)定義由函數(shù)頭部和函數(shù)體兩部分組成 C.在一個(gè)函數(shù)定義的函數(shù)體中允許定義另一個(gè)函數(shù) D.在一個(gè)函數(shù)定義的函數(shù)體中允許調(diào)用另一個(gè)函數(shù)或調(diào)用函數(shù)本身 22、以下表示中,不能用作C語(yǔ)言常量表示的是____。 A.0UL B.(long)123 C.1e0 D.’\x 23、以下標(biāo)識(shí)符中,不能用作變量名或自定義函數(shù)名的是___。 A.main B.scanf C._float D.sizeof 24、以下表示數(shù)學(xué)式“a<B<C”的邏輯表達(dá)式中,錯(cuò)誤的是____。< P> A.a<b<c B.a<b && b<c C.!(a>=b)&&!(b>=c) D.!(a>=b||b>=c) 25.以下程序運(yùn)行后的輸出結(jié)果是____。 A.2 2 B.7 2 C.7 5 D.6 2 main() { char a[7]=”a0\ i=sizeof(a); j=strlen(a); printf(“%d %d”,i,j); } 26.下面關(guān)于循環(huán)語(yǔ)句for、while、do_while的敘述中,正確的是____。 A.三種循環(huán)語(yǔ)句的循環(huán)體都必須放入一對(duì)花括號(hào)中 B.三種循環(huán)語(yǔ)句中都可以缺省循環(huán)終止條件表達(dá)式 C.三種循環(huán)語(yǔ)句的循環(huán)體都至少被無條件地執(zhí)行一次 D.三種循環(huán)語(yǔ)句都可能出現(xiàn)無窮循環(huán) 27.以下程序段中,有語(yǔ)法錯(cuò)誤的是____。 A.fun(char aa[10]) { while(*aa) printf(“%c”,*aa++); } B.fun( char *aa) { while(aa[0]) printf(“%c”,*aa++); } C.main() { char *aa=”Hello!”; while(*aa) printf(“%c”,*aa++); } D.main() { char aa[10]=”Hello!”; while(*aa) printf(“%c”,*aa++); } 28.若有聲明“int a[ ]={1,2,3,4},*p,i;”,則以下程序段中不能輸出13的是_____。 A.for(i=0;i<4;i+=2) printf(“%d”,a[i]); B.for(p=0;p<4;p+=2) printf(“%d”,a[p]); C.for(p=a;p<a+4;p+=2) printf(“%d”,*p); D.for(p=a,i=0;i<4;i+=2) printf(“%d”,p[i]); 29.若有如下的類型定義和變量聲明,則在給出的選項(xiàng)中值不為7的表達(dá)式是____。 A.ptr->a B.(++ptr)->a C.x[1].a D.x[0].b->a struct ss { int a; struct ss *b;} x[3]={{5,&x[1]},{7,&x[2]},{9,0}},*ptr=&x[0]; 30.若需要對(duì)一個(gè)數(shù)據(jù)文件abc.txt 中的數(shù)據(jù)做加密處理并且限定只能做一次打開文件操作,則在“fp=fopen(“abc.txt”,模式字符串);”中,模式字符串應(yīng)當(dāng)是____。 A.”w+” B.”r+” C.”a+” D.”r” 二、填空題(共30分) 1.在聲明局部變量時(shí),不能使用的存儲(chǔ)類別標(biāo)識(shí)符是__( 1 )__。 2.與整型數(shù)學(xué)算式 3.在以下程序的main函數(shù)中,語(yǔ)句"fun(x,10);"內(nèi)的實(shí)參x表示數(shù)組x的__(3 ) ___。 void fun(int a[10],int n) {int i; for(i=0;i<n;i++) a[i]++;} main() {int x[10]={0}; fun(x,10); } 4.已知程序中有聲明“int a; long b;”,若需要接收從鍵盤輸入的電話號(hào)碼字符串(010)64782656(其中010為區(qū)號(hào),64782656是電話號(hào)碼)并將其中的區(qū)號(hào)、電話號(hào)碼分別存儲(chǔ)到變量a,b中,則實(shí)現(xiàn)該功能的輸入語(yǔ)句為"scanf("___( 4 )____",&a,&b);"。 5.若要使表達(dá)式p="jiangsu"無任何錯(cuò)誤(包括語(yǔ)法錯(cuò)誤和警告錯(cuò)誤),p的聲明形式應(yīng)為__( 5 )_____。 閱讀程序(13分) 6.以下程序運(yùn)行后輸出結(jié)果為__( 6 )____。 #include "stdio.h" int m(int a) {static int s; return(++s)+(--a); } void main() {int a=2; printf("%d",m(m(a))); } 7.以下程序運(yùn)行后輸出結(jié)果為___( 7 )___。 #include "stdio.h" enum days{ mon=1,tue,wed,thu,fri,sat,sun}today=tue; void main() {printf("%d",(today+2)%7);} 8.以下程序運(yùn)行后輸出結(jié)果為___( 8 )____。 #include "stdio.h" int mystery(int a,int b) {if(b==1) return a; else return a+mystery(a,b-1); } void main() {int x=5,y=3; printf("%d\n",mystery(x,y)); } 9.以下程序運(yùn)行后輸出結(jié)果中第一行為____( 9)____,第二行為____( 10 )____。 #include "stdio.h" void main() {int i=5; do {switch(i%2) {case 0: i--; break; case 1: i--; continue; } i--; printf("%d\n",i); }while(i>0); } 10.以下程序運(yùn)行后輸出結(jié)果中第一行為_____(11)___,第二行為______(12)___ _。 #include int fun(int a[],int n,int b[]) {int i=0,j,m=0,c,x; for(i=0;i<n;i++) {x=a[i]; c=1; for(j=i+1;j<n;j++) if(a[j]==x) c++; else {i=j-1; break; } if(j>=n) i=j; if(c==1) b[m++]=x; else {b[m++]=-c; b[m++]=x; } } return m; } void main() {int x[]={4,4,4,4,4,4,4,4,1,2},y[10],i,j,n=10; n=fun(x,n,y); for(i=0;i<N;I++) {if(i%2==0) printf("\n"); printf("%5d",y[i]); } } 11.以下程序運(yùn)行后輸出結(jié)果中第一行為____( 13 )__________,第二行為____( 14 )_____, 第三行為____( 15 )___________。 #include "stdio.h" #define N 3 main() {int a[N][N],b[N*N]={1,1},i,j; for(i=2;i<N*N;i++) b[i]=b[i-1]+b[i-2]; for(i=0;i<N;i++) for(j=0;j<N;j++) a[j][i]=b[i*N+j]; for(i=0;i<N;I++) { for(j=0;j<N;j++) printf("%5d",a[i][j]); printf("\n"); } } 12.以下程序運(yùn)行后輸出結(jié)果中第一行為__(16)_,第二行為__(17)____,第三行為_(18)____。 #include "stdio.h" #include "stdlib.h" struct node {char data; struct node *next; }; struct node *insert(struct node *h,char c) {struct node *p,*p1,*p2; p=(struct node *)malloc(sizeof(struct node)); p->data=c; p->next=NULL; if(h==NULL) h=p; else {p1=p2=h; while(c>p1->data&&p1->next!=NULL) {p2=p1;p1=p1->next; } if(c<=p1->data) if(p1==h) {p->next=h; h=p; } else {p2->next=p; p->next=p1; } else {p1->next=p; } } return h; } struct node * {struct node *p=h; while(p!=NULL) {if(p->data%2==0) p->next=p->next->next; p=p->next; } return h; } void print(struct node *h) {struct node *p=h; while(p!=NULL) {printf("%c",p->data); p=p->next; } printf("\n"); } void main() { struct node *head=NULL; char *item="32659",*p=item; puts(item); while(*p) head=insert(head,*p++); print(head); } 完善程序(12分) 13.以下程序的功能是:用簡(jiǎn)單迭代法求方程cos(x)-x=0在區(qū)間(0,1)上的一個(gè)近似實(shí)根。迭代公式為:xn+1=cos(xn),(n=0,1,2,...),當(dāng)xn+1-xn的絕對(duì)值小于1e-6時(shí),xn+1即是方程cos(x)-x=0在x0附近的一個(gè)誤差小于1e-6的近似實(shí)根(此根的近似值是0.7391)。 #include #include float root(float x0) {float x1; _____( 19 )________; do { x0=x1; x1=cos(x0); }while(____20___________); return x1; } void main() {float x; x=__( 21 )__; printf("x=%f,cos(%f)-%f=%f",x,x,x,cos(x)-x); } 14.以下程序的功能是找到具有這樣特性的正整數(shù)A:若將A的個(gè)位數(shù)p移到首位,所得到的數(shù)為原數(shù)的p倍。例如,將102564的個(gè)數(shù)4移到首位得到410256,而410256=102564*4,因此數(shù)102564具有此特性。對(duì)于p=2,3,4,5,6,7,8,9均存在具有此特性的整數(shù)。但除本例外,其余數(shù)的倍數(shù)均超過12,不能用普通整型數(shù)表示,但可用類似手算的方法找到它們。 函數(shù)int serch(int p)的功能是:找到末位數(shù)是p且具有上述特性的正整數(shù)A,以十進(jìn)制形式將A保存到數(shù)組a中,每個(gè)數(shù)組元素保存A的一位數(shù)(個(gè)位數(shù)p保存在a[0]中,十位數(shù)保存在a[1]中,百位數(shù)保存在a[2]中,其他位依次類推)。 算法提示:(1)將p保存到a[0],將a[0]向a[1]的進(jìn)位值置為0; (2)對(duì)于i=1,2,3,....,計(jì)算“a[i-1]*p+a[i-1]向a[i]的進(jìn)位值”得到t,若t=p則A已找到,否則將t 的個(gè)位數(shù)保存到a[i],t的十位數(shù)作為a[i]向a[i+1]的進(jìn)位值。 #include #define N 60 int a[N]; int search(int p) {int i,t,c=0; a[0]=____( 22 )____; for(i=1;;i++) {t=__( 23 )___________; if(t==p) break; a[i]=t%10; c=t/10; } return i; } void main() {int p,i,n; scanf("%d",&p); n=search(p); printf("p=%d; A=",p); for(i=__( 24 )______;i>=0;i--) printf("%d",a[i]); } 15.以下程序的功能是:main函數(shù)通過調(diào)用fun1函數(shù)將數(shù)組S的4個(gè)元素中大于等于平均值的那些數(shù)保存到a數(shù)組,小于平均值的那些數(shù)保存到b數(shù)組,變量n、m分別保存a數(shù)組和b數(shù)組中數(shù)據(jù)的個(gè)數(shù)。輸出數(shù)組S中數(shù)據(jù)的平均值和a、數(shù)組中的數(shù)據(jù)。 #include"stdio.h" #deine N 4 double fun1(int *x,int *y,int *z,int *n,int *m) {int i; double av=0; ___( 25 )__________; for(i=0;i<N;i++) _____(26)__________; av/=N; for(i=0;i<N;I++) if(__27_____) {y[*n]=x[i]; (*n)++; } else {z[*m]=x[i]; (*m)++; } return av; } void main() {int S[N]={60,80,50,90},a[N]={0},b[N]={0},t,i,j,m,n; double ave; ave=fun1(S,a,b,&n,&m); printf("%f\n",ave); for(i=0;i<n;i++) printf(“%3d”,a[i]); printf("\n"); for(i=0;i<m;i++) printf(?%3d?,b[i]); } 16.以下程序的功能是:在不改變a數(shù)組中數(shù)據(jù)存儲(chǔ)位置的前提下,按a數(shù)組第一列元素的值從大到小依次輸出a數(shù)組的各行元素。實(shí)現(xiàn)算法:將a數(shù)組每行第一個(gè)元素的值和地址依次保存到index結(jié)構(gòu)數(shù)組相應(yīng)元素的成員x和y中,對(duì)index 數(shù)組按成員x的值從大到小排序,依次輸出index數(shù)組每個(gè)元素的成員y指向的a數(shù)組中一行的全部元素的值。 #include <stdio.h> struct link {int x,*y; } void main() { int a[ ][3]={{20,40,30},{30,10,20},{40,50,30},{60,60,30}},i,j,k,*p; struct link index[4]={0},tmp; for(i=0;i<4;i++) { index[i].y=__( 28 )______; index[i].x=a[i][0]; } for(i=0;i<3;i++) {k=i; for(j=i+1;j<4;j++) if(__( 29 )_____) k=j; if(k!=i) {tmp=index[i];index[i]=index[k];index[k]=tmp; } } for(i=0;i<4;i++) {p=index[i].y; printf("\n"); for(j=0;j<3;j++) printf("%3d",______( 30 )_____); } } |