2021年山東省德州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第1頁
2021年山東省德州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第2頁
2021年山東省德州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第3頁
2021年山東省德州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第4頁
2021年山東省德州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021年山東省德州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(12題)1.下列敘述中正確的是()。

A.棧是一種先進(jìn)先出的線性表B.隊(duì)列是一種后進(jìn)先出的線性表C.棧與隊(duì)列都是非線性結(jié)構(gòu)D.以上三種說法都不對

2.如下函數(shù)調(diào)用語句func(rec1,rec2+rec3,rec4,rec5);該函數(shù)調(diào)用語句中,含的實(shí)參個數(shù)是().

A.3B.4C.5D.有語法錯誤

3.設(shè)線性鏈表中結(jié)點(diǎn)的結(jié)構(gòu)為(data,next)。已知指針q所指結(jié)點(diǎn)是指針結(jié)點(diǎn)p的直接前驅(qū),若在*q與*p之間插入結(jié)點(diǎn)*s,則應(yīng)執(zhí)行下列()操作。

A.s->next=p->next;p->next=s;

B.q->next=s;s->next=p;

C.p->next=s->next;s->next=p;

D.p->next=s;s->next=q;

4.圖的深度優(yōu)先遍歷類似于二叉樹的_______。

A.先序遍歷B.中序遍歷C.后序遍歷D.層次遍歷

5.有以下程序voidf(intn,int*r){intr1=0;if(n%3==0)r1=n/3;elseif(n%5==0)r1=n/5;elsef(--n,&r1);*r=r1;}main(){intm=7,r;f(m,&r);printf("%d",r);}程序運(yùn)行后的輸出結(jié)果是A.2B.1C.3D.0

6.下列函數(shù)的功能是

set(s,t)

{char*s,*t;

while((*s)&&(*t)&&(*t++==*s++));

return(*s-*t);

}A.A.求字符串的長度

B.比較兩字符串的大小

C.將字符串s復(fù)制到字符串t中

D.將字符串s連接到字符串t后

7.數(shù)組A[5][6]的每個元素占五個字節(jié),將其按列優(yōu)先次序存儲在起始地址為1000的內(nèi)存單元中,下標(biāo)從1開始,則元素A[5][5]的地址是()。

A.1175B.1180C.1205D.1120

8.算法的效率的分析主要包括兩個方面()。

A.時(shí)間復(fù)雜度和空間復(fù)雜度B.正確性和簡單性C.可讀性和文檔性D.數(shù)據(jù)復(fù)雜性和程序復(fù)雜性

9.有以下程序:

運(yùn)行時(shí),若輸入123450<;回車>;,則輸出結(jié)果是()。

A.66656B.6566456C.66666D.6666656

10.下面哪些使用的不是貪心算法()

A.單源最短路徑中的Dijkstra算法

B.最小生成樹的Prim算法

C.最小生成樹的Kruskal算法

D.計(jì)算每對頂點(diǎn)最短路徑的Floyd-Warshall算法

11.有以下函數(shù)定義:

voidfun(intn,doublex){……}

若以下選項(xiàng)中的變量都已正確定義并賦值,則對函數(shù)fun的正確調(diào)用語句是A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfun(n,x);

12.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.選擇排序C.快速排序D.歸并排序

二、2.填空題(12題)13.以下程序的功能是:從鍵盤輸入一字符串,要求將每個單詞中的第一個字母改成小寫(如果原來已是小寫字母,則不變),然后輸出轉(zhuǎn)換結(jié)果,補(bǔ)足所缺語句。

main()

{charstr[200];inti=0;

while((______=getchar())!='\n');

str[i-1)='\0';

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

if((str[i-1]==''‖i==0)&&str[i]>='A'&&str[i]<='Z')

str[i]+=______;

printf("%s\n",str);

}

14.有以下程序

voidf(inty,int*x)

{y=y+*x;*X=*X+y;}

main()

{intx=2,y=4;

f(y,&x);

printf("%d%d\n",x,y);

}

