2024年9月全國計(jì)算機(jī)考試二級C語言上機(jī)題庫(打印版)外語學(xué)習(xí)_第1頁
2024年9月全國計(jì)算機(jī)考試二級C語言上機(jī)題庫(打印版)外語學(xué)習(xí)_第2頁
2024年9月全國計(jì)算機(jī)考試二級C語言上機(jī)題庫(打印版)外語學(xué)習(xí)_第3頁
2024年9月全國計(jì)算機(jī)考試二級C語言上機(jī)題庫(打印版)外語學(xué)習(xí)_第4頁
2024年9月全國計(jì)算機(jī)考試二級C語言上機(jī)題庫(打印版)外語學(xué)習(xí)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1/12023年9月全國計(jì)算機(jī)考試二級C語言上機(jī)題庫(打印版)-外語學(xué)習(xí)

2023年9月全國計(jì)算機(jī)考試二級C語言最新上

機(jī)題庫

上機(jī)考試題庫

(打印版)

1

1

【參考答案】(1)a[i](2)a[j](3)a[j]

【考點(diǎn)分析】本題考查:數(shù)組的引用;if語句條件表達(dá)式,假如表達(dá)式的值為真,則執(zhí)行下面的語句,假如該值為假,則不執(zhí)行下面的語句。

【解題思路】填空1:for循環(huán)語句循環(huán)體中將數(shù)組元素a[i]賦值給變量max和變量min。

填空2:通過一次for循環(huán),找到數(shù)組中的最大值,if語句的條件表達(dá)式是max填空3:同理,此處if語句的條件表達(dá)式是min>a[j]。

【解題寶典】求最大值或者最小值的題目,一般都是假設(shè)一個(gè)元素最大或最小,然后通過if條件語句將該元素和其他元素進(jìn)行比較操作來完成。

【參考答案】(1)去掉分號(2)case1:case2:return1;【考點(diǎn)分析】本題考查:switch語句,其一般形式為:switch(表達(dá)式){

case常量表達(dá)式1:語句1;

case常量表達(dá)式2:語句2;

……

case常量表達(dá)式n:語句n;

default:語句n+1;

}其中switch(表達(dá)式)后不應(yīng)當(dāng)帶有";",同時(shí)case語句常量后應(yīng)當(dāng)是":"。

【解題思路】C語言中,switch語句之后不能有分號,并且case語句常量后應(yīng)用的是冒號。

【參考答案】

oidfun(STREC*a)

{doubleave=0.0;

inti;

for(i=0;iave=a->ave+a->s[i];

/*求各門成果的總和*/

a->ave/=N;

/*求平均分*/

}

【考點(diǎn)分析】本題考查:結(jié)構(gòu)體類型成員運(yùn)算,指向結(jié)構(gòu)體類型的指針變量作函數(shù)參數(shù)。

【解題思路】本題考查自定義形參的相關(guān)學(xué)問點(diǎn),程序流程是這樣的:在fun函數(shù)中求出平均分后,返回到主函數(shù)時(shí)平均分也要帶回,所以只能定義一個(gè)指針類型的形參STREC*a,此時(shí),引用成員的方式可以使用指向運(yùn)算符,即a->ave和a->s[i],當(dāng)然也可用(*a).a(chǎn)ve和(*a).s[i]。

2

【參考答案】(1)char(2)chnext;

while(p!=NULL)

{ave=ave+p->s;

p=p->next;

}

returnave/N;

}

【考點(diǎn)分析】本題考查:鏈表的操作,對鏈表的主要操作有以下幾種:建立鏈表、結(jié)構(gòu)的查找與輸出、插入一個(gè)結(jié)點(diǎn)、刪除一個(gè)結(jié)點(diǎn)。

【解題思路】題目要求求鏈表中數(shù)據(jù)域的平均值,應(yīng)首先使用循環(huán)語句遍歷鏈表,求各結(jié)點(diǎn)數(shù)據(jù)域中數(shù)值的和,再對和求平均分。遍歷鏈表時(shí)應(yīng)定義一個(gè)指向結(jié)點(diǎn)的指針p,由于"頭結(jié)點(diǎn)"中沒有數(shù)值,所以程序中讓p直接指向"頭結(jié)點(diǎn)"的下一個(gè)結(jié)點(diǎn),使用語句STREC*p=h->next。

3

【參考答案】(1)M(2)=a′)【考點(diǎn)分析】本題考查:if語句條件表達(dá)式;小寫字母轉(zhuǎn)大寫字母的方法。

【解題思路】(1)分析本題可知,要推斷字符是否為小寫字母,即推斷其是否在a~z之間,所以這里需要進(jìn)行連續(xù)的比較,用

