博學(xué)計(jì)算機(jī)二級考試上機(jī)試題_第1頁
博學(xué)計(jì)算機(jī)二級考試上機(jī)試題_第2頁
博學(xué)計(jì)算機(jī)二級考試上機(jī)試題_第3頁
博學(xué)計(jì)算機(jī)二級考試上機(jī)試題_第4頁
博學(xué)計(jì)算機(jī)二級考試上機(jī)試題_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1.【填空】函數(shù)fun的功能是計(jì)算如下公式。直到,并且把計(jì)算結(jié)果作為函數(shù)值返回。例如,

若形參e的值為le-3,則函數(shù)返回值為0.551690。

【答案】[1]3.0[2]>[3](t+1)

【改錯(cuò)】函數(shù)fun的功能是:求出如下分?jǐn)?shù)序列的前n項(xiàng)之和。和值通過函數(shù)值返回。例如,

若n=5,則應(yīng)輸出8.391667。

【答案】[11doublefun(intn)

[2]s=s+(double)a/b;

【編程】請編寫函數(shù)fun,其功能是:找出2XM整型二維數(shù)組中最大元素的值,并將此值

返回調(diào)用函數(shù)。

【答案】

intfun(inta[][M])

(

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

for(i=0;i<2;i++)

for(j=0;j<M;j++)

if(max<a[i][j])

max=a[i][j];

returnmax;

}

2.【填空】函數(shù)fun的功能是:計(jì)算如下公式前n項(xiàng)的和并作為函數(shù)值返回。例如,當(dāng)形參

n的值為10時(shí),函數(shù)返回值為9.612558。

【答案】11[0[2]n[3](t*t)

【改錯(cuò)】函數(shù)fun的功能是:統(tǒng)計(jì)substr所指的子符串在str所指的字符串中出現(xiàn)的次數(shù)。

例如,若字符串為aaasIkaaas,子字符串為as,則應(yīng)輸出2。

【答案】

[1]for(i=0;str[i]:i++)

[2]if(substr[k+l]=='\0')

【編程】編寫函數(shù)fun,其功能是:根據(jù)以下公式求”的值(要求精度0.0005,即某項(xiàng)小于

0.0005時(shí)停止迭代)。程序運(yùn)行后,若輸入精度0.0005,則程序應(yīng)輸出為3.14…。

【答案】

Doublefun(doubleeps)

(

doubles=1.0,si=1.0;

intn=1;

while(sl>=eps)

{sl=sl]s=s+sl;

n++;

return2]

3.

【填空】函數(shù)fun的功能是:統(tǒng)計(jì)形參s所指的字符串中數(shù)字字符出現(xiàn)的次數(shù),并存放在形

參t所指的變量中,最后在主函數(shù)中輸出。

例如,若形參s所指的字符串為abcdef35adgh3kjsdf7,則輸出結(jié)果為4。

【答案】[11s[i][2],9,[3】*t=n

【改錯(cuò)】函數(shù)fun的功能是:實(shí)現(xiàn)兩個(gè)變量值的交換,規(guī)定不允許增加語句和表達(dá)式。例如,

變量a中的值原為8,b中的值原為3,程序運(yùn)行后a中的值為3,b中的值為8。

【答案】【1】t-*x;*x=y;

[2]return(t);

【編程】編寫函數(shù)fun,其功能是:求出1到1000之間能被7或11整除,但不能同時(shí)被7

和11整除的所有整數(shù),并將其放在a所指的數(shù)組中,通過n返回這些數(shù)的個(gè)數(shù)。

【答案】

voidfun(int*a,int*n)

{

inti,j=0;

for(i=l;i<=1000;i++)

if((i%7==0lli%11==0)&&i%77!=0)

a|j++]=i;

*n=j;

4.

【填空】下列給定程序中,函數(shù)fun的功能是:把形參a所指數(shù)組中的奇數(shù)按原順序依次存

放到a⑼、a[l]、a[2b……中,把偶數(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。

【答案】11】1[2]j++[3]j

【改錯(cuò)】函數(shù)fun的功能是:求兩個(gè)非零正整數(shù)的最大公約數(shù),并作為函數(shù)值返回。例如,

若numl和num2分別為49和21,則輸出的最大公約數(shù)為7;若numl和num2分別為27

和81,則輸出的最大公約數(shù)為27。

【答案】【l】t=a;a=b;b=t;

[2]return(b);

【編程】規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun,其功能是:刪除字符串中

所有的*號。編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為:

****A*BC*DEF*G*******,刪除后字符串中的內(nèi)容應(yīng)當(dāng)是:ABCDEFGo

【答案】

voidfun(char*a)

(

inti,j=0;

for(i=0;a[i]!='\0';i++)

if(a[i]!=,*,)

a|j++]=a[i];

a[j]='\0';

5.

【填空】函數(shù)fun的功能是:將形參n中,各位上為偶數(shù)的數(shù)取出,并按原來從高位到低位

相反的順序組成一個(gè)新數(shù),作為函數(shù)值返回。例如,輸入?個(gè)整數(shù)27638496,函數(shù)返回值

為64862o

【答案】【1】0[2]10]

【改錯(cuò)】函數(shù)fun的功能是:將長整型數(shù)中各位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在

t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù)為7531。

【答案】

[1]*t=0:[2]if(d%2!=0)

【編程】編寫函數(shù)fun,其功能是:實(shí)現(xiàn)兩個(gè)字符串的連接(不要使用庫函數(shù)strcat),即把p2

所指的字符串連接到pl所指的字符串的后面。例如,分別輸入下面兩個(gè)字符串:

FirstString—SecondString程序輸出:FirstString—SecondString

【答案】

voidfun(charpl[],charp2[])

(

inti,j;

for(i=0;pl[i]!='\0';i++);

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

pl[i++]=p2|j];

pl[i]=z\0r;

6.

【填空】函數(shù)fun的功能是:把形參a所指數(shù)組中的最小值放在元素a[0]中,接著把a(bǔ)所指

數(shù)組中的最大值放在a[l]元素中;再把a(bǔ)所指數(shù)組元素中的次小值放在a[2]>|',把a(bǔ)所指數(shù)

組元素中的次大值放在a[3],以此類推。例如,若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)。

【答案】

[11a[i][2]a[j][3]a[j]

【改錯(cuò)】函數(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。

【答案】【1】去掉分號

[2]case1:case2:return1;

【編程】某學(xué)生的記錄由學(xué)號、8門課程成績和平均分組成,學(xué)號和8門課程的成績已在主

函數(shù)中給出,請編寫函數(shù)fun,其功能是:求出該學(xué)生的平均分,并放入記錄的ave成員中。

例如,學(xué)生的成績85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。

【答案】

voidfun(STREC*a)

(

inti;

a—>ave=0.0;

for(i=0:i<N;i++)

a->ave=a->ave+a—>s[i];

8.

【填空】函數(shù)fun的功能是:求ss所指字符串?dāng)?shù)組中長度最短的字符串所在的行下標(biāo),作

為函數(shù)值返回,并把其串長放在形參n所指的變量中。ss所指字符串?dāng)?shù)組中共有M個(gè)字符

串,且串長<N。

【答案】【1]M[2]<[3]k

【改錯(cuò)】函數(shù)fun的功能是:將tt所指字符串中的小寫字母全部改為對應(yīng)的大寫字母,其它

字符不變。

例如,若輸入"Ab,cD",則輸出"AB,CD".

【答案】[1]if((tt[i]>='a')&&(tt[i]<='z')

[2]tt[i]-=32;

【編程】編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素?cái)?shù)存入xx所指數(shù)組中,