執(zhí)行后輸出結(jié)果是______。

15.下列表達(dá)式用于判斷y是否為閏年。閏年的判斷條件是:年號能被4整除但不能被100整除或年號能被400整除,請?zhí)羁誣_____。

16.對二叉排序樹進(jìn)行查找的方法是:用待查的值與根結(jié)點(diǎn)的值相比,若比根小,則繼續(xù)在【】子樹中找。

17.下列語句能循環(huán)______次。

ints=12;

while(s);

--s;

18.模塊測試時(shí),要為每個被測試的模塊另外設(shè)計(jì)兩類模塊:驅(qū)動模塊和承接模塊。其中【】的作用是模擬被測試模塊的下層模塊。

19.數(shù)據(jù)庫設(shè)計(jì)分為以下6個設(shè)計(jì)階段:需求分析階段、______、邏輯設(shè)計(jì)階段、物理設(shè)計(jì)階段、實(shí)施階段、運(yùn)行和維護(hù)階段。

20.設(shè)有如下宏定義

#defineMYSWAP(z,x,y){z=x;x=Y;Y=z;}

以下程序段通過宏調(diào)用實(shí)現(xiàn)變量a、b內(nèi)容的交換,請?zhí)羁铡?/p>

floata=5,b=16,c;

MYSWAP(【】,a,b);

21.以下函數(shù)用來求出兩整數(shù)之和,并通過形參將結(jié)果傳回,請?zhí)羁铡?/p>

voidfunc(intx,inty,【】z)

{*z=x+y;}

22.在鏈表的運(yùn)算過程中,能夠使空表與非空表的運(yùn)算統(tǒng)一的結(jié)構(gòu)是______。

23.下列程序的功能是將字符串s中所有的字符c刪除。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(s);

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

if(s[i]!='c')

s[j]='\0';

puts(s);

}

24.在進(jìn)行模塊測試時(shí),要為每個被測試的模塊另外設(shè)計(jì)兩類模塊:驅(qū)動模塊和承接模塊,其中______的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。

三、3.程序設(shè)計(jì)題(10題)25.學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能是:把分?jǐn)?shù)最低的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,注意:分?jǐn)?shù)最低的學(xué)生可能不止一個,函數(shù)返回分?jǐn)?shù)最低的學(xué)生的人數(shù)。

注意:部分源程序在文件PROGl.C文件中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

26.請編寫函數(shù)fun(),其功能是:計(jì)算并輸出下列多項(xiàng)式的值。

S=1+4/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)

例如,著主函數(shù)從鍵盤給n輸入50后,則輸出為S=1.960784。

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

doublefun(intn)

{

}

main()

{

intn;

doubles;

printf("\nInputn:");

scanf("%d",&n);

s=fun(n);

printf("\n\ns=%f\n\n",s);

}

27.請編寫一個函數(shù)voidfun(chara[],charb[],intn),其功能是:刪除一個字符串中指定下標(biāo)的字符。其中,a指向原字符串,刪除指定字符后的字符串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。

例如,輸入一個字符串:World,然后輸入3。則調(diào)用該函數(shù)后的結(jié)果為:Word。

注意:部分源程序在文件PROGl.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

28.函數(shù)fun的功能是:將s所指字符串中除了下標(biāo)為偶數(shù)、同時(shí)ASCII值也為偶數(shù)的字符外,其余的全都刪除;串中剩余字符所形成的一含新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為:“ABCDEFGl23456”,其中字符A的ASCII碼值為奇數(shù),因此應(yīng)當(dāng)刪除:其中字符B的ASCII碼值為偶數(shù),但在數(shù)組中的下標(biāo)為奇數(shù),因此也應(yīng)當(dāng)刪除;而字符2的ASCII碼值為偶數(shù),所在數(shù)組中的下標(biāo)也為偶數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是:“246”。

注意:部分源程序存在文件PROGl.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

29.請編寫函數(shù)fun,其功能是:計(jì)算并輸出當(dāng)x<0.97時(shí)下列多項(xiàng)式的值,直到|Sn-Sn-2