for(i=4;is[j])

{t=s[i];s[i]=s[j]

s[j]=to;}

【參考答案】

intfun(char*ss,charc)

{

inti=0;

for(;*ss!='\0';ss++)

if(*ss==c)

i++;/*求出ss所指字符串中指定字符的個(gè)數(shù)*/returni;

}

【考點(diǎn)分析】本題考查:for循環(huán)語句遍歷字符串,并通過if條件語句,推斷字符串是否結(jié)束。

【解題思路】從字符串中查找指定字符,需要使用循環(huán)推斷結(jié)構(gòu),循環(huán)語句用來遍歷字符串,循環(huán)條件為字符串沒有結(jié)束,即當(dāng)前字符不是′\0′,推斷語句用來推斷當(dāng)前字符是否為指定字符。最終返回指定字符的個(gè)數(shù)。

5

【參考答案】(1)x(2)p(3)s

【考點(diǎn)分析】本題考查:鏈表的基本操作。了解鏈表的

3

基本思想和相關(guān)算法,理解有關(guān)鏈表插入及刪除時(shí)指針移動(dòng)的先后挨次問題,留意指針的保存和歸位。

【解題思路】填空1:將形參x賦值給結(jié)點(diǎn)的數(shù)據(jù)域。

填空2和填空3:將新的結(jié)點(diǎn)和原有鏈表中結(jié)點(diǎn)進(jìn)行比較?!緟⒖即鸢浮?1)longk=1;(2)num/=10;

【考點(diǎn)分析】本題考查:數(shù)據(jù)類型;保存乘積的變量初始化;除法運(yùn)算符。

【解題思路】(1)k用來存放各位數(shù)字的積,初始值應(yīng)為1。

(2)這里是一個(gè)符號錯(cuò)誤,除號用"/"來表示。

【解題寶典】明確C語言中的算術(shù)運(yùn)算符:

加法運(yùn)算符"+":為雙目運(yùn)算符,即應(yīng)有兩個(gè)量參加加法運(yùn)算。減法運(yùn)算符"-":為雙目運(yùn)算符。但"-"也可作負(fù)值運(yùn)算符,此時(shí)為單目運(yùn)算,如-x,-5等具有左結(jié)合性。乘法運(yùn)算符"*":雙目運(yùn)算,具有左結(jié)合性。除法運(yùn)算符"/":雙目運(yùn)算,具有左結(jié)合性。參加運(yùn)算量均為整型時(shí),結(jié)果也為整型,舍去小數(shù)。假如運(yùn)算量中有一個(gè)是實(shí)型,則結(jié)果為雙精度實(shí)型。求余運(yùn)算符(模運(yùn)算符)"%":雙目運(yùn)算,具有左結(jié)合性。要求參加運(yùn)算的量均為整型。求余運(yùn)算的結(jié)果等于兩數(shù)相除后的余數(shù)。

【參考答案】

floatfun(float*a,intn)