非素?cái)?shù)的個(gè)數(shù)通過k返回。例如,若輸入17,則應(yīng)輸出:46891012141516。

【答案】

voidfun(intm,int*k,intxx[])

inti,j,n=0;

for(i=4;i<m;i++)

{for(j=2;j<i;j++)

if(i%j==O)break;

if(j<i)xx[n++]=i;

)

*k=n;

9.

【填空】函數(shù)fun的功能是:將s所指字符串中的所有數(shù)字字符移到所有非數(shù)字字符之后,

并保持?jǐn)?shù)字字符串和非數(shù)字字符串原有的次序。

例如,s所指的字符串為def35adh3kjsdf7,執(zhí)行后結(jié)果為defadh齒sdf3537。

【答案】[11j++

[2]s[i]=tl[i][3]j

【改錯(cuò)】函數(shù)fun的功能是:用冒泡法對6個(gè)字符串進(jìn)行升序排列。

【答案】

[1]for(j=l+l;j<6;j++)

[2](pstrl)=*(pstr+j);

【編程】編寫函數(shù)fun,其功能是:求ss所指字符串中指定字符的個(gè)數(shù),并返回此值。例如,

若輸入字符串123412132,輸入字符為1,則輸出3。

【答案】

intfun(char*ss,charc)

{

inti=0;

for(:*ss!='\OZ;ss++)

if(*ss==c)

i++;

returni;

10.

【填空】下列給定程序中已建立一個(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ù)仍保持遞增有序。

【答案】【1]x[2]p[3]s

【改錯(cuò)】函數(shù)fun的功能是:計(jì)算正整數(shù)num各位上的數(shù)字之積。例如,若輸入252,則輸

出應(yīng)該是20。若輸入202,則輸出應(yīng)該是0。

【答案】[1]longk=l;

[2]num/=10;

【編程】編寫函數(shù)fun,其功能是:計(jì)算n門課程的平均分,結(jié)果作為函數(shù)值返回。例如:

若有5門課程的成績是:90.5,72,80,61.5,55,則函數(shù)的值為:71.80。

【答案】

floatfun(float*a,intn)

(

floatav=0.0;

inti;

fdr(i=O:i<n;i++)

av=av+a[i];

return(av/n);

11.

【填空】函數(shù)fun的功能是:將形參a所指數(shù)組中的前半部分元素中的值與后半部分元素中

的值對換。形參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、4o

【答案】11】1[2]i[3]a[p+i]

【改錯(cuò)】函數(shù)fun的功能是:把從主函數(shù)中輸入的3個(gè)數(shù),最大的數(shù)放在a中,中間的數(shù)放

在b中,最小的數(shù)放在c中。例如,若輸入的數(shù)為:551234,輸出的結(jié)果應(yīng)當(dāng)是:a=

55.0,b=34.0,c=12.0o

【答案】

[1]floatk;[2]if(*a<*c)

【編程】學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已放入主函數(shù)中的結(jié)構(gòu)體數(shù)組s中,

請編寫函數(shù)ftm,其功能是:把分?jǐn)?shù)最高的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中。注意:分?jǐn)?shù)最高

