![省C真題解析算法歸納_第1頁(yè)](http://file4.renrendoc.com/view15/M01/1C/33/wKhkGWeloA6ADdFFAACOZQaXIsw870.jpg)
![省C真題解析算法歸納_第2頁(yè)](http://file4.renrendoc.com/view15/M01/1C/33/wKhkGWeloA6ADdFFAACOZQaXIsw8702.jpg)
![省C真題解析算法歸納_第3頁(yè)](http://file4.renrendoc.com/view15/M01/1C/33/wKhkGWeloA6ADdFFAACOZQaXIsw8703.jpg)
![省C真題解析算法歸納_第4頁(yè)](http://file4.renrendoc.com/view15/M01/1C/33/wKhkGWeloA6ADdFFAACOZQaXIsw8704.jpg)
![省C真題解析算法歸納_第5頁(yè)](http://file4.renrendoc.com/view15/M01/1C/33/wKhkGWeloA6ADdFFAACOZQaXIsw8705.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
江蘇省二級(jí)C語(yǔ)言考試題解、輔導(dǎo)與算法歸納計(jì)算機(jī)學(xué)院基礎(chǔ)部二ОО九年九月目錄TOC\o"1-2"\h\z\u部分重要考點(diǎn)疑難精解1一、數(shù)據(jù)類型(常量與變量)1二、數(shù)組與指針、字符串處理2三、函數(shù)4四、共用體、結(jié)構(gòu)體與單向鏈表52007年春~2009年春筆試真題原題、答案及解析82007年春季真題82007年秋季真題142008年春季真題212008年秋季真題282009年春季真題342007年春季真題參考答案412007年秋季真題參考答案412008年春季真題參考答案412008年秋季真題解析422009年春季真題解析462009年春季上機(jī)真題及參考答案502009年春第一套502009年春第二套522009年春第三套532009年春第四套542009年春第五套562009年春第一套參考答案582009年春第二套參考答案592009年春第三套參考答案612009年春第四套參考答案622009年春第五套參考答案64C語(yǔ)言??妓惴w納66應(yīng)當(dāng)掌握的一般算法66詳細(xì)講解66部分重要考點(diǎn)疑難精解一、數(shù)據(jù)類型(常量與變量)1.字符常量字符常量是用兩個(gè)單引號(hào)前后括住的單個(gè)字符來(lái)表示。其中轉(zhuǎn)義字符具有特定的含義,不同于字符原有的意義,故稱“轉(zhuǎn)義”字符。轉(zhuǎn)義字符主要用來(lái)表示那些用一般字符不便于表示的控制代碼(用其ASCII碼值的八進(jìn)制或十六進(jìn)制表示)。因?yàn)锳SCII碼表中字符的最大碼值為127或255,而127=(177)8=(7F)16,255=(377)8=(FF)16,所以八進(jìn)制形式最多要用3位、十六進(jìn)制形式最多要用2位就夠表示了。其中'\ddd'即表示是1~3位8進(jìn)制數(shù)對(duì)應(yīng)的符號(hào),'\xhh'是1~2位16進(jìn)制數(shù)對(duì)應(yīng)的符號(hào),比如:'\101',(101)8即(65)10,是字符'A'的ASCII碼值,故'\101'表示字符'A';'\x41',(41)16即(65)10,也表示字符'A'。由于在內(nèi)存中,字符數(shù)據(jù)以ASCII碼存儲(chǔ),它的存儲(chǔ)形式就與整數(shù)的存儲(chǔ)形式類似,于是,一個(gè)字符數(shù)據(jù)既可以以字符形式處理、輸出,也可以以整數(shù)形式處理、輸出。但容易出現(xiàn)溢出問(wèn)題(C語(yǔ)言編譯不報(bào)錯(cuò)),例如:(07秋)24.若有程序段“charc=256;inta=c;”,則執(zhí)行該程序段后a的值是______。A.256B.65536C.0D.-1由于8個(gè)二進(jìn)制位所能表示的最大無(wú)符號(hào)整數(shù)是(11111111)2,即(255)10,而(256)10=(28)10=(100000000)2,最高位1溢出被舍棄,故本題結(jié)果為0。2.符號(hào)常量及宏定義符號(hào)常量的定義實(shí)際是“宏”定義的特例。所謂“宏”定義就是在程序的開(kāi)始將一個(gè)“標(biāo)識(shí)符”定義成“一串符號(hào)”,這個(gè)“標(biāo)識(shí)符”稱為宏名;在源程序中可以出現(xiàn)這個(gè)宏,稱為“宏引用”或“宏調(diào)用”;在源程序編譯前,將程序清單中每個(gè)“宏名”都原樣替換成對(duì)應(yīng)的“一串符號(hào)”,稱為“宏替換”或“宏擴(kuò)展”。為了區(qū)別于一般的變量名等,宏名通常用大寫(xiě)字母組成。宏定義是以“#define”開(kāi)頭的編譯預(yù)處理命令,分為無(wú)參宏和帶參宏兩種。NULL、EOF是系統(tǒng)提供的符號(hào)常量,分別與0、-1等值,使用前必須在程序開(kāi)頭加上“#include"stdio.h"或#include<stdio.h>”編譯預(yù)處理命令。NULL一般用來(lái)表示空地址值,與0、'\0'可等值互換使用;EOF為一些系統(tǒng)函數(shù)的返回值。3.指針變量及其運(yùn)算指針是一種數(shù)據(jù)類型。所謂指針,就是指存放數(shù)據(jù)的內(nèi)存地址。指針變量中存放的數(shù)據(jù)就是地址值。指針變量的定義形式是:數(shù)據(jù)類型名*指針變量名;注意:①定義時(shí)指針變量名前的*僅僅是一個(gè)標(biāo)志,不具備“取內(nèi)容符”的含義;②指針變量必須在獲得合法空間的地址值之后,方能進(jìn)行各種運(yùn)算、處理;③指針變量可以與整數(shù)進(jìn)行加減運(yùn)算,例如,有下列程序段:inta,*p;p=&a;若p中值為FFDE(十六進(jìn)制),則p+1的值為FFE0,即前者加上2的結(jié)果,含義是p+1為p所指數(shù)據(jù)空間的下一個(gè)數(shù)據(jù)空間的地址值,int型數(shù)據(jù)占據(jù)的空間字節(jié)數(shù)為2;④兩個(gè)同樣類型的指針變量可以進(jìn)行減法運(yùn)算,運(yùn)算結(jié)果為整數(shù),值為兩個(gè)指針變量所指空間地址之間的空間個(gè)數(shù)值(有正、負(fù)之分)。二者不能進(jìn)行加法運(yùn)算。例如,有下列程序段:inta,b,*p,*q;p=&a;q=&b;若p值為FFDE,q值為FFE0,則p-q的值為-1,q-p的值為1。注意,int型數(shù)據(jù)占據(jù)的一個(gè)空間字節(jié)數(shù)為2。⑤兩個(gè)同樣類型的指針變量可以進(jìn)行關(guān)系運(yùn)算,上例中,p<q是成立的。二、數(shù)組與指針、字符串處理1.字符串、字符數(shù)組與指針由于在C語(yǔ)言中字符串只有常量形式,沒(méi)有變量形式,故而用字符數(shù)組、字符指針來(lái)靈活處理字符串。1)用字符數(shù)組存放字符串字符串可以存放在字符數(shù)組中,但字符數(shù)組中存放的未必是字符串。例如:chara[]={'H','i','\0'};charb[]={'B','y','e'};charc[]="Go";字符數(shù)組a、b、c的長(zhǎng)度均為3,但a、c中存放的是字符串,b中存放的不是字符串。一定要注意'\0'是字符串的結(jié)束標(biāo)志;還要注意在定義的同時(shí)可以將字符串用“=”賦值給字符數(shù)組,定義之后必須借助strcpy函數(shù)才能將字符串賦值給字符數(shù)組,千萬(wàn)不能用“=”賦值。2)用字符指針指向字符串字符串指針變量的定義說(shuō)明與指向字符變量的指針變量的說(shuō)明是相同的。只能按對(duì)指針變量的賦值不同來(lái)區(qū)別。如果字符串已經(jīng)存放在某個(gè)字符數(shù)組中,可以用賦值方式將指針變量指向該字符數(shù)組,以后可以用指針變量來(lái)處理字符數(shù)組中存放的字符串,也可以使用指針變量來(lái)處理其中的單個(gè)字符,處理方法類似于一維數(shù)組。C語(yǔ)言允許直接使用字符串常量,并不一定要求字符串存放在字符數(shù)組中。這樣的字符串常量可以用字符型指針變量指向它。將指針變量指向字符串常量的方法有兩種:[法一]char*p="Hello";[法二]char*p;p="Hello";上述兩種方法的含義均是:先讓字符串常量占據(jù)連續(xù)空間,再將該空間的首地址賦值給指針變量。以后就可以使用該指針變量來(lái)處理字符串或字符串中的單個(gè)字符了。3)使用字符指針和字符數(shù)組處理字符串的區(qū)別先看以下幾組對(duì)比程序段:(1)char*p;chara[10];strcpy(p,"Hello");×strcpy(a,"Hello");√前者錯(cuò),因?yàn)閜未指向任何合法空間,就用strcpy函數(shù)給p所指空間賦值是危險(xiǎn)的。后者是正確的,但要注意,在定義時(shí)要使數(shù)組具有足夠的存儲(chǔ)空間。(2)char*p;chara[10];p="Hello";√a="Hello";×后者錯(cuò),因?yàn)閍是數(shù)組名,是數(shù)組首地址,是常量,不可以出現(xiàn)在賦值號(hào)左邊。前者是正確的,先讓字符串常量占據(jù)合法的連續(xù)空間,再將該空間的首地址賦值給指針變量。(3)char*p,a[10];chara[10];p=a;strcpy(a,"Hello");√strcpy(p,"Hello");√二者都正確,完全等價(jià),都是將字符串常量賦值給數(shù)組a對(duì)應(yīng)的空間,前者只是先讓p指向數(shù)組a對(duì)應(yīng)的空間。(4)char*p,a[10];chara[10];p=a;strcpy(a,"Hello");√p="Hello";√雖然二者都正確,但后者是將字符串常量賦值給數(shù)組a對(duì)應(yīng)的空間,前者只是先讓p指向數(shù)組a對(duì)應(yīng)的空間,然后讓字符串常量占據(jù)另外合法的連續(xù)空間,再將該合法空間的首地址賦值給p,此時(shí)p已不指向數(shù)組a了。2.二維數(shù)組及指針1)二維數(shù)組的含義一個(gè)二維數(shù)組可以看成若干個(gè)一維數(shù)組。例如,有定義:inta[2][3];,可以看成是2個(gè)長(zhǎng)度為3的一維數(shù)組,這2個(gè)一維數(shù)組的名字分別為a[0]、a[1]。其中名為a[0]的一維數(shù)組元素有a[0][0]、a[0][1]、a[0][2];名為a[1]的一維數(shù)組元素有a[1][0]、a[1][1]、a[1][2]。2)指向二維數(shù)組的指針設(shè)有如下定義和賦值:inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int*p,(*q)[3];p=&a[0][0];q=a;則有下列存儲(chǔ)關(guān)系:pp+1q地址101103105123456789101112q+3由于C語(yǔ)言允許將一個(gè)二維數(shù)組分解為多個(gè)一維數(shù)組來(lái)處理。因此數(shù)組a可分解為四個(gè)一維數(shù)組,即a[0]、a[1]、a[2]、a[3],每一個(gè)一維數(shù)組又含有三個(gè)元素,因此,a[0]、a[1]、a[2]、a[3]是一維數(shù)組的名字,是對(duì)應(yīng)一維數(shù)組的首地址。而C語(yǔ)言規(guī)定,數(shù)組名就是數(shù)組的首地址,因此,a是二維數(shù)組的首地址。&a[0][0]即p顯然也是二維數(shù)組的首地址,那么與a有什么區(qū)別呢?二者的值相等,根據(jù)上圖的假設(shè),地址值均為101,但p+1指向下一個(gè)元素a[0][1],值為103,而a+1指向下一行,值為107。由此,我們通常將p稱為列指針(同指向變量的指針),a稱為行指針。但是a是數(shù)組名,是常量,于是,可以按如下格式定義一個(gè)二維數(shù)組對(duì)應(yīng)的行指針變量:類型說(shuō)明符(*指針變量名)[所指二維數(shù)組的第二維長(zhǎng)度值];例如,上例中的q就是一個(gè)可以指向a的行指針變量。3)二維數(shù)組元素的引用設(shè)有上例的定義和賦值,則二維數(shù)組元素的引用如下:下標(biāo)法列指針表示行指針表示a[0][0]*p或p[0]**q或*(*(q+0)+0)或q[0][0]a[0][1]*(p+1)或p[1]*(*(q+0)+1)或q[0][1]a[0][2]*(p+2)或p[2]*(*(q+0)+2)或q[0][2]………………a[i][j]*(p+i*3+j)或p[i*3+j]*(*(q+i)+j)或q[i][j]………………a[3][2]*(p+11)或p[11]*(*(q+3)+2)或q[3][2]【識(shí)別技巧】由上圖可以發(fā)現(xiàn):行指針加上一個(gè)*或一個(gè)[]即為列指針,列指針加上一個(gè)*或一個(gè)[]即為二維數(shù)組的一個(gè)元素。反之,二維數(shù)組的元素去掉一個(gè)*或去掉一個(gè)[]或加上一個(gè)&即為列指針,列指針去掉一個(gè)*或去掉一個(gè)[]或加上一個(gè)&即為行指針。例如:(07秋)26.若有聲明“inta[3][4],*p=a[0],(*q)[4]=a;”,則下列敘述中錯(cuò)誤的是__________。A.a(chǎn)[2][3]與q[2][3]等價(jià)B.a(chǎn)[2][3]與p[2][3]等價(jià)C.a(chǎn)[2][3]與*(p+11)等價(jià)D.a(chǎn)[2][3]與p=p+11,*p等價(jià)顯然只有B是錯(cuò)誤的,因?yàn)閜是列指針,不可以加兩個(gè)[],有了上述技巧,本題一眼就能看穿。三、函數(shù)1.參數(shù)處理順序所有函數(shù)的參數(shù)處理順序都是從右至左的,輸出時(shí)仍按各參數(shù)原有次序顯示在屏幕上。例1:有如下程序段:inta=3;printf("%d,%d\n",a,++a);顯示結(jié)果為:4,4(而不是3,4)。例2:(2001春填空題第7題)func(inta,intb){returna+b;}main(){intx=6,y=7,z;z=func(func(x++,y++),func(--x,--y));printf("%d",z);}以上程序輸出結(jié)果是22(所用編譯系統(tǒng)傳遞函數(shù)參數(shù)的順序?yàn)樽杂蚁蜃螅?.庫(kù)函數(shù)根據(jù)考試大綱,必須掌握或熟悉的庫(kù)函數(shù)有:1)數(shù)學(xué)函數(shù)(頭文件math.h):abs()、fabs()、sin()、cos()、tan()、asin()、acos()、atan()、exp()、sqrt()、pow()、fmod()、log()、log10()。2)字符串處理函數(shù)(頭文件string.h):strcmp()、strcpy()、strcat()、strlen()。3)字符處理函數(shù)(頭文件ctype.h):isalpha()、isdigit()、islower()、isupper()、isspace()。4)輸入輸出函數(shù)(頭文件stdio.h):getchar()、putchar()、gets()、puts()、fopen()、fclose()、fprintf()、fscanf()、fgetc()、fputc()、fgets()、fputs()、feof()、rewind()、fread()、fwrite()、fseek()。5)動(dòng)態(tài)存儲(chǔ)分配函數(shù)(頭文件stdlib.h):malloc()、free()。以上庫(kù)函數(shù)的功能請(qǐng)參看教科書(shū),并請(qǐng)注意常用庫(kù)函數(shù)的返回值?!咀⒁狻可蠙C(jī)考試的改錯(cuò)題允許添加編譯預(yù)處理命令,題目中會(huì)出現(xiàn)“使用了某個(gè)庫(kù)函數(shù),但沒(méi)加相應(yīng)的頭文件”的錯(cuò)誤,此時(shí)若忘記該庫(kù)函數(shù)對(duì)應(yīng)的頭文件,可將光標(biāo)放在庫(kù)函數(shù)出現(xiàn)的位置,再按“Ctrl+F1”組合鍵即會(huì)出現(xiàn)頭文件名提示。然后按“Esc”鍵回到編輯狀態(tài)。參見(jiàn)下面的“2009年春季上機(jī)試題第5套”。3.有參函數(shù)的定義類型說(shuō)明符函數(shù)名(形式參數(shù)表列)[形式參數(shù)說(shuō)明序列]{說(shuō)明定義部分可執(zhí)行語(yǔ)句部分}其中[形式參數(shù)說(shuō)明序列]通常省去,而是將“形式參數(shù)說(shuō)明”放在第一行函數(shù)頭的()中,此時(shí),各參數(shù)即使類型相同,之前都必須分別加上類型說(shuō)明符,之間用逗號(hào)分隔。另外,在形式參數(shù)中以數(shù)組形式說(shuō)明的量,會(huì)被轉(zhuǎn)化成等效的指針變量。例如:(07春)27.以下程序段中,有語(yǔ)法錯(cuò)誤的是______。A.fun(charaa[10])B.fun(char*aa){while(*aa)printf(“%c”,*aa++);}{while(aa[0])printf(“%c”,*aa++);}C.main()D.main(){char*aa=”Hello!”;{charaa[10]=”Hello!”;while(*aa)printf(“%c”,*aa++);while(*aa)printf(“%c”,*aa++);}}【解析】答案是D。因?yàn)閍a是數(shù)組名,是地址常量,不可以進(jìn)行++運(yùn)算。而A選項(xiàng)中,雖然aa也以數(shù)組形式加以說(shuō)明,但它是形式參數(shù),立即被轉(zhuǎn)化成“char*aa”而被當(dāng)作指針變量使用。四、共用體、結(jié)構(gòu)體與單向鏈表1.共用體變量、數(shù)組的定義有三種方法可以定義共用體變量、數(shù)組:先定義共用體類型,然后定義變量、數(shù)組;同時(shí)定義共用體類型和變量、數(shù)組;定義無(wú)名稱的共用體類型的同時(shí)定義變量、數(shù)組。例如:①unionGYT{chara[2];intb;};GYTx,y[5];②unionGYT{chara[2];intb;}x,y[5];③union{chara[2];intb;}x,y[5];上述三種方法完全等價(jià)。【注意】(1)共用體變量所占內(nèi)存單元數(shù)目等于占用單元數(shù)目最多的那個(gè)成員的單元數(shù)目。(2)共用體變量各成員占據(jù)相同的起始地址,每一瞬時(shí)只有一個(gè)成員起作用,成員的引用方式是:共用體變量名.成員名。例如,有如下定義和賦值:unionGYT{chara[2];intb;}x;x.a[0]='\x41';x.a[1]='\x22';其中字符'\x41'的ASCII碼值為41H,二進(jìn)制值為1000001B(書(shū)寫(xiě)時(shí)從高位到低位);字符'\x21'的ASCII碼值為22H,二進(jìn)制值為100010B。占據(jù)內(nèi)存情況如下(不足8位,高字節(jié)補(bǔ)0):低字節(jié)x.a[0]x.a[1]高字節(jié)1000001001000100x.b所以當(dāng)執(zhí)行printf("%d\n",x.b);時(shí),輸出8769,因?yàn)閤.b中存放著(0010001001000001)2,十進(jìn)制值為即為8769。(3)共用體變量不能初始化,不能被整體引用,只能引用共用體變量中的成員。2.指針與結(jié)構(gòu)體1)指向結(jié)構(gòu)體變量的指針變量的定義、初始化、賦值及使用結(jié)構(gòu)指針變量的定義形式:struct結(jié)構(gòu)體類型名*結(jié)構(gòu)指針變量名;例如有:structJGT{charname[10];intage;}x,*p=&x;則,結(jié)構(gòu)體變量x的成員引用有如下三種等價(jià)形式:x.age(*p).agep->age其中,第二種的()不能省,因?yàn)槌蓡T運(yùn)算符“.”的優(yōu)先級(jí)比“*”高?!?>”為指向成員運(yùn)算符,優(yōu)先級(jí)也是最高的。3.單向鏈表的逆向建立(先產(chǎn)生表上最后一個(gè)結(jié)點(diǎn),再產(chǎn)生倒數(shù)第二個(gè)……直到產(chǎn)生第一個(gè)結(jié)點(diǎn))假設(shè)想創(chuàng)建如下鏈表:1011012000411304101200419600^200410450304200405530.5411200401550200419600^200410450304200405530.54112004015502000head#include"stdio.h"#include"stdlib.h"structSTU{longnum;/*學(xué)號(hào)*/floatscore;/*成績(jī)*/structSTU*next;};intn;/*全局變量,結(jié)點(diǎn)個(gè)數(shù)*/structSTU*nxcreate()/*逆向建表函數(shù),比順次建表的算法容易*/{structSTU*head,*p;n=0;head=NULL;p=(structSTU*)malloc(sizeof(structSTU));printf("\nInputthenode'snumber,numis0stop\n");/*讀入學(xué)號(hào),為0結(jié)束*/scanf("%ld%f",&p->num,&p->score);while(p->num!=0)/*用學(xué)號(hào)來(lái)控制結(jié)點(diǎn)個(gè)數(shù),為0則終止建表*/{n=n+1;p->next=head;head=p;/*每產(chǎn)生一個(gè)前面的結(jié)點(diǎn),就要修改頭指針*/p=(structSTU*)malloc(sizeof(structSTU));scanf("%ld%f",&p->num,&p->score);}return(head);}2007年春~2009年春筆試真題原題、答案及解析2007年春季真題一、選擇題21.以下關(guān)于C語(yǔ)言源程序的敘述中,錯(cuò)誤的是______。A.一個(gè)C源程序由若干個(gè)函數(shù)組成,其中必有且僅有一個(gè)名為main的函數(shù)定義B.函數(shù)定義由函數(shù)頭部和函數(shù)體兩部分組成C.在一個(gè)函數(shù)定義的函數(shù)體中允許定義另一個(gè)函數(shù)D.在一個(gè)函數(shù)定義的函數(shù)體中允許調(diào)用另一個(gè)函數(shù)或函數(shù)自身22.以下表示中,不能用作C語(yǔ)言常量的是______。A.0ULB.(long)123C.1e0D.’\x2a’23.以下標(biāo)識(shí)符中,不能用作變量名或自定義函數(shù)名的是______。A.mainB.scanfC._floatD.sizeof24.以下表示數(shù)學(xué)式:“a<b<c”的邏輯表達(dá)式中,錯(cuò)誤的是______。A.a(chǎn)<b<cB.a(chǎn)<b&&b<cC.!(a>=b)&&!(b>=c)D.!(a>=b||b>=c)25.以下程序運(yùn)行后的輸出結(jié)果是______。A.22B.72C.75D.62main(){chara[7]="a0\0a0\0";inti,j;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)體都至少無(wú)條件執(zhí)行一次D.三種循環(huán)語(yǔ)句都可能出現(xiàn)無(wú)窮循環(huán)27.以下程序段中,有語(yǔ)法錯(cuò)誤的是______。A.fun(charaa[10])B.fun(char*aa){while(*aa)printf(“%c”,*aa++);}{while(aa[0])printf(“%c”,*aa++);}C.main()D.main(){char*aa=”Hello!”;{charaa[10]=”Hello!”;while(*aa)printf(“%c”,*aa++);while(*aa)printf(“%c”,*aa++);}}28.若有聲明“inta[]={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->aB.(++ptr)->aC.x[1].aD.x[0].b->astructss{inta;structss*b;}x[3]={{5,&x[1]},{7,&x[2]},{9,0}},*ptr=&x[0];30.若需要對(duì)一個(gè)數(shù)據(jù)文件abc.txt中的數(shù)據(jù)做加密處理并且限定只作一次打開(kāi)文件操作,則在“fp=fopen(“abc.txt”,模式字符串);”中,模式字符串應(yīng)當(dāng)是______。A."w+"B."r+"C."a+"D."r"二、填空題基本概念1.在聲明局部變量時(shí),不能使用的存儲(chǔ)類別標(biāo)識(shí)符是_________。2.與整型數(shù)學(xué)算式等價(jià)的C語(yǔ)言表達(dá)式是_________。3.在以下程序的main函數(shù)中,語(yǔ)句“fun(x,10);”內(nèi)的實(shí)參x表示數(shù)組x的_________。voidfun(inta[10],intn){inti;for(i=0;i<=n;i++)a[i]++;}main(){intx[10]={0};fun(x,10);}4.已知程序中有聲明“inta;longb;”若需要接收從鍵盤(pán)輸入的電話號(hào)碼字符串(010)64782656(其中010是區(qū)號(hào),64782656是電話號(hào)碼)并將其中的區(qū)號(hào)、電話號(hào)碼分別存儲(chǔ)到變量a、b中,則實(shí)現(xiàn)該功能的輸入語(yǔ)句應(yīng)為“scanf(“__________“,&a,&b);”。5.若要使表達(dá)式p="jiangsu"無(wú)任何錯(cuò)誤(包括語(yǔ)法錯(cuò)誤和警告錯(cuò)誤),p的聲明形式應(yīng)為_(kāi)________。閱讀程序6.以下程序運(yùn)行后輸出結(jié)果為_(kāi)________。#include"stdio.h"inta;intm(inta){staticints;return(++s)+(--a);}voidmain(){inta=2;printf("%d",m(m(a)));}7.以下程序運(yùn)行后輸出結(jié)果是_________。#include"stdio.h"enumdays{mon=1,tue,wed,thu,fri,sat,sun}today=tue;voidmain(){printf("%d",(today+2)%7);}8.以下程序運(yùn)行后輸出結(jié)果為_(kāi)________。#include"stdio.h"intmystery(inta,intb){if(b==1)returna;elsereturna+mystery(a,b-1);}voidmain(){intx=5,y=3;printf("%d\n",mystery(x,y));}9.以下程序運(yùn)行后輸出結(jié)果第一行為_(kāi)________,第二行為_(kāi)________。#include"stdio.h"voidmain(){inti=5;do{switch(i%2){case0:i--;break;case1:i--;continue;}i--;printf("%d\n",i);}while(i>0);}10.以下程序運(yùn)行后輸出結(jié)果中第一行為_(kāi)________,第二行為_(kāi)________。#include<stdio.h>intfun(inta[],intn,intb[]){inti=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;}}returnm;}voidmain(){intx[]={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é)果第一行為_(kāi)________,第二行為_(kāi)________,第三行為_(kāi)________。#include"stdio.h"#defineN3main(){inta[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é)果第一行為_(kāi)________,第二行為_(kāi)________,第三行為_(kāi)________。#include"stdio.h"#include"stdlib.h"structnode{chardata;structnode*next;};structnode*insert(structnode*h,charc){structnode*p1,*p2,*p;p=(structnode*)malloc(sizeof(structnode));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;}}returnh;}structnode*del(structnode*h){structnode*p=h;while(p!=NULL){if(p->data%2==0)p->next=p->next->next;p=p->next;}returnh;}voidprint(structnode*h){structnode*p=h;while(p!=NULL){printf("%c",p->data);p=p->next;}printf("\n");}voidmain(){structnode*head=NULL;char*item="32659",*p=item;puts(item);while(*p)head=insert(head,*p++);print(head);del(head);print(head);}完善程序題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|<10-6時(shí),Xn+1即是方程cos(x)-x=0在X0附近的一個(gè)誤差小于10-6的近似實(shí)根(此根的近似值是0.7391)。#include<stdio.h>#include<math.h>floatroot(floatx0){floatx1;_________;do{x0=x1;x1=cos(x0);}while(_________);returnx1;}voidmain(){floatx;x=_________;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ù)均超過(guò)12,不能用普通整型數(shù)表示,但可用類似手算的方法找到它們。函數(shù)intsearch(intp)的功能是:找到末位數(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<stdio.h>#defineN60inta[N];intsearch(intp){inti,t,c=0;a[0]=_________;for(i=1;;i++){t=_________;if(t==p)break;a[i]=t%10;c=t/10;}returni;}voidmain(){intp,i,n;scanf("%d",&p);n=search(p);printf("p=%d,a=",p);for(i=_________;i>=0;i--)printf("%d",a[i]);}15.以下程序的功能是:main函數(shù)通過(guò)調(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、b數(shù)組中的數(shù)據(jù)。#include"stdio.h"#defineN4doublefun1(int*x,int*y,int*z,int*n,int*m){inti;doubleav=0;_________;for(i=0;i<N;i++)_________;av/=N;for(i=0;i<N;i++)if(_________){y[*n]=x[i];(*n)++;}else{z[*m]=x[i];(*m)++;}returnav;}voidmain(){intS[N]={60,80,50,90},a[N]={0},b[N]={0},t,i,j,m,n;doubleave;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ù)組中一行的全部元素的值。a數(shù)組中元素的值:程序輸出結(jié)果:204030606030301020405030405030301020606030204030#include<stdio.h>structlink{intx,*y;};voidmain(){inta[][3]={{20,40,30},{30,10,20},{40,50,30},{60,60,30}},i,j,k,*p;structlinkindex[4]={0},tmp;for(i=0;i<4;i++){index[i].y=_________;index[i].x=a[i][0];}for(i=0;i<3;i++){k=i;for(j=i+1;j<4;j++)if(_________)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",_________);}}2007年秋季真題一、選擇題21.在下列C語(yǔ)言源程序的錯(cuò)誤中,通常不能在編譯時(shí)發(fā)現(xiàn)的是_____。A.括號(hào)不匹配B.非法標(biāo)識(shí)符C.?dāng)?shù)組元素下標(biāo)值越界D.程序結(jié)構(gòu)不完整22.在以下各組標(biāo)識(shí)符中,均可以用作變量名的一組是__________。A.a(chǎn)01,IntB.table_1,a*.1C.0_a,W12D.for,point23.若有聲明“l(fā)onga,b;”且變量a和b都需要通過(guò)鍵盤(pán)輸入獲得初值,則下列語(yǔ)句中正確的是_____。A.scanf("%ld%ld,&a,&b");B.scanf("%d%d",a,b);C.scanf("%d%d",&a,&b);D.scanf("%ld%ld",&a,&b);24.若有程序段“charc=256;inta=c;”,則執(zhí)行該程序段后a的值是______。A.256B.65536C.0D.-125.若在一個(gè)C語(yǔ)言源程序中“el”和“e3”是表達(dá)式,“s;”是語(yǔ)句,則下列選項(xiàng)中與語(yǔ)句“for(el;;e3)s;”功能等同的語(yǔ)句是_________。A.el;while(10)s;e3;B.el;while(10){s;e3;}C.el;while(10){e3;s;}D.while(10){el;s;e3}26.若有聲明“inta[3][4],*p=a[0],(*q)[4]=a;”,則下列敘述中錯(cuò)誤的是__________。A.a(chǎn)[2][3]與q[2][3]等價(jià)B.a(chǎn)[2][3]與p[2][3]等價(jià)C.a(chǎn)[2][3]與*(p+11)等價(jià)D.a(chǎn)[2][3]與p=p+11,*p等價(jià)27.若有結(jié)構(gòu)類型定義“typedefstructtest{intx,y[2];}TEST;”,則以下聲明中正確的是_________。A.structtestx:B.structx;C.testx;D.structTESTx;28.若有聲明“l(fā)ongfun(int*x,intn,long*s);inta[4]={1,2,3,4};longb,c;”,則以下函數(shù)調(diào)用形式中正確的是___________。A.c=fun(a,4,b);B.c=fun(a[],4,&b);C.c=fun(a[4],4,b);D.c=fun(a,4,&b);29.若有枚舉類型定義“enumlistl{xl,x2,x3,x4=6,x5,x6};”,則枚舉常量x2和x6代表的值分別是__________________。A.1,6B.1,8C.2,6D.2,830.已知在函數(shù)f中聲明了局部變量x,如果希望f函數(shù)第一次被調(diào)用返回后變量x中存儲(chǔ)的數(shù)據(jù)保持到下次f函數(shù)被調(diào)用時(shí)仍可以使用,則在聲明x時(shí)必須指定其存儲(chǔ)類型為_(kāi)___________。A.a(chǎn)utoB.registerC.staticD.extern二、填空題●基本概念1.若有聲明“inta=5,b=2;”,則表達(dá)式“b+=(float)(a+b)/2”運(yùn)算后b的值為(1)。2.若有聲明“chars[l0]="remind";”,執(zhí)行“puts(s+2);”后的輸出結(jié)果是(2)。3.若有聲明“doublex=10,y=5;”,則計(jì)算xy的庫(kù)函數(shù)調(diào)用形式是(3)。4.已知某程序中有預(yù)處理命令“#include<stdio.h>”,為使語(yǔ)句“zx=fopen("c:\\a.txt","r");”能正常執(zhí)行,在該語(yǔ)句之前必須有聲明(4)?!耖喿x程序5.以下程序運(yùn)行時(shí)輸出結(jié)果是(5)。#defineEVEN(x)x%2==0?1:0main(){if(EVEN(5+1))printf("Even");elseprintf("Odd");}6.以下程序運(yùn)行時(shí)輸出結(jié)果是(6)。#include<stdio.h>main(){ints=1,n=235;do{s*=n%10;n/=10;}while(n);printf("%d\n",s);}7.以下程序運(yùn)行時(shí)輸出結(jié)果是(7)。#include<stdio.h>intt;intsub(int*s){*s+=1;t+=*s;returnt;}main(){inti;for(i=1;i<4;i++)printf("%4d",sub(&i));}8.以下程序運(yùn)行時(shí)輸出結(jié)果是(8)。#include<stdio.h>voidf(longx){if(x<100)printf("%d",x/10);else{f(x/100);printf("%d",x%100/10);}}main(){f(123456);}9.以下程序運(yùn)行時(shí)輸出結(jié)果的第一行是(9);第二行是(10)。#include<stdio.h>intfun(int*x,intn){inti,j;for(i=j=0;i<n;i++)if(*(x+i)%2)*(x+j++)=*(x+i);returnj;}main(){inta[10]={1,5,2,3,8,3,9,7,4,10},n,i;n=fun(a,10);for(i=0;i<n;i++){printf("%5d",a[i]);if((i+1)%3==0)printf("\n");}}10.以下程序運(yùn)行時(shí)輸出結(jié)果中第一行是(11),第二行是(12),第三行是(13)。#include<stdio.h>main(){inti,j,a[3][3]={0};for(i=0;i<3;i++)for(j=0;j<3;j++)switch(i-j+2){case0:case1:a[i][j]=1;break;case2:a[i][j]=2;break;case3:a[i][j]=3;break;case4:a[i][j]=5;break;}for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%4d",a[i][j]);printf("\n");}}11.以下程序運(yùn)行時(shí)輸出結(jié)果中第一行是(14),第二行是(15)。#include<stdio.h>#include<string.h>voidfun(charstr[][20],intn){inti,j,k;chars[20];for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++) if(strcmp(str[j],str[k])<0)k=j;strcpy(s,str[i]);strcpy(str[i],str[k]);strcpy(str[k],s);}}main(){charstr[6][20]={"PASCAL","BASIC","FORTRAN","C","COBOL","Smalltalk"};inti;fun(str,6);for(i=0;i<6;i++)printf("%s\n",str[i]);}12.以下程序運(yùn)行時(shí)輸出結(jié)果的第一行是(16);第二行是(17);第三行是(18)。#include<stdio.h>#defineN10intmerge(inta[],intb[],intc[],intm[][N+1]){inti=0,j,k;while((k=m[0][i])!=2){j=m[1][i];if(k==0)c[i]=a[j];elsec[i]=b[j];i++;}returni;}main(){inta[N]={1,3,5},b[N]={2,4,6},c[2*N],i,n;intm[2][N+1]={{0,1,0,1,0,1,2},{0,0,1,2,2,1,-1}};n=merge(a,b,c,m);printf("%d\n",n);for(i=0;i<n;i++){printf("%d",c[i]);if((i+1)%3==0)printf("\n");}}●完善程序13.程序功能:尋找具有下列特性的四位正整數(shù),其百位數(shù)為0,去掉百位數(shù)0可得到一個(gè)三位正整數(shù),而該三位正整數(shù)乘以9等于原四位正整數(shù)。例如,6075=675×9,所以6075是具有上述特性的正整數(shù)。#include<stdio.h>intfun(intn){inta[4],i,k;k=n;for(i=0;k>0;i++){a[i]=______(19)_______;k/=10;}if(______(20)_______&&(a[3]*100+a[1]*10+a[0])*9==n)return1;elsereturn0;}main(){inti,n=0;for(i=1000;i<10000;i++)if(fun(i))printf("%4d\t",i);printf("\n");}14.程序功能:用牛頓迭代法求方程3x3-3x2+x-1=0在2.0附近的一個(gè)實(shí)根,精度要求為10-5。函數(shù)F求f(x)的值,函數(shù)F1求f(x)的一階導(dǎo)數(shù)值。牛頓迭代公式如下:x=x0-f(x0)/f’(x0)#include<stdio.h>#include<math.h>floatF(floatx){returnx*(3*x*(x-1)+1)-1;}floatF1(floatx){return9*x*x-6*x+1;}floatnewtoon(floatx){floatf,f1,x0;do{_____(21)_____;f=F(x0);f1=F1(x0); x=_____(22)_____;}while(fabs(x-x0)>1e-5);returnx;}main(){floatx0;scanf("%f",&x0);printf("Theresult=%.2f\n",newtoon(x0));}15.程序功能:選票統(tǒng)計(jì)。二維數(shù)組s中保存了投票后10張有效選票上所填寫(xiě)的候選人姓名,結(jié)構(gòu)數(shù)組stat中保存統(tǒng)計(jì)結(jié)果。程序運(yùn)行后的輸出結(jié)果是“l(fā)iu:2wang:5zhao:3”。#include<stdio.h>#include<string.h>typedefstruct{charname[20];/*候選人姓名*/intcount;/*候選人得票數(shù)*/}COUNT;intcount(charx[][20],intn,____(23)____){inti,j,k=0;for(i=0;____(24)____;i++){for(j=0;j<k;j++)if(strcmp(st[j].name,x[i])==0){____(25)____;break;}if(j>=k){____(26)____;st[k].count++;k++;}}returnk;}main(){chars[10][20]={"liu","wang","zhao","zhao","wang","liu","wang","zhao","wang","wang"};COUNTstat[5]={0};inti,n;n=count(s,10,stat);for(i=0;i<n;i++)printf("%s:%d\t",stat[i].name,stat[i].count);}16.設(shè)一個(gè)單向鏈表結(jié)點(diǎn)的數(shù)據(jù)類型定義為:structnode{intx;structnode*next;};fun函數(shù)從h指向的鏈表第二個(gè)結(jié)點(diǎn)開(kāi)始遍歷所有結(jié)點(diǎn),當(dāng)遇到x值為奇數(shù)的結(jié)點(diǎn)時(shí),將該結(jié)點(diǎn)移到h鏈表第一個(gè)結(jié)點(diǎn)之前,函數(shù)返回鏈表首結(jié)點(diǎn)地址。print函數(shù)輸出p指向的鏈表中所有結(jié)點(diǎn)的x值。程序運(yùn)行后的輸出結(jié)果是“1342”。#include<stdio.h>#defineN4structnode{intx;structnode*next;};voidprint(structnode*p){while(____(27)____){printf("%4d",____(28)____);p=p->next;}printf("\n");}structnode*fun(structnode*h){structnode*pl,*p2,*p3;pl=h;p2=pl->next;while(p2){if(p2->x%2){p3=p2;pl->next=____(29)____;p2=pl->next;p3->next=h;____(30)____;}else{pl=p2;p2=p2->next;}}returnh;}main(){structnodea[N]={{4},{3},{2},{1}},*head=a;inti,num;for(i=0;i<N-1;i++)a[i].next=&a[i+1];a[i].next=0;head=fun(head);print(head);}2008年春季真題一、選擇題21.下列敘述中正確的是__________。A.main函數(shù)必須出現(xiàn)在其他函數(shù)之前B.main函數(shù)中至少必須有一條語(yǔ)句C.C程序總是從main函數(shù)的第一條語(yǔ)句開(kāi)始執(zhí)行D.C程序總是在執(zhí)行完main函數(shù)的最后一條語(yǔ)句后結(jié)束22.以下常量表示中正確的是__________。A.\xffB.5LC.a(chǎn)EbD.3.14U23.若程序中已有相應(yīng)的聲明,下列語(yǔ)句中錯(cuò)誤的是__________。A.printf(i==4?"%6d\n":"%6d",i);B.i==4?printf("%6d\n",i):printf("%6d",i);C.for(i=10;;i--)if(i==1)break;D.for(i=10;;)if(i--);break;24.若有聲明“floatf=123.45678;”,則執(zhí)行語(yǔ)句“printf("%.3f",f)”后,輸出結(jié)果是__________。A.1.23e+02B.123.457C.123.456780D.1.234e+0225.若有聲明“intx=2,y=1,z=0;”,則下列關(guān)系表達(dá)式中有語(yǔ)法錯(cuò)誤的是__________。A.x>y=2B.z>y>xC.x>y==1D.x==(x=0,y=1,z=2)26.若有聲明“intx[10]={0,1,2,3,4,5,6,7,8,9},*p;”,則值不為4的表達(dá)式是__________。A.p=x,*(p+4)B.p=x+4,*p++C.p=x+3,*(p++)D.p=x+3,*++p27.若有聲明“inti,k=1;unsignedj;”,則下列語(yǔ)句執(zhí)行時(shí)會(huì)出現(xiàn)無(wú)限循環(huán)的語(yǔ)句是________。A.for(j=15;j>0;j-=2)k++;B.for(j=0;j<15;j+=2)k++;C.for(i=0;i<15;i+=2)k++;D.for(i=15;i>0;i-=2)k++;28.已知A盤(pán)根目錄下有文本文件“data.txt”且程序中已有聲明“FILE*fp”,若程序需要先從“data.txt”文件中讀出數(shù)據(jù),修改后再寫(xiě)入“data.txt”文件中,則調(diào)用fopen函數(shù)的正確形式是__________。A.fp=fopen("A:\\data.txt","rw");B.fp=fopen("A:\\data.txt","w+");C.fp=fopen("A:\\data.txt","r+");D.fp=fopen("A:\\data.txt","r");29.以下選項(xiàng)均為fun函數(shù)定義的頭部,其中錯(cuò)誤的是__________。A.intfun(intx,inty[])B.intfun(intx,inty[x])C.intfun(intx,inty[3])D.intfun(intx,int*y)30.以下結(jié)構(gòu)變量stu1的聲明形式中,錯(cuò)誤的是__________。A.typedefstructstu{charname[10];floatscore;}STU;STUstu1;B.#defineSTUstructstuSTU{charname[10];floatscore;}stu1;C.structstu{charname[10];floatscore;}stu1;D.structstu{charname[10];floatscore;}STU;STUstu1;二、填空題(30分)基本概念1.在C語(yǔ)言源程序中,不帶任何修飾符的浮點(diǎn)數(shù)直接量(例如:3.14)都是按__________類型數(shù)據(jù)存儲(chǔ)的。2.若有聲明“chars1[10]="ABCDE",s2[10]="A\\0";”,則語(yǔ)句“printf("%d",strlen(strcpy(s1,s2)));”的輸出結(jié)果是__________。3.可以改變局部變量的生存期、但不能改變它的作用域的存儲(chǔ)類別是__________。4.C語(yǔ)言有效的預(yù)處理命令總是以__________開(kāi)頭。5.若有聲明“inta=15,b=20,c=25,e;”,則執(zhí)行語(yǔ)句“e=a>b?--c:++c;”后變量e的值是__________。閱讀程序6.以下程序運(yùn)行后的輸出結(jié)果是__________。#include<stdio.h>#defineCount(n)++nmain(){intx=-3,n=8;while(Count(x))n--;printf("%d\n",n);}7.以下程序運(yùn)行后的輸出結(jié)果是__________。#include<stdio.h>intfun(intw1,intw2){returnw2-w1;}main(){intw=1,k;k=fun(fun(w+1,w),w);printf("%d\n",k);}8.以下程序運(yùn)行后的輸出結(jié)果第一行是__________;第二行是__________。#include<stdio.h>main(){inti,a=0,c=2;for(i=0;i<2;i++)switch(++a,a*c){case1:printf("1");case2:printf("2");case3:printf("3\n");break;default:printf("other\n");}}9.以下程序運(yùn)行后的輸出結(jié)果是__________。#include<stdio.h>main(){chara[]="369",*p=a;ints=0,t=1;while(*++p)t*=10;p--;while(t){s+=(*p-'0')*t;p--;t/=10;}printf("%d\n",s);}10.以下程序運(yùn)行后的輸出結(jié)果第一行是__________;第二行是__________。#include<stdio.h>structnum{intx,y;}st[]={{1,10},{2,20},{3,30},{4,40},{-1,-1}},s1[2],s2[2];main(){inti=0,j=0,k;for(k=0;st[k].x!=-1;k++){if(st[k].x%2)s1[i++]=st[k];elses2[j++]=st[k];}printf("%d\n%d\n",s1[0].y,s2[0].y);}11.以下程序運(yùn)行后的輸出結(jié)果第一行是__________。#include<stdio.h>voidprint(intn);voidprint_n(intn);main(){print(4);}voidprint(intn){if(n==0)return;print_n(n);if(n>0)print(n-1);}voidprint_n(intn){if(n==0)return;printf("%d",n);if(n>1)print_n(n-1);elseprintf("\n");}12.以下程序運(yùn)行后的輸出結(jié)果第一行是__________;第二行是__________;第三行是__________。#include<stdio.h>voidsot(inta[3][3]){inti,j,i0,j1,min,max,temp;min=max=a[0][0];for(i=0;i<3;i++){for(j=0;j<3;j++){if(a[i][j]<=min){min=a[i][j];i0=i;}if(a[i][j]>=max){max=a[i][j];j1=j;}}}for(j=0;j<3;j++){temp=a[i0][j];a[i0][j]=a[2][j];a[2][j]=temp;}for(i=0;i<3;i++){temp=a[i][j1];a[i][j1]=a[i][2];a[i][2]=temp;}for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%d",a[i][j]);printf("\n");}}main(){intb[3][3]={{3,2,1},{6,5,4},{9,8,7}};sot(b);}13.以下程序運(yùn)行時(shí),若在鍵盤(pán)上輸入2<Enter>,則輸出是__________;若在鍵盤(pán)上輸入i<Enter>,則輸出是__________。#include<stdio.h>#include<string.h>intstrch(char*s,charch){inti;for(i=strlen(s);i>=0;i--)if(s[i-1]==ch)returni;if(i<0)return0;}main(){charch,s1[]="as123d2nfghhjkm";intk;printf("inputch:");ch=getchar();k=strch(s1,ch);if(k!=0)printf("k=%d\n",k);elseprintf("notfount\n");}完善程序14.某餐廳用蘋(píng)果、桔子、香蕉、菠蘿、梨五種水果制作水果拼盤(pán),要求每個(gè)拼盤(pán)中恰有三種不同水果。以下程序的功能就是計(jì)算可以制作出多少種這樣的水果拼盤(pán)并列出組合方式。#include<stdio.h>typedefenum{apple,orange,banana,pineapple,pear}Fruit;main(){____________fruits[]={"apple","orange","banana","pineapple","pear"};Fruitx,y,z,p;intk=0,i;for(x=____________;x<=pear;x++)for(y=x+1;y<=pear;y++)for(z=y+1;z<=pear;z++)printf("\n%d%s%s%s",++k,fruits[x],fruits[y],fruits[z]);
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 商標(biāo)權(quán)轉(zhuǎn)讓合同
- 廣告公司承包經(jīng)營(yíng)合同
- 廚房設(shè)備購(gòu)銷合同書(shū)
- 小學(xué)六年級(jí)數(shù)學(xué)下口算題800題
- 2025年福州考貨運(yùn)從業(yè)資格證考試題目
- 《百分?jǐn)?shù)的認(rèn)識(shí)》(說(shuō)課稿)-2024-2025學(xué)年六年級(jí)上冊(cè)數(shù)學(xué)北師大版
- 2024-2025學(xué)年高中歷史第一單元東西方先哲第3課百科全書(shū)式的學(xué)者亞里士多德學(xué)案含解析岳麓版選修4
- 2024-2025學(xué)年高中生物第3章植物的激素調(diào)節(jié)第2節(jié)生長(zhǎng)素的生理作用練習(xí)含解析新人教版必修3
- 班主任春季工作計(jì)劃
- 干股激勵(lì)合同范本
- 必修3《政治與法治》 選擇題專練50題 含解析-備戰(zhàn)2025年高考政治考試易錯(cuò)題(新高考專用)
- 二零二五版電商企業(yè)兼職財(cái)務(wù)顧問(wèn)雇用協(xié)議3篇
- 課題申報(bào)參考:流視角下社區(qū)生活圈的適老化評(píng)價(jià)與空間優(yōu)化研究-以沈陽(yáng)市為例
- 深圳2024-2025學(xué)年度四年級(jí)第一學(xué)期期末數(shù)學(xué)試題
- 《openEuler操作系統(tǒng)》考試復(fù)習(xí)題庫(kù)(含答案)
- 2024-2025學(xué)年成都市高新區(qū)七年級(jí)上英語(yǔ)期末考試題(含答案)
- 17J008擋土墻(重力式、衡重式、懸臂式)圖示圖集
- 《中南大學(xué)模板》課件
- 廣東省深圳市南山區(qū)2024-2025學(xué)年第一學(xué)期期末考試九年級(jí)英語(yǔ)試卷(含答案)
- T-CISA 402-2024 涂鍍產(chǎn)品 切口腐蝕試驗(yàn)方法
- 后勤安全生產(chǎn)
評(píng)論
0/150
提交評(píng)論