{

inti;

floatav=0.0;

for(i=0;i(3)(t+1)

【考點(diǎn)分析】本題考查:基本算術(shù)運(yùn)算時(shí)的類型轉(zhuǎn)換,其轉(zhuǎn)換規(guī)章為:假如雙目運(yùn)算符兩邊運(yùn)算數(shù)的類型全都,則所得結(jié)果的類型與運(yùn)算數(shù)的類型全都;假如雙目運(yùn)算符兩邊運(yùn)算的類型不全都,系統(tǒng)將自動(dòng)進(jìn)行類型轉(zhuǎn)換,使運(yùn)算符兩邊的類型達(dá)到全都后,再進(jìn)行運(yùn)算規(guī)律見下表。

運(yùn)算數(shù)1,運(yùn)算數(shù)2,轉(zhuǎn)換結(jié)果類型

短整型,大整型,短整型長整型

整型,大整型,整型長整型

字符型,整型,字符型整型

有符號整型,無符號整型,有符號整型無符號整型

整型,浮點(diǎn)型,整型浮點(diǎn)型while循環(huán)語句,一般考查如何依據(jù)題意確定循環(huán)條件,以及如何通過循環(huán)變量變化實(shí)現(xiàn)循環(huán)操作。

【解題思路】填空1:變量x定義為double類型,而運(yùn)算符"/"后面是整型數(shù),所以給x賦值時(shí),需要留意數(shù)據(jù)類型,此處不能將3.0寫成3。填空2:while循環(huán)語句的循環(huán)條件,依據(jù)題意確定循環(huán)變量應(yīng)大于1e-3,因此此處應(yīng)填">"。

填空3:表達(dá)式的通項(xiàng)是(2]

【解題寶典】本題填空1還可以運(yùn)用強(qiáng)制類型轉(zhuǎn)換來實(shí)現(xiàn)。

強(qiáng)制類型轉(zhuǎn)換是通過類型轉(zhuǎn)換運(yùn)算來實(shí)現(xiàn)的。其一般形式為:"(類型說明符)(表達(dá)式)"。其功能是:把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型。

例如:

(float)a把a(bǔ)轉(zhuǎn)換為實(shí)型

(int)(x+y)把x+y的結(jié)果轉(zhuǎn)換為整型

【參考答案】(1)doublefun(intn)(2)s=s+(double)a/b;

【考點(diǎn)分析】本題考查:函數(shù)定義,函數(shù)定義的一般形式為:"類型標(biāo)識符函數(shù)名(形式參數(shù)表列)",其中類型標(biāo)識符指明白本函數(shù)的類型,函數(shù)的類型實(shí)際上是函數(shù)返回值的類型。

【解題思路】(1)由語句"return(s)"和變量s定義為double數(shù)據(jù)類型可知,該函數(shù)定義時(shí)其類型標(biāo)識符為double類型。

(2)留意數(shù)據(jù)類型double的書寫格式。

【解題寶典】確定函數(shù)類型標(biāo)識符在填空和改錯(cuò)題中常??嫉?,假如函數(shù)沒有返回值,則函數(shù)定義為void型;假如函數(shù)有返回值,則函數(shù)類型應(yīng)與返回值類型全都;假如不定義函數(shù)類型標(biāo)識符,則系統(tǒng)默認(rèn)為int型。

【參考答案】

intfun(inta[M])

{

inti,j,max=a[0][0];

for(i=0;i=eps)/*當(dāng)某項(xiàng)大于精度要求時(shí),連續(xù)求下一項(xiàng)*/

{s1=s1*n/(2*n+1);/*求多項(xiàng)式的每一項(xiàng)*/

s=s+s1;/*求和*/

n++;

}

return2*s;

}

【考點(diǎn)分析】本題考查:迭代法求給定多項(xiàng)式的值,迭代算法:讓計(jì)算機(jī)對一組指令(或肯定步驟)進(jìn)行重復(fù)執(zhí)行,在每次執(zhí)行這組指令(或這些步驟)時(shí),都從變量的原值推出它的一個(gè)新值。需要留意變量的數(shù)據(jù)類型以及賦初值操作。

【解題思路】首先應(yīng)當(dāng)定義double類型變量,并且賦初值,用來存放多項(xiàng)式的某一項(xiàng)和最終的總和。從第2項(xiàng)開頭以后的每一項(xiàng)都是其前面一項(xiàng)乘以n/(2]

8

【參考答案】(1)s[i](2)'9'(3)*t=n

【考點(diǎn)分析】本題考查:for循環(huán)語句;if語句條件表達(dá)式;

指針變量。

【解題思路】填空1:通過for循環(huán)語句,來推斷是否到字符串結(jié)尾,變量i用來存放字符串?dāng)?shù)組下標(biāo),則應(yīng)填入s[i]。

填空2:題目要求推斷數(shù)字字符,所以此處應(yīng)填入'9'。填空3:將數(shù)字字符個(gè)數(shù)存入變量t中,這里需留意變量t是指針變量。

【解題寶典】if語句的條件表達(dá)式一般會考查三方面的內(nèi)容:(1)條件推斷,即>與>=、n)得余數(shù)r,再用余數(shù)r去除原來的除數(shù),得到新的余數(shù),重復(fù)此過程直到余數(shù)為0時(shí)停止,此時(shí)的除數(shù)就是m和n的最大公約數(shù)。程序首先推斷參數(shù)a和b的大小,假如a字符數(shù)組2,函數(shù)值大于0(正數(shù));若字符數(shù)組1=字符數(shù)組2,函數(shù)值等于0;若字符數(shù)組1=2)break;

【考點(diǎn)分析】本題考查:C語言程序的語法格式。

【解題思路】while循環(huán)條件丟掉一個(gè)括號。另一處是很簡潔的程序語法錯(cuò)誤,沒有加分號。

【參考答案】

doublefun

{

doublex0,x1;

x1=0.0;

do

{

x0=x1;

x1=cos(x0);

}while(fabs(x0-x1)>=1e-6);

returnx1;

}

【考點(diǎn)分析】本題考查:迭代法求方程的實(shí)根;do…while循環(huán)語句,其形式為:

do{

語句

}while(表達(dá)式);