的學(xué)生可能不止一個(gè),函數(shù)返回分?jǐn)?shù)最高的學(xué)生的人數(shù)。

【答案】

intfun(STREC*a,STREC*b)

{

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

for(i=0;i<N;i++)

if(max<a[i].s)max=a[i].s;

for(i=0;i<N;i++)

if(max==a[i].s)b[j++]=a[i];

returnj;

12.

【填空】函數(shù)fun的功能是:從形參ss所指字符串?dāng)?shù)組中,刪除所有串長超過k的字符串,

函數(shù)返回剩余字符串的個(gè)數(shù)。ss所指字符串?dāng)?shù)組中共有N個(gè)字符串,且串長小于M。

【答案】[11N[2]k[3]ss[i]

【改錯(cuò)】函數(shù)fun的功能是:逐個(gè)比較p、q所指兩個(gè)字符串對應(yīng)位置上的字符,并把ASCII

值大或相等的字符依次存放到c所指的數(shù)組中,形成一個(gè)新的字符串。例如,若主函數(shù)中a

字符串為aBCDeFgH,b字符串為ABcd,則c中的字符串應(yīng)為aBcdeFgH。

【答案】【1】intk=0;

[2]while(*pll*q)

【編程】規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:除了字符串

前導(dǎo)的*號之外,將串中其它*號全部刪除。在編寫函數(shù)時(shí),不得使用C語言提供的字符串

函數(shù)。例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)

當(dāng)是:****ABCDEFG。

【答案】

voidfun(char*a)

(

inti=0;

char*p=a:

while(*p&&*p=='*')

{

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

)

while(*p)

(

if(*p!=,*')

(

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

)

p++;

)

a[i]='\0';

13.

【填空】下列給定程序中,函數(shù)fun的功能是:把形參s所指字符串中下標(biāo)為奇數(shù)的字符右

移到下一個(gè)奇數(shù)位置,最右邊被移出字符串的字符繞回放到第一個(gè)奇數(shù)位置,下標(biāo)為偶數(shù)的

字符不動(dòng)(注:字符串的長度大于等于2)。例如,形參s所指字符串為abcdefgh,執(zhí)行結(jié)果

為ahcbedgfo

【答案】

[1]1[1J*(s+k)[1]c

【改錯(cuò)】fun函數(shù)的功能是:求表達(dá)式s=aa…aa—…一aaa—aa-a(此處aa…aa表示n

個(gè)a,a和n的值在1至9之間)例如,a=3,n=6,則以上表達(dá)式為:s=333333—33333

一3333—333—33—3其值是296298。a和n是fun函數(shù)的形參,表達(dá)式的值作為函數(shù)值傳回

main函數(shù)。

【答案】【1】longs=0,t=0;

[1]t=t/10;

【編程】編寫函數(shù)voidfun(char*tt,intpp[]),統(tǒng)計(jì)在tt所指的字符串中山到Z,26個(gè)小寫字

母各自出現(xiàn)的次數(shù),井依次放在pp所指的數(shù)組中。例如,當(dāng)輸入字符串a(chǎn)bcdefgabcdeabc后,

程序的輸出結(jié)果應(yīng)該是:33322110000000000000000000

【答案】

voidfun(char*tt,intpp[|)

(

inti;

for(i=0;i<26;i++)

Pp[i]=0;

if(*tt>='a'&&*tt<='z')

pp[*tt—'a']++;

14.

【填空】函數(shù)fun的功能是:在形參ss所指字符串?dāng)?shù)組中查找與形參t所指字符串相同的串,

找到后返回該串在字符串?dāng)?shù)組中的位置(即下標(biāo)值),若未找到則返回一1。ss所指字符串?dāng)?shù)

組中共有N個(gè)內(nèi)容不同的字符串,且串長小于M。

【答案】【1]N[2]N-1[3]0

【改錯(cuò)】函數(shù)fun的功能是:從整數(shù)1到55之間,查找能被3整除且有一位上的數(shù)值是5

的數(shù),把這些數(shù)放在b所指的數(shù)組中,這些數(shù)的個(gè)數(shù)作為函數(shù)值返回。規(guī)定函數(shù)中al放個(gè)

位數(shù),a2放十位數(shù)。