|<0.000001為止。

例如,在主函數(shù)中從鍵盤給x輸入0.21后,輸出為:s=1.100000。

注意:部分源程序在文件PROGl.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

30.請編寫函數(shù)fun,其功能是:計(jì)算并輸出給定數(shù)組(長度為9)中每相鄰兩個元素之平均值的平方根之和。

例如,給定數(shù)組中的9個元素依次為12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,輸出應(yīng)為:s=35.951014。

注意:部分源程序在文件PROGl.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

31.請編寫一個函數(shù)voidfun(char*tt,intpp[]),統(tǒng)計(jì)在tt字符串中“a”到“z”26個字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。

例如:當(dāng)輸入字符串a(chǎn)bcdefghabcdeabc后,程序的輸出結(jié)果應(yīng)該是:33322110000000000000000000

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(char*tt,intpp[])

{

}

main()

{

charaa[1000];

intbb[26],k,n;

clrscr();

printf("\nPleaseenteracharstring:");

scanf("%s",aa);

fun(aa,bb);

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

printf("%d",bb[k]);

printf("\n");

}

32.編寫函數(shù)fun,其功能是:根據(jù)以下公式求P的值,結(jié)果由函數(shù)值帶回。m與n為兩個正整數(shù)且要求m>n。

例如:m=12,n=8時(shí),運(yùn)行結(jié)果為495.000000。

注意:部分源程序在文件PROGl.C文件中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

33.請編寫函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被7或11整除、但不能同時(shí)被7和11整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(int*a,int*n)

{

}

main()

{

intaa[1000],n,k;

clrscr();

fun(aa,&n);

for(k=0;kif((k+1)%10==0)

{printf("%5d",aa[k]);

printf("\n");}/*一行寫9個數(shù)*/

else

printf("%5d",aa[k]);

}

34.請編寫函數(shù)fun(),其功能是:將所有大于1小于整數(shù)m的非素?cái)?shù)存入xx所指數(shù)組中,非素?cái)?shù)的個數(shù)通過k傳回。

例如,輸入17,則應(yīng)輸出46891012141516。

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

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

{

}

main()