do…while循環(huán)與while循環(huán)的不同在于,它先執(zhí)行循環(huán)中的語句,然后再推斷表達(dá)式是否為真,假如為真則連續(xù)

循環(huán);假如為假,則終止循環(huán)。因此,do…while循環(huán)至少要執(zhí)行一次循環(huán)語句。

【解題思路】用迭代方法求方程的一個(gè)實(shí)根,題目已經(jīng)給出了算法,只要根據(jù)算法用合適的程序表達(dá),就可以解題了。

14

【參考答案】(1)a(2)d2841c49fe4733687e21aaa7(3)score[i]

【考點(diǎn)分析】本題考查:結(jié)構(gòu)體數(shù)據(jù)類型;strcpy字符串拷貝函數(shù)。

【解題思路】填空1:題目要求先將形參a所指結(jié)構(gòu)體變量中的數(shù)據(jù)賦給函數(shù)中的結(jié)構(gòu)體變量b,所以此處b=a。填空2:通過strcpy函數(shù)修改b中的同學(xué)姓名,留意結(jié)構(gòu)變量成員的表示方法。填空3:printf函數(shù)輸出結(jié)果。

【解題寶典】結(jié)構(gòu)變量成員的一般形式是:

結(jié)構(gòu)變量名.成員名

例如:

student1.num即第一個(gè)同學(xué)的學(xué)號

student2.sex即其次個(gè)同學(xué)的性別

【參考答案】(1)s[j++]=s[i];或{s[j]=s[i];j++;}(2)s[j]=′\0′;

【考點(diǎn)分析】本題考查:數(shù)組元素下標(biāo);字符串結(jié)束標(biāo)識′\0′。

【解題思路】由循環(huán)條件if(s[i]?。健鋍′)可知,假如字符串中的字符不是′c′,則將保留該字符到s[j]位置,然后下標(biāo)j進(jìn)行加1操作。循環(huán)結(jié)束后要在新串的結(jié)尾加上′\0′。

【參考答案】

voidfun(char*a)

{

inti=0,n=0;

char*p;

p=a;

while(*p=='*')/*推斷*p是否是*號,并統(tǒng)計(jì)*號的個(gè)數(shù)*/

{

n++;p++;

}

while(*p)/*將前導(dǎo)*號后的字符傳遞給a*/{

a[i]=*p;i++;p++;

}

while(n!=0)

{

a[i]='*';i++;n--;

}

a[i]='\0';

}

【考點(diǎn)分析】本題考查:移動(dòng)字符串中指定字符的位置,一般采納while循環(huán)語句,通過指針型變量來完成。

【解題思路】函數(shù)fun的功能:將字符串中的前導(dǎo)*號全部

8

移到字符串的尾部。本題解題思路:(1)定義一個(gè)指針并指向字符串的首地址;(2)利用循環(huán)語句找出字符串的前導(dǎo)*號的個(gè)數(shù)n;(3)利用循環(huán)語句把剩余的字符拷貝到另一個(gè)字符串中;(4)在字符串的末尾接上n個(gè)*號。

15

【參考答案】(1)*fw(2)str(3)str

【考點(diǎn)分析】本題考查:函數(shù)定義以及文件指針;fputs函數(shù)的功能是向指定的文件寫入一個(gè)字符串,其調(diào)用形式為:fputs(字符串,文件指針)。

【解題思路】填空1:定義函數(shù),函數(shù)的形參是一個(gè)文件類型的指針。填空2:此處考查fputs函數(shù)的形式,應(yīng)填入str。填空3:依據(jù)printf函數(shù)的格式,輸出字符串內(nèi)容,即printf("%s",str);。

【參考答案】(1)voidfun(longs,long*t)(2)s1=s1*10;

【考點(diǎn)分析】

函數(shù)定義,指針型變量;數(shù)值n和其各個(gè)位如何表示?!窘忸}思路】(1)主函數(shù)中調(diào)用函數(shù)的參數(shù)為地址,因此函數(shù)fun的形式參數(shù)應(yīng)為指針類型。(2)重新組合一個(gè)數(shù),從個(gè)位開頭,然后十位,依次類推,因此每增加一位數(shù),原數(shù)值需乘以10,即s1=s1]

【參考答案】

voidfun(inta,intb,long*c)

{*c=a/10+(b%10)*10+(a%10)*100+(b/10)*1000;

}