【答案】[11a2=k/10;

[2]returni;

【編程】規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:將字符串尾

部的*號全部刪除,前面和中間的*號不動(dòng)。

例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:

****A*BC*DEF*G。在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。

【答案】

voidfun(char*a)

(

while(*a!='\0')

a++;

a-----;

while(*a==,*')

a-----;

*(a+l)=/\0';

15.

【填空】已建立了一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,在main函數(shù)中將多次調(diào)用fun函數(shù),每調(diào)用

一次,輸出鏈表尾部結(jié)點(diǎn)中的數(shù)據(jù),并釋放該結(jié)點(diǎn),使鏈表縮短。

【答案】

[1]next[2]t—>data[3]t

【改錯(cuò)】函數(shù)fun的功能是:將字符串中的字符逆序輸出,但不改變字符串中的內(nèi)容。例如,

若字符串為abed,則應(yīng)輸出:debao

【答案】[1]voidfun(char*a)

[2]printf("%c”,*a);

【編程】編寫函數(shù)fun,其功能是:比較字符串的長度,(不得使用C語言提供的求字符串

長度的函數(shù)),函數(shù)返回較長的字符串。若兩個(gè)字符長度相同,則返回第一個(gè)字符串。

例如,輸入beijingvCR>shanghai<CR>(vCR>為回車鍵),函數(shù)將返回shanghaio

【答案】

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

(

inti,j;

for(i=0;s[i]!='\0';i++);

for(j=0;t|j]!=7\0f;j++);

if(i>=j)

returns;

else

returnt;

16.

【填空】函數(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ù)。

【答案】

[1]n/2[2]i[3]a[n-i-l]

【改錯(cuò)】函數(shù)fun的功能是:將一個(gè)由八進(jìn)制數(shù)字字符組成的字符串轉(zhuǎn)換成與其面值相等的

十進(jìn)制整數(shù)。規(guī)定輸入的字符串最多只能包含5位八進(jìn)制數(shù)字字符。

例如,若輸入77777,則輸出32767。

【答案】【1】n=*p—'O';

[2]n=n*8+*p—'O';

【編程】學(xué)生的記錄由學(xué)號成績組成,N名學(xué)生的數(shù)據(jù)已放入主函數(shù)中的結(jié)構(gòu)體數(shù)組sH」,

請編寫函數(shù)fun,其功能是:函數(shù)返回該學(xué)號的學(xué)生數(shù)據(jù),指定的學(xué)號在主函數(shù)中輸入。若

沒找到指定學(xué)號,在結(jié)構(gòu)體變量中給學(xué)號置空串,給成績置一1,作為函數(shù)值返回。(用于字

符串比較的函數(shù)是strcmp)。

【答案】

STRECfun(STREC*a,char*b)

(

inti;

STRECstr={"\0",-1}:

if(strcmp(a[i].num,b)==O)

str=a[i];

returnstr;

18.

【填空】函數(shù)fun的功能是:有NXN矩陣,根據(jù)給定的m(m<=N)值,將每行元素中的值

均向右移動(dòng)m個(gè)位置,左位置為0。例如,N=3,m=2,有下列矩陣123

456

789

程序執(zhí)行結(jié)果為

001

004

007

【答案】

[1]i++[2]m[3]m

【改錯(cuò)】函數(shù)fun的功能是:計(jì)算并輸出high以內(nèi)最大的10個(gè)素?cái)?shù)的和。high的值由主函

數(shù)傳給fun函數(shù)。例如,若high的值為100,則函數(shù)的值為732。

【答案】

[1]while((high>=2)&&(n<IO))

[2]yes=0;break:

【編程】編寫函數(shù)fun,其功能是:利用下面的簡單迭代方法求方程cos(x)—x=0的一個(gè)實(shí)

根。

xn+1=cos(xn)

迭代步驟如下:

⑴取xl初值為0.0;

⑵x0=xl,將xl的值賦給x0;

(3)x1=cos(xO),求出一個(gè)新的xl;

⑷若x0—xl的絕對值小于0.000001,執(zhí)行步聚(5),否則執(zhí)行步聚(2);

(5)所求xl就是方程cos(x)—x=0的一個(gè)實(shí)根,作為函數(shù)值返回。

程序?qū)⑤敵鼋Y(jié)果Root=0.739086c

【答案】

floatfun()

(

floatxl=0.0,xO;

do

(

x0=xl;

xl=cos(x0);

)

while(fabs(x0-xl)>=le—6);

returnxl;

19.

【填空】程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲學(xué)生的學(xué)號、姓名和3門課的成績。函數(shù)fun

的功能是:將形參a所指結(jié)構(gòu)體變量中的數(shù)據(jù)賦給函數(shù)中的結(jié)構(gòu)體變量b,并修改b中的學(xué)

號和姓名,最后輸出修改后的數(shù)據(jù)。

例如,a所指變量中的學(xué)號、姓名和三門課的成績依次是:100()1、"ZhangSan"、95、

80、88,則修改后輸出b中的數(shù)據(jù)應(yīng)為:為002、“LiSi"、95、80、88。

【答案】【1】a【2】b.name

[3]score|i|

【改錯(cuò)】函數(shù)fun的功能是:刪除s所指字符中所有的小寫字母c。

【答案】[1]s[j++]=s[i];或{s|j]=s[i];j++;}

【2]s[j]='\0,;

規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:將字符串中的前

導(dǎo)*號全部移到字符串的尾部。例如,字符串中的內(nèi)容為:*******A*BC*DEF*G****,移

動(dòng)后,字符串中的內(nèi)容應(yīng)當(dāng)是:A*BC*DEF*G***********。在編寫函數(shù)時(shí),不得使用C語

言提供的字符串函數(shù)。

【答案】

voidfun(char*a)

(

inti=0,n=0;

char*p;

p=a;

while(*p=='*')

{

n++;p++;

}

while(*p)

(

a[i]—*P;i++;p++;

)

while(n!=0)

{

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

}

a[i]='\0';

)

21

【填空】函數(shù)fun的功能是:有NXN矩陣,將矩陣的外圍元素做順時(shí)針旋轉(zhuǎn)。操作順序是:

首先將第一行元素的值存入臨時(shí)數(shù)組r,然后使第一列成為第一行,最后一行成為第一列,

最后一列成為最后一行,再使臨時(shí)數(shù)組中的元素成為最后一列。

例如,若N=3,有下列矩陣:

123

456

789

操作后應(yīng)為:

741

852

963

【答案】11】0[2]j——【3】j

【改錯(cuò)】函數(shù)fun的功能是:計(jì)算S=f(—n)+f(—n+l)+…+f(0)+f(l)+f(2)+…+f(n)的

值。

例如,當(dāng)n的值為5時(shí)、函數(shù)值應(yīng)為10.407143。f(x)函數(shù)定義如下:

f(x)=(x+l)/(x—2)x>0且xW2

f(x)0x=0或x=2

(x—l)/(x—2)x<0

【答案】[1]doublef(doublex)

[2]returns;

【編程】編寫函數(shù)fun,其功能是計(jì)算:s作為函數(shù)值返回。在C語言中可調(diào)用log(n)函數(shù)

求ln(n)。log函數(shù)的引用說明為:doublelog(doublex)o例如,若m的值為20,則fun函數(shù)

值為6.506583。

【答案】

doublefun(intm)

|

inti;

doubles=0.0;

fbr(i=1;iv=m;i++)

s=s+log(i);

returnsqrt(s);

}

