國家C語言上機考試題庫.doc_第1頁
國家C語言上機考試題庫.doc_第2頁
國家C語言上機考試題庫.doc_第3頁
國家C語言上機考試題庫.doc_第4頁
國家C語言上機考試題庫.doc_第5頁
已閱讀5頁,還剩311頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論