【考點(diǎn)分析】本題考查:如何取出數(shù)值n的各個(gè)位;知道數(shù)值n的各個(gè)位,又如何表示該數(shù)值;指針型變量的使用。【解題思路】本題中主要的問題是如何取出a和b的個(gè)位數(shù)和十位數(shù),取出后如何表示成c中相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),所以分別對它們除10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個(gè)位數(shù)。得到后對應(yīng)乘以1000、100、10、1就可得到c的千位數(shù)、百位數(shù)、十位數(shù)和個(gè)位數(shù)。留意:使用c時(shí)要進(jìn)行指針運(yùn)算。

16

【參考答案】(1)1(2)i(3)a[p+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和a[p+i]。

【解題寶典】變量交換算法:如變量a、b互換,需借助第三個(gè)變量temp完成,即temp=a;a=b;b=temp。

【參考答案】(1)floatk;(2)if(*a='a'

}

【考點(diǎn)分析】本題考查:for循環(huán)語句,留意循環(huán)變量取值范圍以及循環(huán)體語句作用。數(shù)組元素初始化和賦值操作。if語句條件表達(dá)式,需留意條件表達(dá)式的規(guī)律運(yùn)算。

字符串結(jié)束標(biāo)識'\0'。

【解題思路】要求統(tǒng)計(jì)在tt所指字符串中'a'到'z'26個(gè)小寫字母各自消失的次數(shù),并依次放在pp所指數(shù)組中。首先for循環(huán)語句體中初始化pp數(shù)組中分別用來統(tǒng)計(jì)26個(gè)字母的個(gè)數(shù)。再使用循環(huán)推斷語句對tt所指字符串中的字符進(jìn)行逐一比較操作,同時(shí)存入相對應(yīng)的pp數(shù)組中。

19

【參考答案】(1)N(2)i(3)-1

【考點(diǎn)分析】本題考查:for循環(huán)語句;函數(shù)返回值;if語句條件表達(dá)式。

【解題思路】填空1:變量i是循環(huán)變量,它的取值范圍是在0到N之間。填空2:假如ss所指字符串?dāng)?shù)組中的字符串和t所指字符串相同的話,則返回其下標(biāo)值,即returnN-1;否則返回-1,即return-1。填空3:在main函數(shù)中輸出最終結(jié)果,推斷函數(shù)返回值n,假如n=0,說明沒有找到,否則輸出n。

【參考答案】(1)a2=k/10;(2)returni;

【考點(diǎn)分析】

本題考查:取數(shù)值n的各個(gè)位;return語句,將需要返回的函數(shù)值返回給函數(shù)main。

【解題思路】

(1)a2存放十位數(shù),所以是a2=k/10,此處是一個(gè)書寫錯(cuò)誤

(2)依據(jù)題意,要返回能被3整除的數(shù)的個(gè)數(shù),從循環(huán)體中

可以知道其個(gè)數(shù)是由i來計(jì)算的,所以返回的是i。

【參考答案】

voidfun(char*a)

{

while(*a!='\0')

a++;

10

a--;/*指針a指向字符串的尾部*/

while(*a=='*')

a--;/*指針a指向最終一個(gè)字母*/

*(a+1)='\0';/*在字符串最終加上結(jié)束標(biāo)志符*/

}

【考點(diǎn)分析】本題考查:刪除字符串尾部*號;刪除的主要思想是把不刪除的字符保留起來。

【解題思路】對于一個(gè)字符串要?jiǎng)h除其尾部的*號,只需要在最終一個(gè)不是*號的字符后面加上結(jié)束符號′\0′。詳細(xì)操作為:首先找到字符串的結(jié)尾,然后從最終一個(gè)字符開頭往前逐個(gè)推斷是否為*號,直到找到非*號字符為止,最終在該字符后面加上結(jié)束符號'\0'。

20

【參考答案】(1)next(2)t->data(3)t

【考點(diǎn)分析】本題考查:鏈表數(shù)據(jù)結(jié)構(gòu),結(jié)點(diǎn)的表示方法,把握鏈表數(shù)據(jù)結(jié)構(gòu)的基本思想;釋放內(nèi)存空間函數(shù)free。【解題思路】填空1:由于是鏈表操作,所以要使t逐一往后移動(dòng),語句為t=t->next。填空2:輸出鏈表結(jié)點(diǎn)的數(shù)據(jù)域,即t->data。填空3:使用free函數(shù)將t所指向的內(nèi)存空間釋放。釋放內(nèi)存空間函數(shù)free調(diào)用形式:free(void*p);。功能:釋放p所指向的一塊內(nèi)存空間,p是一個(gè)任意類型的指針變量,它指向被釋放區(qū)域的首地址。被釋放區(qū)應(yīng)是由malloc或calloc函數(shù)所安排的區(qū)域。

【參考答案】(1)voidfun(char*a)(2)printf("%c",*a);