25

【填空】函數(shù)fun的功能是:將NXN矩陣主對角線元素的值與反向?qū)蔷€對應(yīng)位置上元素

的值進(jìn)行交換。

例如,若N=3,有下列矩陣:

123

456

789

交換后為:

321

456

987

【答案】【1[[2]i=0;i<N[3]s

【改錯(cuò)】由N個(gè)有序整數(shù)組成的數(shù)列已放在一維數(shù)組中,下列給定程序中函數(shù)fun的功能

是:利用折半查找法查找整數(shù)m在數(shù)組中的位置。若找到,返回其下標(biāo)值;否則,返回一1。

折半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍low和high(low<high),

然后用m與中間位置(mid)上元素的值進(jìn)行比較。如果m的值大于中間位置元素的值,則下

一次的查找范圍落在中間位置之后的元素中;反之,下一次的查找范圍落在中間位置之前的

元素中。直到low>high,查找結(jié)束。

【答案】【1】intfun(inla[],intm)[2]elseif(m>a[mid])

【編程】假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:除了尾部的*

號之外,將字符中的其它的*號全部刪除。形參p已指向字符串中最后的一個(gè)字母。在編寫

函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為

****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是ABCDEFG*******。

【答案】

voidfun(char*a,char*p)

{

char*t=a;

for(:t<=p:t++)

if(*t!=,*,)

*(a++)=*t;

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

*(a++)=*t;

*a='\0';

26

【填空】函數(shù)fun的功能是:找出100?999之間(含100和999)所有整數(shù)中各位上數(shù)字之和

為x(x為正整數(shù))的整數(shù),并輸出;符合條件的整數(shù)個(gè)數(shù)作為函數(shù)值返回。例如,當(dāng)x值為5

時(shí),100?999之間各位上數(shù)字之和為5的整數(shù)有:104、113、122、131、140、203、212、

221、230、302、311、320、401、410、500,共有15個(gè)。當(dāng)x值為27時(shí),各位數(shù)字之和為

27的整數(shù)是:999,只有1個(gè)。

【答案】11】999[2]t/10[3]x

【改錯(cuò)】函數(shù)fun的功能是:從低位開始依次取出長整型變量s中偶數(shù)位上的數(shù),構(gòu)成一個(gè)

新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為7654321時(shí),t中的數(shù)

為642o

【答案】【1】voidfun(longs,long*t)[2]while(s>0)

【編程】學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已放入主函數(shù)中的結(jié)構(gòu)體數(shù)組s中,

請編寫函數(shù)fun,其功能是:按分?jǐn)?shù)降序排列學(xué)生的記錄,高分在前,低分在后。

【答案】

voidfun(STRECa[])

{

inti,j;

STRECt:

for(i=1;i<N;i++)

for(j=0;j<N-l;j++)if(a[j].s<a[j+l].s)

{t=a[j];a[j]=a|j+l];a[j+l]=t;}

27

【填空】程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲學(xué)生的學(xué)號、姓名和3門課的成績。函數(shù)fun

的功能是:對形參b所指結(jié)構(gòu)體變量中的數(shù)據(jù)進(jìn)行修改,并在主函數(shù)中輸出修改后的數(shù)據(jù)。

例如,若b所指變量t中的學(xué)號、姓名和三門課的成績依次是:10002、"ZhangQi"、93、85、

87,修改后輸出t中的數(shù)據(jù)應(yīng)為:10004、"LiJie"、93、85、87。

【答案】【1】—>sno[2]—>name[3]&t

【改錯(cuò)】函數(shù)fun的功能是:用遞歸算法求形參a的平方根。求平方根的迭代公式如下:例

如,a為2時(shí),平方根值為:1.414214。

【答案】[I]doublefun(doublea,doublexO)

[2]if(fabs(xl-x0)>=0.00001)

【編程】學(xué)生的記錄由學(xué)號和成績組成。N名學(xué)生的數(shù)據(jù)已放入主函數(shù)中的結(jié)構(gòu)體數(shù)組s中,

請編寫函數(shù)ftin,其功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于

平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。

【答案】

doublefun(STREC*a,STREC*b,int*n)

inti;

doubleav=0.0:

*n=0;