{

intm,n,zz[100];

clrscr();

printf("\nPleaseenteranintegernumber

between10and100:");

scanf("%d",&n);

fun(n,&m,zz);

printf("\n\nThereare%dnon-prime

numberslessthan%d:",m,n);

for(n-0;n<m;n++)

printf("\n%4d",zz[n]);

}

四、單選題(0題)35.

五、單選題(0題)36.已知有結(jié)構(gòu)體:structsk{inta;floatb;}data,*p;若有p=&data,則對data的成員a的正確引用是()。

A.struct是結(jié)構(gòu)體類型的關(guān)鍵字

B.st是結(jié)構(gòu)體類型名

C.x、y、z都是結(jié)構(gòu)體成員名

D.structstr是結(jié)構(gòu)體類型名

六、單選題(0題)37.若執(zhí)行下列的程序時(shí),從鍵盤上輸入1和2,則輸出結(jié)果是()。

#include<stdio.h>

main()

{inta,b,s;

scanf("%d%d",&a,&B);

S=a;

if(a<B)s=b;

s=s*s;

printtf("%d\n",s);

}

A.1B.4C.2D.9

參考答案

1.D【答案】:D

【知識點(diǎn)】:棧和隊(duì)列

【解析】:棧和隊(duì)列都是線性結(jié)構(gòu),所以選項(xiàng)C錯誤;棧是一種先進(jìn)后出的線性表,故選項(xiàng)A錯誤;隊(duì)列是一種先進(jìn)先出的線性表,故選項(xiàng)B錯誤,所以選D。

2.B

3.B

4.A

5.A解析:本題考查了函數(shù)的遞歸調(diào)用。在f函數(shù)中,當(dāng)m=7時(shí),程序執(zhí)行“f(--n,&r1);”語句,遞歸調(diào)用f(6,&r1),程序執(zhí)行“r1=n/3;”語句,即r1=\u30006/3=2,然后執(zhí)行“*r=r1;”語句,所以輸出結(jié)果為2。

6.B在本題中,從題目給出的四個選項(xiàng)我們就可以知道,程序是對兩個字符串進(jìn)行操作。下面將具體分析程序。

程序首先定義兩個字符型的指針變量s和t,從后面的程序中不難看出這兩個指針變量應(yīng)該用來對兩個字符串進(jìn)行操作處理。用循環(huán)來對字符串進(jìn)行處理時(shí),循環(huán)繼續(xù)的條件是指針變量s和指針變量t所指向的結(jié)果值不為0,且兩結(jié)果值相等。很顯然,指針變量s和指針變量t所指向的結(jié)果值不為0,說明兩字符串沒有結(jié)束,只有結(jié)束時(shí)才為0,而結(jié)果值相等說明兩字符相等,如果不等,循環(huán)則結(jié)束,此時(shí)程序?qū)⒁蠓祷夭坏仍刂g的差值,從差值的正負(fù)關(guān)系我們可以判斷出哪個元素更大。綜上所述,程序段的作用是用來比較兩字符串的大小。因此,本題正確的答案選B。

7.D

8.D

9.Bswitch語句的執(zhí)行流程是:首先計(jì)算switch后面圓括號中表達(dá)式的值,然后用此值依次與各個case的常量表達(dá)式比較,若圓括號中表達(dá)式的值與某個e·*后面的常量表達(dá)式的值相等,就執(zhí)行此ca*后面的語句,執(zhí)行后遇break語句就退出switch語句;若圓括號中表達(dá)式的值與所有ca$e后面的常量表達(dá)式都不等,則執(zhí)行default后面前語句。然后退出。所以輸入l時(shí)打印65,輸入2時(shí)打印6,輸入3時(shí)打印64,輸入4時(shí)打印5,輸入5時(shí)打印6。

10.D

11.C解析:選項(xiàng)A中應(yīng)將y和m前面的函數(shù)的類型說明符去掉,故選項(xiàng)A不正確;選項(xiàng)B中函數(shù)傳了2個參數(shù),其中一個為整型一個為浮點(diǎn)型,而fun()函數(shù)在定義時(shí)聲明的2個參數(shù),一個為整型一個為雙精度型,其參數(shù)類型不一致,故選項(xiàng)B不正確;選項(xiàng)D在調(diào)用函數(shù)時(shí),不應(yīng)該再聲明其返回類型,故迭項(xiàng)D不正確.所以,4個選項(xiàng)中選項(xiàng)C符合題意。

12.A解析:以下幾種算法的時(shí)間復(fù)雜度分別為:冒泡排序(n2);選擇排序(n2);快速排序(nlog2n);歸并排序(nlog2n)。當(dāng)排序元素序列基本有序的情況下,冒泡排序的交換次數(shù)為0,只是順序掃描數(shù)據(jù)而已,所以其效率是最高的。

13.str[i++]32。str[i++]32。解析:while語句的循環(huán)控制條件既要將相應(yīng)元素賦予從鍵盤輸入的字符,又要改變元素的下標(biāo)值,以便接受下一個字符,可用下標(biāo)變量的后置加實(shí)現(xiàn);小寫字母的ASCII碼值比相對應(yīng)的大寫形式大32。

14.8484解析:本題考核的知識點(diǎn)是函數(shù)的調(diào)用、值傳遞和地址傳遞的區(qū)別?!爸祩鬟f”指實(shí)參將值傳遞給形參后,實(shí)參與形參再無聯(lián)系。也就是說對行參的改變將不影響實(shí)參;地址傳遞是指地址或數(shù)組名作為形參時(shí)的參數(shù)傳遞,這種情況下對形參的改變將對實(shí)參產(chǎn)生影響.函數(shù)f(Y*x)的作用是讓y的值加上指針x所指向變量的值,讓指針x所指向變量的值加上y的值。由于形參y是傳值的,形參x是傳地址的,故調(diào)用該函數(shù)后,作為實(shí)參的y的值將不改變,而實(shí)參x的值將改變,故最后輸出的y的值為4,而x的值為8。

15.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查邏輯表達(dá)。年號能被4整除(y%4==0)但不能被100整除(y%100!=0),兩者是與的關(guān)系,年號能被400整除即y%400==0,與前兩項(xiàng)是或的關(guān)系。

16.左左解析:對二叉排序樹進(jìn)行查找,若待查的值與根結(jié)點(diǎn)的值相比,若比根小,則繼續(xù)在左子樹中找;若比根大,則在右子樹中找。

17.無限無限解析:分析程序“while(s)”語句后面有一個“;”不能執(zhí)行后面的語句,只是執(zhí)行空語句,所以s=12保持不變,因此,沒有條件限制的能循環(huán)無限次(即死循環(huán))。

18.承接模塊承接模塊解析:進(jìn)行模塊測試時(shí),應(yīng)為每個被測試的模塊另外設(shè)計(jì)兩類模塊:驅(qū)動模塊和承接模塊。其中驅(qū)動模塊的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果;承接模塊的作用是模擬被測試模塊的下層模塊。

19.概念設(shè)計(jì)階段(數(shù)據(jù)庫概念設(shè)計(jì)階段)概念設(shè)計(jì)階段(數(shù)據(jù)庫概念設(shè)計(jì)階段)

20.cc解析:本題關(guān)鍵在考生是不是了解宏的基本運(yùn)用,在使用宏的時(shí)候明顯少了—個實(shí)參。在定義宏的時(shí)候變量z是用來做中間變量的,題目中缺的變量就是一個中間變量c。

21.int*int*解析:從題中代碼可知:z應(yīng)該是一個整型指針,因此應(yīng)填int*。

22.循環(huán)鏈表循環(huán)鏈表解析:在循環(huán)鏈表中,由于設(shè)置了一個頭結(jié)點(diǎn),因此在任何情況下,循環(huán)鏈表中至少有一個結(jié)點(diǎn)存在,從而使空表與非空表的運(yùn)算統(tǒng)一。

23.S[j++]=s[i]S[j++]=s[i]解析:循環(huán)開始后如果數(shù)組s中儲存值與字符c相同,則i++直接跳過當(dāng)前值;如果不相同,則將當(dāng)前值賦予數(shù)組指定位置,并通過j++將下標(biāo)加1,指向下一元素要存儲的位置。

24.驅(qū)動模塊驅(qū)動模塊解析:由于模塊通常不是獨(dú)立的程序,自己不能運(yùn)行,而需要其他模塊調(diào)用或驅(qū)動,同時(shí)被測試模塊還要去調(diào)用其他模塊,前者稱為驅(qū)動模塊,后者稱為承接模塊。其中驅(qū)動模塊的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果;承接模塊的作用是代替被測模塊,調(diào)用其他模塊。

25.

解析:該程序功能是把分?jǐn)?shù)最低的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中。本題是關(guān)于求解結(jié)構(gòu)體中某些成員的最小值,首先將第一個值設(shè)定為最小值,并在循環(huán)中將其他所有值與該值進(jìn)行比較,求得最小值。然后將最小值與所有值進(jìn)行比較,求得所有的最小值。