【考點(diǎn)分析】本題考查:函數(shù)定義,本題為有參函數(shù)定義。printf函數(shù),其一般形式為"printf('格式掌握字符串',輸出表列);"。"%d"表示按十進(jìn)制整型輸出;"%ld"表示按十進(jìn)制長整型輸出;"%c"表示按字符型輸出等。非格式字符串在輸出時(shí)原樣輸出,起提示作用。

【解題思路】(1)定義函數(shù)時(shí)形參的類型要與調(diào)用函數(shù)中實(shí)參的類型全都,主函數(shù)中fun傳遞的是字符串s的首地址,所以此處形參應(yīng)為指針類型。(2)依據(jù)printf函數(shù)格式,很簡單找到錯(cuò)誤之處。

【參考答案】

char*fun(char*s,char*t)

{

inti,j;

for(i=0;s[i]!='\0';i++);/*求字符串的長度*/

for(j=0;t[j]!='\0';j++);

if(i0)

【考點(diǎn)分析】本題考查:函數(shù)定義,指針型變量作函數(shù)參數(shù);while循環(huán)語句。

【解題思路】函數(shù)的形參類型應(yīng)與實(shí)參類型相同,主函數(shù)中函數(shù)fun的調(diào)用方式說明其參數(shù)應(yīng)為指針類型,所以形參t應(yīng)定義為long*t。while循環(huán)的功能是,每循環(huán)一次就從s中的數(shù)上取出一位進(jìn)行運(yùn)算,直到取完為止,所以循環(huán)條件為s>0。

【參考答案】

voidfun(STRECa)

{

inti,j;

STRECt;

for(i=1;ia[j+1])

{t=a[j];a[j]=a[j+1];a[j+1]=a[j];}

選擇法:

for(i=0;ia[j])p=j(luò);

if(p?。絠)

{t=a[i];a[i]=a[p];a[p]=t;}

}

插入法:

for(i=1;it

doubleav=0.0;

*n=0;

for(i=0;is;

while(h!=NULL)/*通過循環(huán)找到最高分?jǐn)?shù)*/{if(maxs)max=h->s;

h=h->next;

}

returnmax;

}

【考點(diǎn)分析】本題考查:結(jié)構(gòu)體類型;指針型變量;鏈表的相關(guān)學(xué)問。

【解題思路】本題使用循環(huán)語句遍歷鏈表中的每個(gè)結(jié)點(diǎn),用推斷語句比較結(jié)點(diǎn)數(shù)據(jù)的域大小。留意,h是一個(gè)指向結(jié)構(gòu)體類型的指針變量,若要引用它所指向的結(jié)構(gòu)體中的某一成員時(shí),要用指向運(yùn)算符"->"。

26

【參考答案】(1)0(2)j--(3)j

【考點(diǎn)分析】本題考查:數(shù)組元素的引用;for循環(huán)語句。【解題思路】填空1:N×N矩陣,第一列元素表示為t[0][N-j-1],第一行元素表示為t[j][0],將第一列賦值給第一行,因此填入0。填空2:for循環(huán)語句中,變量j的變化范圍為從N-1遞減到0,因此j做自減1操作。填空3:最終將

臨時(shí)數(shù)組r中的元素賦值給矩陣最終一列。

【解題寶典】二維數(shù)組周邊元素的表示方法,通過設(shè)定數(shù)組下標(biāo)來完成。我們舉個(gè)簡潔的例子來說明,如二維數(shù)組a[3][3],我們列出它的全部數(shù)組元素:

a[0][0],a[0][1],a[0][2]

a[1][0],a[1][1],a[1][2]

a[2][0],a[2][1],a[2][2]

那么其周邊元素有a[0][0],a[0][1],a[0][2],a[1][0],a[1][2],a[2][0],a[2][1],a[2][2]。假如我們把a(bǔ)[3][3]改為a[i][j],就不難表示出該數(shù)組的周邊元素:

a[0][0],a[0][i]…a[0][N-i-1]…a[0][N-1]

a[1][0],…a[1][N-1]

a[N-j-1][0],…a[N-j-1][N-1]

a[N-1][0],a[N-1][1]…a[N-1][N-i-1]…a[N-1][N-1]

【參考答案】(1)doublef(doublex)(2)returns;

【考點(diǎn)分析】本題考查:函數(shù)定義,其一般形式為"類型標(biāo)識符函數(shù)名(形式參數(shù)列表)",其中類型標(biāo)識符指明白本函數(shù)的類型,函數(shù)的類型實(shí)際上就是函數(shù)返回值的類型。

【解題思路】該程序的流程是:fun程序?qū)(n)項(xiàng)循環(huán)累加,fun程序采納條件選擇語句計(jì)算函數(shù)f(x)的值。第一處錯(cuò)誤在于未定義函數(shù)f(doublex)的類型,因此返回值類型為double型,所以此處函數(shù)應(yīng)定義為double。其次處錯(cuò)誤的語法錯(cuò)誤。

【解題寶典】我們在做改錯(cuò)題目時(shí)候,首先應(yīng)當(dāng)檢查C語言語法是否有問題,在許多題目中都有類似的錯(cuò)誤。

【參考答案】

doublefun(intm)

{

inti;

doubles=0.0;

for(i=1;iscore[i](3)a

【考點(diǎn)分析】本題考查:函數(shù)定義;結(jié)構(gòu)變量成員函數(shù)的表示方法;函數(shù)返回值。

【解題思路】填空1:函數(shù)定義時(shí),類型標(biāo)識符指明白本函數(shù)的類型,我們前面已經(jīng)多次提到,函數(shù)的類型實(shí)際上是函數(shù)返回值的類型。該題中,用結(jié)構(gòu)指針變量作為函數(shù)類型標(biāo)識符。填空2:通過循環(huán)語句對指針a所指結(jié)構(gòu)體變量中的3門成果進(jìn)行修改,所以此處為ascore[i]。填空3:通過return語句將形參a返回給主調(diào)函數(shù)。

【解題寶典】結(jié)構(gòu)變量各個(gè)成員的表示方法:

(*結(jié)構(gòu)指針變量).成員名;

15

或:結(jié)構(gòu)指針變量->成員名

【參考答案】

(1)char*fun(char(*sq)[M])(2)returnsp;

【考點(diǎn)分析】本題考查:函數(shù)定義;return語句;

【解題思路】函數(shù)fun的形參為字符串指針數(shù)組,每個(gè)元素指向一個(gè)長度為M的字符串,要找出其中最長的字符串,可先假設(shè)指針數(shù)組的第1個(gè)元素所指的字符串最長,之后對字符串指針數(shù)組進(jìn)行遍歷,若遇字符串長度大于待定最長字符串的長度,則令該字符串為待定最長字符串,如此循環(huán)直至指針數(shù)組末尾,即可得到最長字符串的地址。

(1)此處是函數(shù)定義錯(cuò)誤,依據(jù)返回值類型可知該函數(shù)應(yīng)定義為字符型指針函數(shù)。

(2)由for循環(huán)體可知,指針sp指向長度最長的字符串,因此應(yīng)返回sp。

【參考答案】

voidfun(inta,intb,long*c)

{

*c=a%10+(b/10)*10+(a/10)*100+(b%10)*1000;

}

【考點(diǎn)分析】

本題考查:如何取出數(shù)值n的各個(gè)位;知道數(shù)值n的各個(gè)位,又如何表示該數(shù)值;指針型變量的使用。

【解題思路】

本題的主要問題如何取出a和b的個(gè)位數(shù)和十位數(shù),取出后如何表示成c中相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),所以分別對它們除10可得到它們的十位數(shù)(a/10),分別用10對它們求余可得到它們的個(gè)位數(shù)(a%10)。得到后對應(yīng)乘以1000、100、10、1就可得到c的千位數(shù)、百位數(shù)、十位數(shù)和個(gè)位數(shù)。留意:使用c時(shí)要進(jìn)行指針運(yùn)算。

30

【參考答案】(1)t[N](2)i=0;ia[mid])

【考點(diǎn)分析】本題考查:折半查找算法;函數(shù)定義;if…else語句。

【解題思路】(1)fun(inta,intm)函數(shù)的返回值為int類型,所以定義函數(shù)時(shí),函數(shù)的返回類型不能是void,而是int類型。這里int可以省略,若省略函數(shù)類型標(biāo)識符,系統(tǒng)將默認(rèn)為int型。elseIf(m>a[mid])中,關(guān)鍵字if需要區(qū)分大小寫,大寫是錯(cuò)誤的。

【解題寶典】折半查找算法,將數(shù)列按有序化(遞增或遞

減)排列,查找過程中采納跳動(dòng)式方式查找,即先以有序數(shù)列的中點(diǎn)位置為比較對象,假如要找的元素值小于該中點(diǎn)元素,則將待查序列縮小為左半部分,否則為右半部分。

通過一次比較,將查找區(qū)間縮小一半。

【參考答案】

voidfun(char*a,char*p)

{

char*t=a;

for(;tnext。填空2:if推斷語句表明當(dāng)p等于什么時(shí)就要返回,因此只能當(dāng)p等于NULL時(shí)返回,不用做后面的鏈表的逆置了。

填空3:把q的指針向后移動(dòng),才能實(shí)現(xiàn)將帶頭結(jié)點(diǎn)的單向鏈表逆置。因此本空填寫r。

【參考答案】(1)r=t;(2)應(yīng)填:r=t;或r=

【解題思路】從字符串s中找出子字符串的方法是:從第一個(gè)字符開頭,對字符串進(jìn)行遍歷,若s串的當(dāng)前字符等于t串的第一個(gè)字符,兩字符串的指針自動(dòng)加1,連續(xù)比較下一個(gè)字符;若比較至字符串t的末尾,則跳出循環(huán);若s串的字符與t串的字符不對應(yīng)相同,則連續(xù)對s串的下一個(gè)字符進(jìn)行處理。

【參考答案】

voidfun(chara[M][N],char*b)

{

inti,j,k=0;

for(i=0;i=num)(2)t=s/n;【考點(diǎn)分析】本題考查:while循環(huán)語句;區(qū)分求余運(yùn)算(%)和除法運(yùn)算(/)。【解題思路】(1)函數(shù)fun中while語句的作用是,當(dāng)新的一項(xiàng)大于給定參數(shù)時(shí),循環(huán)累計(jì)計(jì)算s的值。而題目要求最終一項(xiàng)的肯定值小于給定參數(shù),因此循環(huán)條件應(yīng)當(dāng)是while(fabs(t)>=num)。(2)變量t用來存放最終一項(xiàng)的值,由于每一項(xiàng)均為1或-1除以一個(gè)數(shù),所以此處應(yīng)使用除法運(yùn)算符"/"。【參考答案】voidfun(chara,charb,intn){inti,k=0;for(i=0;a[i]!='\0';i++)if(i!=n)/*將不是指定下標(biāo)的字符存入數(shù)組b中*/b[k++]=a[i];b[k]='\0';/*在字符串最終加上結(jié)束標(biāo)識*/}【考點(diǎn)分析】本題考查:刪除字符串中指定字符,我們一般采納保留非指定字符的方法。【解題思路】本題要求刪除字符串中指定下標(biāo)的字符,即把非指定下標(biāo)的字符保留,所以if語句條件表達(dá)式的內(nèi)容是if(i!=n)。字符串最終不要遺忘加上字符串結(jié)束標(biāo)識'\0'。33

【參考答案】(1)p->next(2)q(3)p->next

【解題思路】填空1:從第2個(gè)while循環(huán)可知,q的初值應(yīng)當(dāng)為p的next,故此空應(yīng)當(dāng)填寫p->next。

填空2:第2個(gè)while循環(huán)表示的是每次從鏈表剩下的樹中

找出最小的數(shù),因此此空應(yīng)當(dāng)以q是否為空來推斷循環(huán)是否結(jié)束,所以此空應(yīng)當(dāng)填寫q。

填空3;當(dāng)找到一個(gè)最小的數(shù)時(shí)p應(yīng)當(dāng)向后移,因此此空應(yīng)當(dāng)填寫p->next。

【參考答案】(1)while(*s)或while(*s!='\0')(2)s++;

【解題思路】(1)通過while語句可對字符串全部字符進(jìn)

行遍歷,循環(huán)條件是對當(dāng)前字符進(jìn)行推斷,若當(dāng)前字符不是字符串結(jié)尾,則對其進(jìn)行其他操作。(2)由于該循環(huán)通

過指針s的移動(dòng)遍歷字符串,所以每循環(huán)一次要使指針向后移動(dòng)一個(gè)位置,而不是將指針?biāo)傅脑丶?。【參考答案】

voidfun(int*w,intp,intn){intx,j,ch;for(x=0;x可知本空應(yīng)當(dāng)填寫next。填空3:本題要求將不帶頭結(jié)點(diǎn)的單向鏈表逆置,為了使q的指針向后移,此空應(yīng)當(dāng)填寫r。

【參考答案】

(1)if(i%2||s[i]%2==0)或if(i%2!=0||s[i]%2==0)

(2)t[j]=′\0′;或t[j]=0;

19

【解題思路】(1)依據(jù)題意,將字符串s中位于奇數(shù)位置的字符或ASCII碼值為偶數(shù)的字符,依次放入字符串t中,所

以if條件中要使用"或"運(yùn)算。(2)變量j掌握字符串t的下標(biāo),所以是t[j]。

【參考答案】

voidfun(int(*s)[10],int*b,int*n,intmm,intnn){

inti,j;

for(

溫馨提示

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

最新文檔

評論

0/150

提交評論