for(i=0;i<N;i++)

av=av+a[i].s;

av=av/N;

fbr(i=O:i<N;i++)

if(av<=a[i].s)

{b[*n]=a[i];*n=*n+l;}

returnav;

29

【填空】函數(shù)fun的功能是:有NXN矩陣,以主對角線為對稱線,對稱元素相加并將結(jié)果

存放在左下三角元素中,右上三角元素置為0。

例如,若N=3,有下列矩陣:

123

456

789

計(jì)算后結(jié)果為

100

650

10149

【答案】【1][N][2]t[i][j][3]t[j][i]

【改錯(cuò)】函數(shù)fun的功能是:計(jì)算函數(shù)F(x,y,z)=(x+y)/(x—y)+(z+y)/(z—y)的值。其中

x和y的值不相等,z和y的值不相等。

例如,當(dāng)x的值為9,y的值為11,z的值為15時(shí),函數(shù)值為-3.50。

【答案】【I】#defineFU(m,n)(m)/(n)[2]return(value);

【編程】規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun,其功能是:將字符串中的

前導(dǎo)*號全部刪除,中間和尾部的*號不刪除。

例如,字符串中的內(nèi)容為:*******A*BC*DEF*G****,刪除后字符串中的內(nèi)容應(yīng)當(dāng)是:

A*BC*DEF*G****。編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。

【答案】

voidfun(char*a)

(

char*p=a;

while(*p=='*,)

p++;

for(;*p!='\0';p++,a++)

*a=*p;

*a='\0';

31

【填空】函數(shù)fun的功能是:計(jì)算下式前n項(xiàng)的和,并作為函數(shù)值返回。

例如,若主函數(shù)從鍵盤給n輸入50后,則輸出為ST.960784。

【答案】【1】double[2]j

[3]1.0/t

【改錯(cuò)】函數(shù)fun的功能是:判斷一個(gè)整數(shù)是否為素?cái)?shù),若是素?cái)?shù)返回1,否則返回0。

在main()函數(shù)中,若fun返回1輸出YES,若fun返回0輸出NO!。

【答案】【1】正確:k++;

[2]正確:if(m==k)

【編程】請編寫函數(shù)fun,其功能是:找出一維整型數(shù)組元素中最大的值及其所在的下標(biāo),

并通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。

主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個(gè)數(shù),max存放最大值,index存放最大值所在

元素的下標(biāo)。

【答案】

voidfun(inta[],intn,int*max,int*d)

(

inti;

*max=a[0];

*d=0;

for(i=0;i<n;i++)

if(*max<a[i])

{*max=a[i];*d=i;}

32

【填空】函數(shù)fun的功能是計(jì)算下式

直到,并將計(jì)算結(jié)果作為函數(shù)值返回。例如,若形參e的值為le-3,函數(shù)的返回值為

2.985678o

【答案】11】0[2]i++

[3]2.0]

【改錯(cuò)】函數(shù)fun的功能是:將s所指字符串的正序和反序進(jìn)行連接,形成的新串放在t所

指的數(shù)組中。

例如,當(dāng)s所指字符串為:"ABCD"時(shí),t所指字符串中的內(nèi)容應(yīng)為:"ABCDDCBA”。

【答案][11voidfun(char*s,char*t)【2】t⑵

【編程】編寫函數(shù)fun,其功能是:將s所指字符串中除了下標(biāo)為奇數(shù)同時(shí)ASCII值也為奇

數(shù)的字符之外,其余的所有字符全部刪除,串中剩余字符所形成的一個(gè)新串放在t所指的數(shù)

組中。例如,若s所指字符串的內(nèi)容為:"ABCDEFG12345",其中字符A的ASCII碼值為

奇數(shù),但所在元素的下標(biāo)為偶數(shù),因此需要?jiǎng)h除;而字符1的ASCII碼值為奇數(shù),所在數(shù)

組中的下標(biāo)也為奇數(shù),因此不應(yīng)當(dāng)刪除,其它依此類推。最后t所指數(shù)組中的內(nèi)容應(yīng)為:“135”。

【答案】

voidfun(char*s,chart[])

(

inti,j=0,n;

n=strlen(s);

for(i=0;i<n;i++)

if(i%2!=0&&s[i]%2!=0)

(

j++;

)

\0,;

33

【填空】函數(shù)fun的功能是:在形參s所指字符串中的每個(gè)數(shù)字字符之后插入一個(gè)*號。例

如,形參s所指的字符串為def35adh3kjsdf7,執(zhí)行后結(jié)果為def3]

【答案】11】&&[2]0[3]s[j]

【改錯(cuò)】函數(shù)fun的功能是:根據(jù)整型形參m,計(jì)算如下公式的值。

例如,若m的值為5,則應(yīng)輸出1.463611。

【答案】【1】for(i=2;iv=m;i++)[2]y+=1.0/(i*i);或y+=(double)1.0/(i*i)

【編程】編寫函數(shù)fun,其功能是:實(shí)現(xiàn)B=A+A1即將矩陣A加上A的轉(zhuǎn)置,存放在矩

陣B中。計(jì)算結(jié)果在main函數(shù)中輸出。例如,輸入下面的矩陣:其轉(zhuǎn)置矩陣為:

程序輸出:

2610

61014

101418

【答案】

voidfun(inta[3][3],intb[3][3])

inti,j;