26.doublefun(intn){inti;doubles=0.0s1=0.0;for(i=1;i<=n;i++){s1=s1+i;/*求每—項(xiàng)的分母*/s=s+1.0/s1;/*求S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)*/}returns;}doublefun(intn)\r\n{\r\ninti;\r\ndoubles=0.0,s1=0.0;\r\nfor(i=1;i<=n;i++)\r\n{s1=s1+i;/*求每—項(xiàng)的分母*/\r\ns=s+1.0/s1;/*求S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)*/\r\n}\r\nreturns;\r\n}解析:該程序的數(shù)學(xué)思路是:在程序中輸入n后,以前n項(xiàng)的和作為分母遞加,由于s1是浮點(diǎn)類數(shù)據(jù)所以s=s+1.0/s1;for循環(huán)的作用是每一次循環(huán)給總結(jié)果s加上一項(xiàng)1.0/s1。

27.

解析:(1)該程序功能是刪除一個字符串中指定下標(biāo)的字符。它的解題思路,可以分解為以下兩步:逐個判斷字符串中的下標(biāo)是否滿足條件,滿足條件的就放到題目要求的新串,否則就不放。

(2)從已給部分源程序的main主函數(shù)開始入手,核心函數(shù)“fun(str1,str2,n);”中的參數(shù)由題目可知,str1存放著原始字符串,str2存放刪除了下標(biāo)為n的字符的結(jié)果字符串,注意下標(biāo)是從“0”開始的。

