版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二手房購房的合同范文(2024版)
- 2025至2030年中國出口車型空氣濾芯數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國三傳叉接頭總成數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025年中國卡槽市場調(diào)查研究報(bào)告
- 二零二五年度裝配式建筑承攬合同4篇
- 二零二五年度國際貿(mào)易承兌擔(dān)保合同4篇 - 副本
- 二零二五年度工業(yè)0智能制造標(biāo)準(zhǔn)委托代理合同3篇
- 2025年版企業(yè)內(nèi)部派遣員工勞動(dòng)合同模板4篇
- 2025年度存量房買賣合同糾紛訴訟證據(jù)收集指南4篇
- 二零二四年度新能源項(xiàng)目投資聘用合同3篇
- 初級中學(xué)語文教師資格考試學(xué)科知識與教學(xué)能力試題及解答參考(2024年)
- 《帶一本書去讀研:研究生關(guān)鍵學(xué)術(shù)技能快速入門》筆記
- 人教版八年級數(shù)學(xué)下冊舉一反三專題17.6勾股定理章末八大題型總結(jié)(培優(yōu)篇)(學(xué)生版+解析)
- 2024屆上海高考語文課內(nèi)古詩文背誦默寫篇目(精校版)
- DL-T5024-2020電力工程地基處理技術(shù)規(guī)程
- 2024年度-美團(tuán)新騎手入門培訓(xùn)
- 初中數(shù)學(xué)要背誦記憶知識點(diǎn)(概念+公式)
- 駕照體檢表完整版本
- 農(nóng)產(chǎn)品農(nóng)藥殘留檢測及風(fēng)險(xiǎn)評估
- 農(nóng)村高中思想政治課時(shí)政教育研究的中期報(bào)告
- 20100927-宣化上人《愣嚴(yán)咒句偈疏解》(簡體全)
評論
0/150
提交評論