for(i=0;i<3;i++)

for(j=O;j<3;j++)

b[i]U]=a[i]U]+aU][i];

35

【填空】程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲學(xué)生的學(xué)號、姓名和3門課的成績。函數(shù)fun

的功能是:將形參a中的數(shù)據(jù)進(jìn)行修改,把修改后的數(shù)據(jù)作為函數(shù)值返回主函數(shù)進(jìn)行輸出。

例如,若傳給形參a的數(shù)據(jù)中學(xué)號、姓名和三門課的成績依次是:10001、“ZhangSan”、

95、80、88,修改后的數(shù)據(jù)應(yīng)為:10002、“LISi”、96、81、89。

【答案】

[1]structstudent[2]a.name

[3]a.score[i]

【改錯(cuò)】假定整數(shù)數(shù)列中的數(shù)不重復(fù),并存放在數(shù)組中。下列給定程序中函數(shù)fun的功能是:

刪除數(shù)列中值為x的元素。變量n中存放數(shù)列中元素的個(gè)數(shù)。

【答案】【1】if(p==n)return—1;[2]a[i]=a[i+l];

【編程】學(xué)生記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已放入主函數(shù)中的結(jié)構(gòu)體數(shù)組中,請

編寫函數(shù)fun,其功能是:把分?jǐn)?shù)最低的學(xué)生數(shù)據(jù)放入b所指的數(shù)組中,注意:分?jǐn)?shù)最低的

學(xué)生可能不止?個(gè),函數(shù)返回分?jǐn)?shù)最低的學(xué)生人數(shù)。

【答案】

intfun(STREC*a,STREC*b)

{

inti,j=0,n=0,min;

min=a[0].s;

for(i=0;i<N;i++)

if(a[i].s<min)

min=a「].s;

for(i=0;i<N;i++)

if(a[i].s==min)

*(b+j)=a[i];j++;n++;

returnn;

36

【填空】請補(bǔ)充main函數(shù),該函數(shù)的功能是:將字符串str中的字符向前移動(dòng)一位,原來在

第一個(gè)位置上的字符移動(dòng)到字符串尾,結(jié)果仍然保存在原字符串中。例如,輸入“howdoyou

do?則結(jié)果輸出"owdoyoudo?h"?

【答案】【I】str[i+l]

[2]str[i]=ch

【改錯(cuò)】函數(shù)fun實(shí)現(xiàn)的功能是:統(tǒng)計(jì)一個(gè)無符號整數(shù)中各位數(shù)字值為0的個(gè)數(shù),通過形參

傳回主函數(shù),并把該整數(shù)中各位上最大的數(shù)字值作為函數(shù)值返回。例如,若輸入無符號整數(shù)

30800,則數(shù)字值為0的位的個(gè)數(shù)為3,各位上數(shù)字值最大的是8。

【答案】【1】if(t==O)

[2]*zero=count;

【編程】請編寫函數(shù)fun,該函數(shù)的功能是:移動(dòng)字符串中的內(nèi)容,移動(dòng)的規(guī)則是把第1?

m個(gè)字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。例如,字符

串中原有的內(nèi)容為ABCDEFGHIJK,m的值為3,移動(dòng)后,字符串中的內(nèi)容應(yīng)該是

DEFGHIJKABCo

【答案】

voidfun(char*w,intm)

(

inti.j;

chart;

for(i=1;i<=m;i++)

{t=w[0];

for(j=l;w[jj!='\0';j++)

w[j—l]=w[j];

w[j—l]=t;

???????????

【填空】函數(shù)fun的功能是:從三個(gè)形參a、b、c中找出中間的數(shù),并作為函數(shù)值返回。例

如,當(dāng)a=3,b=5,c=4時(shí),中間的數(shù)為4。

【答案】【1]a[2]a[3]b

【改錯(cuò)】函數(shù)fun的功能是:求整數(shù)x的y次方的低3位值。例如,整數(shù)5的6次方為15625,

此值的低3位值為625。

【答案】【1】for(i=l;i<=y;i++)[2]t=t%1000;

【編程】請編寫函數(shù)fun,該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順

序依此放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在形參n所指的存儲單元中。

例如,若二維數(shù)組中的數(shù)據(jù)為:

33333333

44444444

55555555

則一維數(shù)組中的內(nèi)容應(yīng)該是333333334444444455555555

【答案】

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

inti,j,k=0;

fbr(i=O;i<mm;i++)

for(j=0;j<nn;j++)

b[k++]=s[i][j];

*n=k;

???????????

【填空】函數(shù)fun的功能是:在形參s所指字符串中尋找與參數(shù)c相同的字符,并在其后插

入一個(gè)與之相同的字符,若找不到相同的字符則不做任何處理。例如,若s所指字符串為

baacda,c中的字符為a,執(zhí)行后s所指字符串為baaaacdaa。

【答案】

[1]'\0'[2]0[3]c

【改錯(cuò)】在主函數(shù)中從鍵盤輸入若干個(gè)數(shù)放入數(shù)組中,用0結(jié)束輸入并放在最后一個(gè)元素中。

下列給定程序中函數(shù)fun的功能是:計(jì)算數(shù)組元素中所有值為正數(shù)的平均值(不包括0)。

例如:數(shù)組中元素中的值依次為:39,-47,21,2,-8,15,0,則程序的運(yùn)行結(jié)果為

19.250000。

【答案】【1】doublesum=0.0;

[2]sum/=c;

【編程】編寫函數(shù)fun,其功能是:根據(jù)以下公式計(jì)算s,并計(jì)算結(jié)果作為函數(shù)值返回,n

通過形參傳入。例如:若n的值為11時(shí),函數(shù)的值為1.833333

【答案】

floatfun(intn)

inti,sl=0;

floats=0.0;

for(i=l;i<=n;i++)

sl=sl+i;

s=s+1.0/sl;

)

returns;

)