28.

解析:該程序功能是將字符串中除了下標(biāo)為偶數(shù)、ASCII值也為偶數(shù)的字符外,其余的全都刪除。解題過程利用if條件判斷表達(dá)式選擇符合條件的字符,然后將符合條件的字符放入指定的字符串。

29.

解析:該程序功能是計(jì)算并輸出當(dāng)x<0.97時(shí)題干中給出的多項(xiàng)式的值。根據(jù)題干中給出的數(shù)列,首先推出每一項(xiàng)的表達(dá)式,然后再對多項(xiàng)式進(jìn)行累加求和。

30.

解析:該程序功能是計(jì)算并輸出給定數(shù)組(長度為9)中每相鄰兩個元素之平均值的平方根之和。在循環(huán)中,首先確定相鄰元素之間的關(guān)系,然后對其進(jìn)行平均值平方根之和的操作。

31.voidfun(char*ttintpp[]){inti;fori=0;i<26;i++)pp[i]=0;/*初始化pp數(shù)組各元素為0*/for(;*tt!='\0';tt++)if(*tt>='a'&&*tt<='z')pp[*tt-'a']++;/*將tt字符串中'a'到'z'26個字母各自出現(xiàn)的次數(shù)依次放在pp數(shù)組中任一個小寫字母減去'a'后所得結(jié)果正好是它對應(yīng)的下標(biāo)*/}voidfun(char*tt,intpp[])\r\n{\r\ninti;\r\nfori=0;i<26;i++)\r\npp[i]=0;/*初始化pp數(shù)組各元素為0*/\r\nfor(;*tt!='\\0';tt++)\r\nif(*tt>='a'&&*tt<='z')\r\npp[*tt-'a']++;/*將tt字符串中'a'到'z'26個字母各自出現(xiàn)的次數(shù),依次放在pp數(shù)組中,任一個小寫字\r\n母減去'a'后所得結(jié)果正好是它對應(yīng)的下標(biāo)*/\r\n}解析:第1個循環(huán)的作用是初始化數(shù)組pp,未經(jīng)賦值變量的量為一個不確定數(shù)字。由于它要將'a'到'z'26個字母的個數(shù)依次放到數(shù)組pp中。即'a'的個數(shù)存于pp[0]中,'b'的個數(shù)存于pp[1]中,'c'的個數(shù)存于pp[2]中,…,依次類推。而'a'-'a'的值正好為0,'b'-'a'的值為1,'c'-'a'的值為2,…,依此類推。即任一個小寫字母減去'a'后所得結(jié)果正好是它對應(yīng)的下標(biāo),所以就有了pp[*tt-'a']++。但*tt必須是小寫字母即if()不應(yīng)省略。

32.

解析:(1)該程序功能是對組合數(shù)公式求值。它的解題思路,可以分解為以下幾步:求m!→求n!→求(m-n)!→求組合數(shù)的值。

(2)從已給部分源程序的main主函數(shù)開始入手,主函數(shù)中的“printf(“P=%f\n”,fun(12,8));”語句中“fun(12,8)”將12、8傳遞給fun中的m與n,fun函數(shù)實(shí)現(xiàn)對

溫馨提示

  • 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

提交評論