國(guó)家C語(yǔ)言上機(jī)考試題庫(kù).doc_第1頁(yè)
國(guó)家C語(yǔ)言上機(jī)考試題庫(kù).doc_第2頁(yè)
國(guó)家C語(yǔ)言上機(jī)考試題庫(kù).doc_第3頁(yè)
國(guó)家C語(yǔ)言上機(jī)考試題庫(kù).doc_第4頁(yè)
國(guó)家C語(yǔ)言上機(jī)考試題庫(kù).doc_第5頁(yè)
已閱讀5頁(yè),還剩311頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一套一 簡(jiǎn)單應(yīng)用題下列給定程序中,函數(shù)fun的功能是:把形參a所指數(shù)組中的最小值放在元素a0中,接著把a(bǔ)所指數(shù)組中的最大值放在a1元素中;再把a(bǔ)所指數(shù)組元素中的次小值放在a2中,把a(bǔ)所指數(shù)組元素中的次大值放在a3,以此類推。例如,若a所指數(shù)組中的數(shù)據(jù)最初排列為:9、1、4、2、3、6、5、8、7;則按規(guī)則移動(dòng)后,數(shù)據(jù)排列為:1、9、2、8、3、7、4、6、5。形參n中存放a所指數(shù)組中數(shù)據(jù)的個(gè)數(shù)。規(guī)定fun函數(shù)中的max存放當(dāng)前所找的最大值,px存放當(dāng)前所找最大值的下標(biāo)。請(qǐng)?jiān)谙聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不行更改程序的結(jié)構(gòu)!【參考答案】(1) ai(2) aj(3) aj【考點(diǎn)分析】本題考查:數(shù)組的引用;if語(yǔ)句條件表達(dá)式,如果表達(dá)式的值為真,則執(zhí)行下面的語(yǔ)句,如果該值為假,則不執(zhí)行下面的語(yǔ)句?!窘忸}思路】填空1:for循環(huán)語(yǔ)句循環(huán)體中將數(shù)組元素ai賦值給變量max和變量min。填空2:通過一次for循環(huán),找到數(shù)組中的最大值,if語(yǔ)句的條件表達(dá)式是maxaj。二 基本操作題下列給定程序中函數(shù)fun的功能是:用遞歸算法計(jì)算斐波拉契數(shù)列中第n項(xiàng)的值。從第1項(xiàng)起,斐波拉契數(shù)列為:1、1、2、3、5、8、13、21、例如,若給n輸入7,則該項(xiàng)的斐波拉契數(shù)值為13。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:部分源程序在文件MODI1.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)。【參考答案】(1)去掉分號(hào)(2)case 1:case 2:return 1;【考點(diǎn)分析】本題考查:switch語(yǔ)句,其一般形式為:switch(表達(dá)式) case常量表達(dá)式1: 語(yǔ)句1;case常量表達(dá)式2: 語(yǔ)句2; case常量表達(dá)式n: 語(yǔ)句n;default: 語(yǔ)句n1;其中switch(表達(dá)式)后不應(yīng)該帶有;,同時(shí)case語(yǔ)句常量后應(yīng)該是:。三 綜合應(yīng)用題某學(xué)生的記錄由學(xué)號(hào)、8門課程成績(jī)和平均分組成,學(xué)號(hào)和8門課程的成績(jī)已在主函數(shù)中給出,請(qǐng)編寫函數(shù)fun,其功能是:求出該學(xué)生的平均分,并放入記錄的ave成員中。例如,學(xué)生的成績(jī)是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語(yǔ)句?!緟⒖即鸢浮縪id fun(STREC *a) double ave=0.0; int i; for(i=0;iave=a-ave+a-si; /*求各門成績(jī)的總和*/ a-ave/=N; /*求平均分*/【考點(diǎn)分析】本題考查:結(jié)構(gòu)體類型成員運(yùn)算,指向結(jié)構(gòu)體類型的指針變量作函數(shù)參數(shù)?!窘忸}思路】本題考查自定義形參的相關(guān)知識(shí)點(diǎn),程序流程是這樣的:在fun()函數(shù)中求出平均分后,返回到主函數(shù)時(shí)平均分也要帶回,所以只能定義一個(gè)指針類型的形參STREC*a ,此時(shí),引用成員的方式可以使用指向運(yùn)算符,即aave和asi,當(dāng)然也可用(*a)ave和(*a)si。第二套一. 簡(jiǎn)單應(yīng)用題下列給定程序中,函數(shù)fun的功能是進(jìn)行數(shù)字字符轉(zhuǎn)換。若形參ch中是數(shù)字字符09,則將0轉(zhuǎn)換成9,1轉(zhuǎn)換成8,2轉(zhuǎn)換成7,9轉(zhuǎn)換成0;若是其它字符則保持不變;并將轉(zhuǎn)換后的結(jié)果作為函數(shù)值返回。請(qǐng)?jiān)谙聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!參考答案】(1)char(2) chnext; while(p!=NULL) ave=ave+p-s; p=p-next; return ave/N;【考點(diǎn)分析】本題考查:鏈表的操作,對(duì)鏈表的主要操作有以下幾種:建立鏈表、結(jié)構(gòu)的查找與輸出、插入一個(gè)結(jié)點(diǎn)、刪除一個(gè)結(jié)點(diǎn)?!窘忸}思路】題目要求求鏈表中數(shù)據(jù)域的平均值,應(yīng)首先使用循環(huán)語(yǔ)句遍歷鏈表,求各結(jié)點(diǎn)數(shù)據(jù)域中數(shù)值的和,再對(duì)和求平均分。遍歷鏈表時(shí)應(yīng)定義一個(gè)指向結(jié)點(diǎn)的指針p,因?yàn)轭^結(jié)點(diǎn)中沒有數(shù)值,所以程序中讓p直接指向頭結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn),使用語(yǔ)句STREC *phnext。第三套一 基本操作下列給定程序中,函數(shù)fun的功能是:求ss所指字符串?dāng)?shù)組中長(zhǎng)度最短的字符串所在的行下標(biāo),作為函數(shù)值返回,并把其串長(zhǎng)放在形參n所指的變量中。ss所指字符串?dāng)?shù)組中共有M個(gè)字符串,且串長(zhǎng)N。請(qǐng)?jiān)谙聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!【參考答案】(1) M(2) (3) k【考點(diǎn)分析】本題考查:for循環(huán)語(yǔ)句的循環(huán)條件;if語(yǔ)句條件表達(dá)式;return語(yǔ)句完成函數(shù)值的返回?!窘忸}思路】填空1:題目指出ss所指字符串?dāng)?shù)組中共有M個(gè)字符串,所以for循環(huán)語(yǔ)句循環(huán)條件是iM。填空2:要求求長(zhǎng)度最短的字符串,*n中存放的是已知字符串中長(zhǎng)度最短的字符串的長(zhǎng)度,這里將當(dāng)前字符串長(zhǎng)度與*n比較,若小于*n,則將該長(zhǎng)度值賦給*n,因此if語(yǔ)句的條件表達(dá)式為len=a)&( tti = z)(2)tti-=32;【考點(diǎn)分析】本題考查:if語(yǔ)句條件表達(dá)式;小寫字母轉(zhuǎn)大寫字母的方法?!窘忸}思路】(1)分析本題可知,要判斷字符是否為小寫字母,即判斷其是否在az之間,所以這里需要進(jìn)行連續(xù)的比較,用&。(2)從ASCII碼表中可以看出,小寫字母的ASCII碼值比對(duì)應(yīng)大寫字母的ASCII值大32。將字符串中的小寫字母改為大寫字母的方法是:從字符串第一個(gè)字符開始,根據(jù)ASCII碼值判斷該字母是不是小寫字母,若是,則ASCII碼值減32即可。三. 綜合應(yīng)用題編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素?cái)?shù)存入xx所指數(shù)組中,非素?cái)?shù)的個(gè)數(shù)通過k返回。例如,若輸入17,則應(yīng)輸出:46891012141516。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。【參考答案】void fun( int m, int *k, int xx )int i,j,n=0;for(i=4;im;i+) /*找出大于1小于整數(shù)m的非素?cái)?shù)*/for(j=2;ji;j+)if(i%j=0) break;if(ji) xxn+=i;*k=n; /*返回非素?cái)?shù)的個(gè)數(shù)*/【考點(diǎn)分析】本題考查:如何判斷非素?cái)?shù);循環(huán)判斷結(jié)構(gòu);數(shù)組的引用。【解題思路】題目要求將1m之間的非素?cái)?shù)存入數(shù)組中,應(yīng)使用循環(huán)判斷結(jié)構(gòu)。循環(huán)語(yǔ)句用來(lái)遍歷1m之間的每個(gè)數(shù),判斷語(yǔ)句用來(lái)判斷該數(shù)是否素?cái)?shù),若不是素?cái)?shù),則將其存入數(shù)組中。這道題目是考查一個(gè)數(shù)是否為素?cái)?shù)的簡(jiǎn)單延伸,只要掌握了判斷素?cái)?shù)的方法,問題便能順利解決?!窘忸}寶典】判定一個(gè)數(shù)是否為素?cái)?shù),即該數(shù)除了能被1和它本身外,不能被任何數(shù)整除。代碼實(shí)現(xiàn)為:for(j2;ji;j)if(i%j0)/*如余數(shù)為0,證明i不是素?cái)?shù)*/此語(yǔ)句需要熟記,很多判斷素?cái)?shù)的題目也可通過此法解決。第四套一 基本操作下列給定程序中,函數(shù)fun的功能是:將s所指字符串中的所有數(shù)字字符移到所有非數(shù)字字符之后,并保持?jǐn)?shù)字字符串和非數(shù)字字符串原有的次序。例如,s所指的字符串為def35adh3kjsdf7,執(zhí)行后結(jié)果為defadhajsdf3537。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!【參考答案】(1)j+或j+=1或+或j=j+1(2)si=t1i(3) j【考點(diǎn)分析】本題考查:指針型變量;數(shù)組變量賦值;for循環(huán)語(yǔ)句。【解題思路】填空1:根據(jù)函數(shù)fun中的內(nèi)容可知,數(shù)組t1存儲(chǔ)了s中的非數(shù)字字符,數(shù)組t2存儲(chǔ)了s中的數(shù)字字符,為了存儲(chǔ)下一個(gè)數(shù)字字符,下標(biāo)j要進(jìn)行加1操作。填空2:將s串中的數(shù)字與非數(shù)字字符分開后,要先將非數(shù)字字符放入字符串s中,因此填入sit1i。填空3:最后將數(shù)字字符加到s串之后,并且i要小于數(shù)字的個(gè)數(shù)j。二 簡(jiǎn)單應(yīng)用下列給定程序中函數(shù)fun的功能是:用冒泡法對(duì)6個(gè)字符串進(jìn)行升序排列。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!【參考答案】(1)for (j = i + 1; j 6; j+)(2)*(pstr + i) = *(pstr + j) ;【考點(diǎn)分析】本題考查:冒泡排序算法;for循環(huán)語(yǔ)句格式;指針數(shù)組。【解題思路】(1)此處考查for語(yǔ)句的格式,各表達(dá)式之間應(yīng)用;割開。(2)此處考查用指針表示數(shù)組元素的方法,*(pstrI)表示pstr所指向數(shù)組的第I個(gè)元素,同理*(pstrj)表示pstr所指向數(shù)組的第j個(gè)元素?!窘忸}寶典】冒泡排序算法,其基本思想是,將待排序的元素看作是豎著排列的氣泡,較小的元素比較輕,從而要往上浮。在冒泡排序算法中我們要對(duì)這個(gè)氣泡序列處理若干遍。所謂一遍處理,就是自底向上檢查一遍這個(gè)序列,并時(shí)刻注意兩個(gè)相鄰的元素的順序是否正確。如果發(fā)現(xiàn)兩個(gè)相鄰元素的順序不對(duì),即輕的元素在下面,就交換它們的位置。顯然,處理一遍之后,最輕的元素就浮到了最高位置;處理二遍之后,次輕的元素就浮到了次高位置。依次類推,完成排序。用代碼實(shí)現(xiàn)數(shù)組sN的升序排列為:for(i0; iN; i)for(ji1; jsj)tsi; sisjsjto;三. 綜合應(yīng)用題編寫函數(shù)fun,其功能是:求ss所指字符串中指定字符的個(gè)數(shù),并返回此值。例如,若輸入字符串123412132,輸入字符為1,則輸出3。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。【參考答案】int fun(char *ss, char c)int i=0; for(;*ss!=0;ss+) if(*ss=c) i+;/*求出ss所指字符串中指定字符的個(gè)數(shù)*/ return i;【考點(diǎn)分析】本題考查:for循環(huán)語(yǔ)句遍歷字符串,并通過if條件語(yǔ)句,判斷字符串是否結(jié)束。第五套一 基本操作下列給定程序中已建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,鏈表中的各結(jié)點(diǎn)按結(jié)點(diǎn)數(shù)據(jù)域中的數(shù)據(jù)遞增有序鏈接。函數(shù)fun的功能是:把形參x的值放入一個(gè)新結(jié)點(diǎn)并插入鏈表中,使插入后各結(jié)點(diǎn)數(shù)據(jù)域中的數(shù)據(jù)仍保持遞增有序。請(qǐng)?jiān)谙聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!【參考答案】(1)x(2)p(3)s【考點(diǎn)分析】本題考查: 鏈表的基本操作。了解鏈表的基本思想和相關(guān)算法,理解有關(guān)鏈表插入及刪除時(shí)指針移動(dòng)的先后順序問題,注意指針的保存和歸位。二 簡(jiǎn)單應(yīng)用下列給定程序中函數(shù)fun的功能是:計(jì)算正整數(shù)num各位上的數(shù)字之積。例如,若輸入252,則輸出應(yīng)該是20。若輸入202,則輸出應(yīng)該是0。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!【參考答案】(1)long k=1;(2)num /=10;【考點(diǎn)分析】本題考查:數(shù)據(jù)類型;保存乘積的變量初始化;除法運(yùn)算符。三. 綜合應(yīng)用題編寫函數(shù)fun,其功能是:計(jì)算n門課程的平均分,結(jié)果作為函數(shù)值返回。例如:若有5門課程的成績(jī)是:90.5,72,80,61.5,55,則函數(shù)的值為:71.80。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中的填入你編寫的若干語(yǔ)句。【參考答案】float fun ( float *a , int n )int i;float av=0.0; for(i=0; i(3) (t+1)二 簡(jiǎn)單應(yīng)用下列給定程序中函數(shù)fun的功能是:求出如下分?jǐn)?shù)序列的前n項(xiàng)之和。和值通過函數(shù)值返回。例如,若n5,則應(yīng)輸出8.391667。請(qǐng)改正程序中的錯(cuò)誤,使其得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不得增行或刪行,也不得更改的程序的結(jié)構(gòu)!【參考答案】(1)double fun(int n)(2)s=s+(double)a/b;三. 綜合應(yīng)用題請(qǐng)編寫函數(shù)fun,其功能是:找出2M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。【參考答案】int fun (int aM)int i,j,max=a00; for(i=0;i2;i+) for(j=0;jM;j+) if(max=eps) /*當(dāng)某項(xiàng)大于精度要求時(shí),繼續(xù)求下一項(xiàng)*/ s1=s1*n/(2*n+1); /*求多項(xiàng)式的每一項(xiàng)*/ s=s+s1; /*求和*/ n+; return 2*s;第八套一 基本操作給定程序中,函數(shù)fun的功能是:統(tǒng)計(jì)形參s所指的字符串中數(shù)字字符出現(xiàn)的次數(shù),并存放在形參t所指的變量中,最后在主函數(shù)中輸出。例如,若形參s所指的字符串為abcdef35adgh3kjsdf7,則輸出結(jié)果為4。請(qǐng)?jiān)谙聞澗€處填入正確內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!【參考答案】(1) si(2) 9(3)*t=n二 簡(jiǎn)單應(yīng)用下列給定程序中函數(shù)fun的功能是:實(shí)現(xiàn)兩個(gè)變量值的交換,規(guī)定不允許增加語(yǔ)句和表達(dá)式。例如,變量a中的值原為8,b中的值原為3,程序運(yùn)行后a中的值為3,b中的值為8。請(qǐng)改正程序中的錯(cuò)誤,使它得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!【參考答案】(1)t = *x ; *x = y ;(2)return(t) ;或return t;三. 綜合應(yīng)用題編寫函數(shù)fun,其功能是:求出1到1000之間能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù),并將其放在a所指的數(shù)組中,通過n返回這些數(shù)的個(gè)數(shù)。注意:部分原程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句?!緟⒖即鸢浮縱oid fun (int *a, int *n)int i,j=0; for(i=1;i=1000;i+) /*求1到1000之內(nèi)能被7或11整除、但不能同時(shí)被7和11整除的所有整數(shù),并放入數(shù)組a中*/ if(i%7=0|i%11=0)&i%77!=0) aj+=i; *n=j; 第九套一 基本操作下列給定程序中,函數(shù)fun的功能是:把形參a所指數(shù)組中的奇數(shù)按原順序依次存放到a0、a1、a2、中,把偶數(shù)從數(shù)組中刪除,奇數(shù)個(gè)數(shù)通過函數(shù)值返回。例如:若a所指數(shù)組中的數(shù)據(jù)最初排列為:9、1、4、2、3、6、5、8、7,刪除偶數(shù)后a所指數(shù)組中的數(shù)據(jù)為:9、1、3、5、7,返回值為5。請(qǐng)?jiān)谙聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!【參考答案】(1)1(2) j+(3)j二 簡(jiǎn)單應(yīng)用下列給定程序中函數(shù)fun的功能是:求兩個(gè)非零正整數(shù)的最大公約數(shù),并作為函數(shù)值返回。例如,若num1和num2分別為49和21,則輸出的最大公約數(shù)為7;若num1和num2分別為27和81,則輸出的最大公約數(shù)為27。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:部分源程序在文件MODI1.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)?!緟⒖即鸢浮?1)t=a;a=b;b=t;(2)return(b);或return b;三. 綜合應(yīng)用題規(guī)定輸入的字符串中只包含字母和*號(hào)。編寫函數(shù)fun,其功能是:刪除字符串中所有的*號(hào)。編寫函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為:*A*BC*DEF*G*,刪除后字符串中的內(nèi)容應(yīng)當(dāng)是:ABCDEFG。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干的語(yǔ)句?!緟⒖即鸢浮縱oid fun( char *a )int i,j=0; for(i=0;ai!=0;i+) if(ai!=*) aj+=ai; /*若不是要?jiǎng)h除的字符*則留下*/ aj=0;【考點(diǎn)分析】要?jiǎng)h除字符串中所有*號(hào)需要用循環(huán)語(yǔ)句遍歷字符串,用判斷語(yǔ)句判斷字符是否為*號(hào),由此可以決定該程序應(yīng)使用循環(huán)判斷結(jié)構(gòu)?!窘忸}思路】用循環(huán)操作從字符串的開始往后逐個(gè)進(jìn)行比較,若不是要?jiǎng)h除的字符(用if(ai!*)來(lái)控制)則保留。變量i和j用來(lái)表示原字符串的下標(biāo)和刪除*號(hào)后新字符串的下標(biāo)。注意下標(biāo)變量j要從0開始,最后還要加上字符串結(jié)束標(biāo)識(shí)0。第十套一 基本操作下列給定程序中,函數(shù)fun的功能是:將形參n中,各位上為偶數(shù)的數(shù)取出,并按原來(lái)從高位到低位相反的順序組成一個(gè)新數(shù),作為函數(shù)值返回。例如,輸入一個(gè)整數(shù)27638496,函數(shù)返回值為64862。請(qǐng)?jiān)谙聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!參考答案】(1)0(2) 10*x (3)n/10【考點(diǎn)分析】本題考查:已知某數(shù),如何求該數(shù)各個(gè)位數(shù)值,已知各個(gè)位數(shù)值,如何表示該數(shù);除法運(yùn)算?!窘忸}思路】填空1:定義變量t用來(lái)存放數(shù)值幾的各個(gè)位數(shù)值,此處判斷t是否為偶數(shù),即對(duì)2求余結(jié)果是否為0。填空2:將t作為x的個(gè)位數(shù),原來(lái)x的各個(gè)位上升1位,即x10【解題寶典】如果知道某數(shù)n的各個(gè)位,可以得到該數(shù)值n,如n的個(gè)位為a、十位為b、百位為c,那么nc*100b*10a。如果知道數(shù)值n,可以采用求余和除法操作來(lái)表示其各個(gè)位,如n%10(取個(gè)位)、n/10(取十位),讀者可以自己考慮一下,如果是三位數(shù),如何提取各個(gè)位?四位數(shù)呢?二 簡(jiǎn)單應(yīng)用下列給定程序中函數(shù)fun的功能是:將長(zhǎng)整型數(shù)中各位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù)為7531。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不得增行或刪行,也不得更改的程序的結(jié)構(gòu)!參考答案】(1)*t=0;(2)if(d%2!=0)或if(d%2=1)【考點(diǎn)分析】本題考查:指針型變量作為函數(shù)參數(shù);if語(yǔ)句條件表達(dá)式,結(jié)合奇偶數(shù)的表示方法來(lái)確定該表達(dá)式內(nèi)容。【解題思路】(1)由函數(shù)定義可知,變量t是指針變量,所以對(duì)t進(jìn)行賦初值0是不對(duì)的。因?yàn)閠指向的是存放新數(shù)的變量,所以此處應(yīng)給新數(shù)賦初值0,即*t0。(2)變量d表示數(shù)s各個(gè)位上的數(shù),此處的if條件應(yīng)為判斷d是否為奇數(shù)。三. 綜合應(yīng)用題編寫函數(shù)fun,其功能是:實(shí)現(xiàn)兩個(gè)字符串的連接(不要使用庫(kù)函數(shù)strcat),即把p2所指的字符串連接到p1所指的字符串的后面。例如,分別輸入下面兩個(gè)字符串:FirstStringSecondString程序輸出:FirstStringSecondString注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句?!緟⒖即鸢浮縱oid fun(char p1, char p2)int i,j; for(i=0;p1i!=0;i+) ; for(j=0;p2j!=0;j+) p1i+=p2j; p1i=0;【考點(diǎn)分析】本題考查:不使用字符串函數(shù)實(shí)現(xiàn)字符串連接操作。通過for循環(huán)語(yǔ)句來(lái)完成,不要忘了最后需要加上字符串結(jié)束標(biāo)識(shí)0?!窘忸}思路】本題用兩個(gè)循環(huán)完成操作,第1個(gè)循環(huán)的作用是求出第1個(gè)字符串的長(zhǎng)度,即將i指到第1個(gè)字符串的末尾。第2個(gè)循環(huán)的作用是將第2個(gè)字符串的字符連到第1個(gè)字符串的末尾。最后在第1個(gè)字符串的結(jié)尾加上字符串結(jié)束標(biāo)識(shí)0。第十一套一 基本操作下列給定程序中,函數(shù)fun的功能是:逆置數(shù)組元素中的值。例如:若a所指數(shù)組中的數(shù)據(jù)為:1、2、3、4、5、6、7、8、9,則逆置后依次為:9、8、7、6、5、4、3、2、1。形參n給出數(shù)組中數(shù)據(jù)的個(gè)數(shù)。請(qǐng)?jiān)谙聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!【參考答案】(1) n/2(2) i(3) an-i-1【考點(diǎn)分析】本題考查:for循環(huán)語(yǔ)句;變量交換算法。【解題思路】填空1:逆置數(shù)組元素中的值,將a0與an1對(duì)換位置,依此類推,那么需要對(duì)換n/2次。填空2:將a0與an1對(duì)換位置,a1與an2對(duì)換位置,依次類推,則aian1i。填空3:普通的調(diào)換位置程序,顯然填入ani1。二 簡(jiǎn)單應(yīng)用下列給定程序中函數(shù)fun的功能是:將一個(gè)由八進(jìn)制數(shù)字字符組成的字符串轉(zhuǎn)換成與其面值相等的十進(jìn)制整數(shù)。規(guī)定輸入的字符串最多只能包含5位八進(jìn)制數(shù)字字符。例如,若輸入77777,則輸出32767。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:部分源程序在文件MODI1.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)?!緟⒖即鸢浮?1)n= *p-0; (2)n=n*8+*p-0;【考點(diǎn)分析】本題考查: 數(shù)字和字符轉(zhuǎn)換方法;八進(jìn)制轉(zhuǎn)十進(jìn)制方法。【解題思路】(1)0和1是字符串中的數(shù)字字符,為了進(jìn)行數(shù)字運(yùn)算,必須要將數(shù)字字符轉(zhuǎn)換為數(shù)字,用數(shù)字字符減去字符0的ASCII碼,就得到對(duì)應(yīng)的數(shù)字。題中給出的是o,不是0。(2)要在一個(gè)八進(jìn)制數(shù)的最后加上一位,原來(lái)各個(gè)位上的數(shù)上升一位,只需將原數(shù)乘以8再加上個(gè)位數(shù)?!窘忸}寶典】各種進(jìn)制之間轉(zhuǎn)換方法需要掌握,二進(jìn)制數(shù)、八進(jìn)制數(shù)、十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)采取按權(quán)求和的方法;十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)、八進(jìn)制數(shù)、十六進(jìn)制數(shù)采取除2/8/16取余方法來(lái)實(shí)現(xiàn)。三. 綜合應(yīng)用題學(xué)生的記錄由學(xué)號(hào)成績(jī)組成,N名學(xué)生的數(shù)據(jù)已放入主函數(shù)中的結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun,其功能是:函數(shù)返回該學(xué)號(hào)的學(xué)生數(shù)據(jù),指定的學(xué)號(hào)在主函數(shù)中輸入。若沒找到指定學(xué)號(hào),在結(jié)構(gòu)體變量中給學(xué)號(hào)置空串,給成績(jī)置1,作為函數(shù)值返回。(用于字符串比較的函數(shù)是strcmp)。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。【參考答案】STREC fun( STREC *a, char *b )int i; STREC str=0,-1; /*若沒找到指定的學(xué)號(hào),在結(jié)構(gòu)體變量中給學(xué)號(hào)置空串,給成績(jī)置1*/ for(i=0;iN;i+) if(strcmp(ai.num,b)=0) /*找到指定學(xué)號(hào)的學(xué)生數(shù)據(jù)*/strai; str=ai; return str; /*返回學(xué)生記錄*/第十二套一 基本操作下列給定程序的功能是:調(diào)用函數(shù)fun將指定源文件中的內(nèi)容復(fù)制到指定的目標(biāo)文件中,復(fù)制成功時(shí)函數(shù)返回1,失敗時(shí)返回0。在復(fù)制的過程中,把復(fù)制的內(nèi)容輸出到屏幕。主函數(shù)中源文件名放在變量sfname中,目標(biāo)文件名放在變量tfname中。請(qǐng)?jiān)谙聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!【參考答案】(1) r(2) fs(3) ft【考點(diǎn)分析】本題考查:打開文件操作,fopen函數(shù)用來(lái)打開一個(gè)文件,其一般形式為 文件指針名fopen(文件名,使用文件方式);文件結(jié)束檢測(cè)函數(shù)feof函數(shù);寫字符函數(shù)fputc,功能是把一個(gè)字符寫入指定的文件中,函數(shù)調(diào)用的形式為fputc(字符量,文件指針);其中,待寫入的字符量可以是字符常量或變量,被寫入的文件可以用寫、讀寫、追加方式打開。文件一旦使用完畢,需使用關(guān)閉文件函數(shù)fclose將文件關(guān)閉,以避免文件的數(shù)據(jù)丟失等錯(cuò)誤?!窘忸}思路】填空1:本題考查對(duì)文件操作的掌握。打開一個(gè)文件的調(diào)用方式是,fsfopen(文件名,使用文件方式),以只讀的方式打開文件,所以文件使用方式為r。填空2:while循環(huán)語(yǔ)句中,循環(huán)條件通過feof()函數(shù)來(lái)檢測(cè)是否到文件結(jié)尾。填空3:fputc()函數(shù)用于將一個(gè)字符寫到磁盤文件上去,調(diào)用形式為:fputc(要輸出的字符,文件指針)。二 簡(jiǎn)單應(yīng)用下列給定程序中函數(shù)fun的功能是:將長(zhǎng)整型數(shù)中各位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù):8642。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!【參考答案】(1)if(d%2=0)(2)s/=10;【考點(diǎn)分析】本題考查:if語(yǔ)句條件表達(dá)式,注意和的區(qū)別;除法運(yùn)算符/。 【解題思路】(1)分析程序,在if的條件表達(dá)式中,不應(yīng)該出現(xiàn)賦值運(yùn)算符,應(yīng)使用運(yùn)算符。(2)這里是一個(gè)運(yùn)算符的錯(cuò)誤,表示除法的運(yùn)算符是/。【解題寶典】一般情況下,在if條件語(yǔ)句中,很容易出現(xiàn)和的混淆錯(cuò)誤,這也是經(jīng)??疾榈膬?nèi)容,考生應(yīng)當(dāng)注意。三. 綜合應(yīng)用題編寫函數(shù)fun,其功能是:將兩個(gè)兩位數(shù)的正整數(shù)a、b合并成一個(gè)整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的十位和千位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和個(gè)位上。例如,當(dāng)a45,b12時(shí),調(diào)用該函數(shù)后,c 5142。 注意:部分源程序在文件PROG1.C中。 數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。【參考答案】void fun(int a, int b, long *c)*c=b%10+(a/10)*10+(b/10)*100+(a%10)*1000;【考點(diǎn)分析】本題考查:如何取出數(shù)值n的各個(gè)位;知道數(shù)值n的各個(gè)位,又如何表示該數(shù)值;指針型變量的使用?!窘忸}思路】本題中主要的問題是如何取出a和b的個(gè)位數(shù)和十位數(shù),取出后如何表示成c中相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),所以分別對(duì)它們除10可得到它們的十位數(shù),分別用10對(duì)它們求余可得到它們的個(gè)位數(shù)。得到后對(duì)應(yīng)乘以1000、100、10、1就可得到c的千位數(shù)、百位數(shù)、十位數(shù)和個(gè)位數(shù)。注意:使用c時(shí)要進(jìn)行指針運(yùn)算?!窘忸}寶典】知道兩位數(shù)數(shù)值n,需要表示個(gè)位和十位,采用求余和除法操作,如n%10 (取個(gè)位)、n/10(取十位);第十三套一 基本操作下列給定程序中,函數(shù)fun的功能是:有NN矩陣,根據(jù)給定的m(m=2) & (n=1e-6);return x1;【考點(diǎn)分析】本題考查:迭代法求方程的實(shí)根;dowhile循環(huán)語(yǔ)句,其形式為: do 語(yǔ)句 while(表達(dá)式);dowhile循環(huán)與while循環(huán)的不同在于,它先執(zhí)行循環(huán)中的語(yǔ)句,然后再判斷表達(dá)式是否為真, 如果為真則繼續(xù)循環(huán);如果為假, 則終止循環(huán)。因此, dowhile循環(huán)至少要執(zhí)行一次循環(huán)語(yǔ)句?!窘忸}思路】用迭代方法求方程的一個(gè)實(shí)根,題目已經(jīng)給出了算法,只要按照算法用合適的程序表達(dá),就可以解題了。第十四套一 基本操作程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲(chǔ)學(xué)生的學(xué)號(hào)、姓名和3門課的成績(jī)。函數(shù)fun的功能是:將形參a所指結(jié)構(gòu)體變量中的數(shù)據(jù)賦給函數(shù)中的結(jié)構(gòu)體變量b,并修改b中的學(xué)號(hào)和姓名,最后輸出修改后的數(shù)據(jù)。例如,a所指變量中的學(xué)號(hào)、姓名和三門課的成績(jī)依次是:10001、ZhangSan、95、80、88,則修改后輸出b中的數(shù)據(jù)應(yīng)為:10002、LiSi、95、80、88。請(qǐng)?jiān)谙聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!【參考答案】(1) a(2) (3) scorei【考點(diǎn)分析】本題考查:結(jié)構(gòu)體數(shù)據(jù)類型;strcpy字符串拷貝函數(shù)?!窘忸}思路】填空1:題目要求先將形參a所指結(jié)構(gòu)體變量中的數(shù)據(jù)賦給函數(shù)中的結(jié)構(gòu)體變量b,所以此處ba。填空2:通過strcpy函數(shù)修改b中的學(xué)生姓名,注意結(jié)構(gòu)變量成員的表示方法。填空3:printf函數(shù)輸出結(jié)果?!窘忸}寶典】結(jié)構(gòu)變量成員的一般形式是:結(jié)構(gòu)變量名成員名例如:student1.num即第一個(gè)學(xué)生的學(xué)號(hào)student2.sex即第二個(gè)學(xué)生的性別二 簡(jiǎn)單應(yīng)用下列給定程序中函數(shù)fun的功能是:刪除s所指字符中所有的小寫字母c 。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不得增行或刪行,也不得更改的程序的結(jié)構(gòu)!【參考答案】(1)sj+=si;或sj=si;j+;(2)sj= 0;【考點(diǎn)分析】本題考查:數(shù)組元素下標(biāo);字符串結(jié)束標(biāo)識(shí)0?!窘忸}思路】由循環(huán)條件if(si!c)可知,如果字符串中的字符不是c,則將保留該字符到sj位置,然后下標(biāo)j進(jìn)行加1操作。循環(huán)結(jié)束后要在新串的結(jié)尾加上0。三. 綜合應(yīng)用題規(guī)定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun,其功能是:將字符串中的前導(dǎo)*號(hào)全部移到字符串的尾部。例如,字符串中的內(nèi)容為:*A*BC*DEF*G*,移動(dòng)后,字符串中的內(nèi)容應(yīng)當(dāng)是:A*BC*DEF*G*。在編寫函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。【參考答案】void fun( char *a )int i=0,n=0;char *p;p=a;while (*p=*) /*判斷*p是否是*號(hào),并統(tǒng)計(jì)*號(hào)的個(gè)數(shù)*/ n+;p+;while(*p) /*將前導(dǎo)*號(hào)后的字符傳遞給a*/ ai=*p;i+;p+;while(n!=0)ai=*;i+;n-;ai=0;【考點(diǎn)分析】本題考查:移動(dòng)字符串中指定字符的位置,一般采用while循環(huán)語(yǔ)句,通過指針型變量來(lái)完成?!窘忸}思路】函數(shù)fun的功能:將字符串中的前導(dǎo)*號(hào)全部移到字符串的尾部。本題解題思路:(1)定義一個(gè)指針并指向字符串的首地址;(2)利用循環(huán)語(yǔ)句找出字符串的前導(dǎo)*號(hào)的個(gè)數(shù)n;(3)利用循環(huán)語(yǔ)句把剩余的字符拷貝到另一個(gè)字符串中;(4)在字符串的末尾接上n個(gè)*號(hào)。第十五套一 基本操作下列給定程序中,函數(shù)fun的功能是:將形參a所指數(shù)組中的前半部分元素中的值與后半部分元素中的值對(duì)換。形參n中存放數(shù)組中數(shù)據(jù)的個(gè)數(shù),若n為奇數(shù),則中間的元素不動(dòng)。例如:若a所指數(shù)組中的數(shù)據(jù)為:1、2、3、4、5、6、7、8、9,則調(diào)換后為:6、7、8、9、5、1、2、3、4。請(qǐng)?jiān)谙聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!【參考答案】(1)1(2) i(3) ap+i或*(a+p+i)【考點(diǎn)分析】條件運(yùn)算符組成條件表達(dá)式的一般形式:表達(dá)式1? 表達(dá)式2: 表達(dá)式3。其求值規(guī)則為:如果表達(dá)式1的值為真,則以表達(dá)式2 的值作為條件表達(dá)式的值,否則以表達(dá)式3的值作為整個(gè)條件表達(dá)式的值?!窘忸}思路】填空1:該處是判斷數(shù)組元素的個(gè)數(shù)是奇數(shù)還是偶數(shù),為奇數(shù)時(shí)要使當(dāng)前位置加1,以使p指向數(shù)組中間位置。填空2和填空3:這里是一個(gè)比較常見的數(shù)組位置調(diào)換程序,應(yīng)填入i和api?!窘忸}寶典】變量交換算法:如變量a、b互換,需借助第三個(gè)變量temp完成,即tempa;ab;btemp。二 簡(jiǎn)單應(yīng)用下列給定程序中函數(shù)fun的功能是:把從主函數(shù)中輸入的3個(gè)數(shù),最大的數(shù)放在a中,中間的數(shù)放在b中,最小的數(shù)放在c中。例如,若輸入的數(shù)為:551234,輸出的結(jié)果應(yīng)當(dāng)是:a55.0,b34.0,c12.0。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)?!緟⒖即鸢浮?1)float k;(2)if(*a

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論