sl=sl+i;

s=s+1.0/sl;

)

returns;

)

???????????

【填空】函數(shù)fun的功能是:將形參s所指字符串中的所有字母字符順序前移,其他字符順

序后移,處理后將新字符串的首地址作為函數(shù)值返回。

例如,若s所指字符串為:asdl23fgh543df,處理后新字符串為:asdfghdfl23543?

【答案】

[1]s[i][2]k[3]0

【改錯(cuò)】函數(shù)fun的功能是:將s所指字符串中最后一次出現(xiàn)的與tl所指字符串相同的子串

替換成t2所指字符串,所形成的新串放在w所指的數(shù)組中。要求tl和t2所指字符串的長

度相同。例如,當(dāng)s所指字符串中的內(nèi)容為:"abcdabfabc",tl所指串中的內(nèi)容為"ab”,t2

所指子串中的內(nèi)容為“99”時(shí),結(jié)果在w所指的數(shù)組中的內(nèi)容應(yīng)為"abcdabf99c”。

【答案】【11while(*w)

[2]if(*r==*p)

【編程】編寫函數(shù)fun,其功能是:將s所指字符串中ASCII值為奇數(shù)的字符刪除,剩余字

符形成的新串放在t所指數(shù)組中。例如,若s所指字符串中的內(nèi)容為:"ABCDEFG12345",

其中字符A的ASCII碼值為奇數(shù)、…、字符1的ASCII碼值也為奇數(shù)、…都應(yīng)當(dāng)刪除,其

它依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是:"BDF24”。

【答案】

voidfun(char*s,chart[])

{

inti,j=0,n;

n=strlen(s);

fbr(i=O;i<n;i++)

if(s[i]%2==0)

t[j]=s[i];

j++;

)

t[j]=,\0';

???????????

【填空】函數(shù)fun的功能是:計(jì)算NXN矩陣的主對角線元素和反向?qū)蔷€元素之和,并作

為函數(shù)值返回。要求先累加主對角線元素中的值,再累加反向?qū)蔷€元素中的值。

例如,若N=3,有下列矩陣:

123

456

789

首先累加1、5、9,然后累加3、5、7,函數(shù)返回值為30。

【答案】【1】sum=0【2】t皿i][3]1

改錯(cuò)】函數(shù)fun和funx的功能是:用二分法求方程2x3—4x2+3x-6=0的一個(gè)根,并要求

絕對誤差不超過0.001。例如,若給m輸入一100,n輸入90,則函數(shù)求得的?個(gè)根為2.000。

【答案】【1】doubler;

[2]while(fabs(n—m)>0.001)

【編程】規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun,其功能是:除了字符串前

導(dǎo)和尾部的*號外,將串中其它的*號全部刪除。形參h已指向字符串中第個(gè)字母,形參p

指向字符串的中最后一個(gè)字母。在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。例如,

若字符串中的內(nèi)容為****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:

****ABCDEFG********。

【答案】

voidfun(charchar*h,char*p)

(

inti=0;

char*q=a;

while(q<h)

(

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

while(q<p)

if(*q!=,*,)

(

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

)

q++;

)

while(*q)

(

a[i]=*q;i++:q++;

)

a[i]='\0';

)

???????????

【填空】函數(shù)fun的功能是:在形參ss所指字符串?dāng)?shù)組中,將所有串長超過k的字符串中

后面的字符刪除,只保留前面的k個(gè)字符的。ss所指字符串?dāng)?shù)組中共有N個(gè)字符串,且串

長小于M。

【答案】【1][M][2]N[3]'\0'

【改錯(cuò)】下列給定程序中函數(shù)fun的功能是:根據(jù)以下公式求人值,并作為函數(shù)值返回。例

如,當(dāng)給指定精度的變量eps輸入0.0005時(shí)―,應(yīng)輸出Pi=3.140578?!?2=1+1,3+1,3X2,5

+1,3義2,5X3,7+1,3X2,5X3,7X4,9+.......

【答案】【1】t=1.0;

[2]return(s*2);

【編程】規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:使字符串的

前導(dǎo)*號不得多于n個(gè),若多于n個(gè),則刪除多余的*號;若少于或等n個(gè),則不做處理,字

符串中間和尾部的*號不刪除。

例如,字符串中的內(nèi)容為:*******A*BC*DEF*G****,若n的值為4,刪除后,字符

串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G****:若n的值為8,則字符串中的內(nèi)容仍為:

*******A*BC*DEF*G****。n的值在主函數(shù)中輸入。

【答案】

voidfun(char*a>intn)

inti=0,k=0;

char*p,*t;

p=t=a;

while(*t==,*')

{k++;t++;}

if(k>n)

{while(*p)

{a[i]=*(p+k—n);

i++;

p++;

)

溫馨提示

  • 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

提交評論