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

下載本文檔

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

文檔簡介

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

一、單選題(12題)1.判斷一個棧ST(最多元素為Maxsize)為滿的條件是()。

A.ST->top!==-1

B.ST->top==-1

C.ST->top!==Maxsize-1

D.ST->top==Maxsize-1

2.已知一個有序表為(15,19,30,33,49,50,65,88,93,126,164),當(dāng)二分查找值為126的元素時,檢索成功需進(jìn)行的比較次數(shù)為()。

A.1次B.2次C.3次D.4次

3.

4.采用開放定址法處理散列表的沖突時,其平均查找長度()

A.高于二分查找B.高于鏈接法處理沖突C.低于二分查找D.低于鏈接法處理沖突

5.下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進(jìn)行查找的是()。

A.順序存儲的有序線性表B.結(jié)性鏈表C.二叉鏈表D.有序線性鏈表

6.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序的運(yùn)行結(jié)果是()。

A.1,1,2,0B.0,0,0,3C.編譯有錯D.0,1,2,0

7.有以下程序:#include<stdio.h>main(){inta[5]={1,2,3,4,5),b[5]={0,2,1,3,o},i,s=0;for(i=o;i<5;i++)s=s+a[b[i]];printf(”%d\n”,s);}程序運(yùn)行后的輸出結(jié)果是()。A.6B.10C.11D.15

8.以下選項(xiàng)中不能用做C程序合法常量的是()。

A.1,234B.‘\123’C.123D.“\x7G”

9.下列程序的執(zhí)行結(jié)果是______。#include<stdio.h>unionun{inti;charc[2};};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}

A.266B.11C.265D.138

10.以下選項(xiàng)中,值為1的表達(dá)式是()。

A.1-‘0’B.1-‘\0’C.‘1’-0D.‘\0’-‘0’

11.若已定義x和y為double類型,則表達(dá)式:x=1,y=x+3/2的值是()A.1B.2C.2.0D.2.5

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

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

B.最小生成樹的Prim算法

C.最小生成樹的Kruskal算法

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

二、2.填空題(12題)13.下列循環(huán)的循環(huán)次數(shù)是______。

ihtk=2;

while(k=0)

printf("%d",k);

k--;

printf("\n");

14.以下程序運(yùn)行結(jié)果是【】。

#include<stdio.h>

main()

{intfun();fun();}

fun()

{staticinta[3]={0,1,2};

inti;

for(i=0;i<3;i++)a[i]+=a[i];

for(i=0;i<3;i++)printf("%d,",a[i]);

printf("\n");}

15.下列程序輸出的結(jié)果是【】。

fun(intx)

{staticinta=3;

a+=x;

return(a);

}

main()

{intk=2,m=1,n;

n=fun(k);

n=fun(m);

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

}

16.設(shè)有定義:

struct{inta;floatb;charc;}abc;*p_abc=&abc;

則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc【】a。

17.選擇程序中的輸入輸出語句,以滿足題目給定的輸入輸出數(shù)據(jù)形式。

main()

{inta;floatb;

【】

【】}

輸入形式:3.52<空格>6<回車>

輸出形式:a*b=21.12

18.以下程序的功能是:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。

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

2223445666677899101010

刪除后,數(shù)組中的內(nèi)容應(yīng)該是:

2345678910

請?zhí)羁铡?/p>

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1]【】a[i])

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

【】;

}

main()

{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;

printf("Theoriginaldata:\n");

for(i=0;i<n;i++)printf("%3d",a[i]);

n=fun(a,n);

printf("\nThedataafterdeleted:\n");

for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");

}

19.下列程序的輸出結(jié)果是______。

#include<stdio.h>

sb(ints[],intb)

{staticintn=3;

b=s[n];

n--;

return(b);

}

main()

{ints[]={1,5,6,8};

inti,x=0;

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

{x=sb(s,x);

printf("%d",x);

}

printf("\n");

}

20.常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖(SC),也稱程序結(jié)構(gòu)圖。其中,用矩形表示______,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。

21.以下條件表達(dá)式可計算:1+|a|的值,請?zhí)羁铡>=0?【】:【】

22.若fp已下確定義為一個文件指針,d1.dat為二進(jìn)制文件,請?zhí)羁眨员銥椤白x”而打開此文件:fp=fopen(【】);。

23.以下程序的運(yùn)行結(jié)果為【】。

#include<stdio.h>

main()

{staticintb[2][3]={{1,2,3},{4,5,6}};

staticint*pb[]={b[0],b[1]};

inti,j;

i=0;

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

printf("b[%d][%d]=%d",i,j,*(pb[i]+j));

printf("\n");

}

24.下列程序的輸出結(jié)果是______。

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

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

PRINT(a+i);

printf("\n");

}

三、3.程序設(shè)計題(10題)25.請編寫函數(shù)fun(),它的功能是計算下列級數(shù)和,和值由函數(shù)值返回。

S=1-x+x2(上標(biāo))/2!-x3(上標(biāo))/3!+…+(-1*x)n(上標(biāo))/n!

例如,當(dāng)n=15,x=0.5時,函數(shù)值為0.606531。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

doublefun(doublex,intn)

{

}

main()

{

clrscr();

printf("%f",fun(0.5,15));

}

26.請編寫函數(shù)fun(),其功能是:將s所指字符串中下標(biāo)為奇數(shù)的字符刪除,串中剩余字符形成的新串放在t所指數(shù)組中。

例如,當(dāng)s所指字符串中的內(nèi)容為siegAHdied,則在t所指數(shù)組中的內(nèi)容應(yīng)是seAde。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidfun(char*S,chart[])

{

}

main()

{

chars[100],t[100];

clrscr();

printf("\nPleaseenterstrings:");

scanf("%S",S);

fun(S,t);

printf("\nTheresultis:%s\n",t);

}

27.請編寫函數(shù)fun(),它的功能是:移動一維數(shù)組中的內(nèi)容,若數(shù)組中有n個整數(shù),要求把下標(biāo)從0到p(含p,p<n-1)的數(shù)組元素平移到數(shù)組的最后。例如:一維數(shù)組中的原始內(nèi)容為:1,2,3,4,5,6,7,8,9,10;p的值為3。移動后,一維數(shù)組中的內(nèi)容應(yīng)為:5,6,7,8,9,10,1,2,3,4。部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

#include<stdiO.h>

#defineN80

voidfun(int*w,intp,intn)

{

}

main()

{in[a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

inti,p,n=15;

printf("Theodginaldata:\n");

for(i=0;i<n;i++)printf("%3d",a[i]);

printf("\nEnterp:");

scanf("%d",&p);

fun(a,p,n);

printf("\nThedataaftermoving:\n");

for(i=0;i<n;i++)printf("%3d”,a[i]);

}

28.請編一個函數(shù)voidfun(inttt[M][N],intpp[N],tt指向一個M行N列的二維數(shù)組,求出二維數(shù)組每列中最大元素,并依次放入pp所指的一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中給出。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#defineM3

#defineN4

voidfun(inttt[M][N],intpp[N])

{

}

main()

{

intt[M][N]={{68,32,54,12},{14,24,88,

58},{42,22,44,56}};

intp[N],i,j,k;

clrscr();

printf("Theriginaldatais:\n");

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

{

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

printf("%6d",t[i][j]);

printf("\n");

}

fun(t,p);

printf("\nTheresultis:\n");

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

printf("%4d",p[k]);

printf("\n");

}

29.請編寫一個函數(shù)fun,它的功能是:比較兩個字符串的長度,(不得調(diào)用C語言提供的求字符串長度的函數(shù)),函數(shù)返回較長的字符串。若兩個字符串長度相同,則返回第一個字符串。

例如,輸入beijingshah曲aj(為回車鍵),函數(shù)將返回shanghai。

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

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

30.m個人的成績存放在score數(shù)組中,請編寫函數(shù)fun(),它的功能是:將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在below所指的數(shù)組中。

例如,當(dāng)score數(shù)組中的數(shù)據(jù)為10,20,30,40,50,60,70,80,90時,函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為10,20,30,40。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

intfun(intscore[],intm,intbelow[])

{

}

main()

{

ihti,n,below[9];

intscore[9]={10,20,30,40,50,60,70,

80,90};

clrscr();

n=fun(score,9,below);

printf("\nBelowtheaveragescoreare:");

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

printf("%d",below[i]);

}

31.請編寫一個函數(shù),用來刪除字符串中的所有空格。

例如:輸入asdafaaz67,則輸出為asdafaz67。

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

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

試題程序:

#include<stdio.h>

#include<ctype.h>

#include<conio.h>

intfun(char*str)

{

}

main()

{

charstr[81];

intn;

clrscr();

printf("Inputastring:");

gets(str);

puts(str);

fun(str);

printf("***Str:%s\n",str);

}

32.請編寫一個函數(shù)fun(),它的功能是:將ss所指字符串中所有下標(biāo)為偶數(shù)位置的字母轉(zhuǎn)換為小寫(若該位置上不是字母,則不轉(zhuǎn)換)。

例如,若輸入ABC4efG,則應(yīng)輸出aBc4efg。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidfun(char*SS)

{

}

main()

{

chartt[81];

clrscr();

printf("\nPleaseenteranstringwithin80

characters:\n");

gets(tt);

printf("\n\nAfterchanging,thestring\n

\%s",tt);

fun(tt);

printf("\nbecomes\n\%S\n",tt);

}

33.請編寫函數(shù)fun(),該函數(shù)的功能是:將放在字符串?dāng)?shù)組中的M個字符串(每串的長度不超過N),按J頃序合并組成一個新的字符串。

例如,若字符串?dāng)?shù)組中的M個字符串為

AAAA

BBBBBBB

CC

則合并后的字符串內(nèi)容應(yīng)該是AAAABBBBBBBCC

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

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

試題程序:

#include<conio.h>

#defineM3

#defineN20

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

{

}

main()

{

charw[M][N]={"AAAA","BBBBBBB","CC"},i;

chara[100]={"####################"};

printf("Thestring:\n");

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

puts(w[i]);

printf("\n");

fun(w,a);

printf("TheAstring:\n");

printf("%s",a);

printf("\n\n");

}

34.編寫函數(shù)fun(),它的功能是:計算和輸出下列級數(shù)的和。

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

例如,當(dāng)n=10時,函數(shù)值為0.909091。

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

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

試題程序;

#include<conio.h>

#include<stdio.h>

doublefun(intn)

{

}

main()

{

clrscr();

printf("%f\n",fun(10));

}

四、單選題(0題)35.有以下程序:

程序的運(yùn)行結(jié)果是()。

A.y=0B.y=1C.y=2D.y=3

五、單選題(0題)36.在位運(yùn)算中,操作數(shù)每右移一位,其結(jié)果相當(dāng)于()

A.操作數(shù)乘以2B.操作數(shù)除以2C.操作數(shù)除以16D.操作數(shù)乘以16

六、單選題(0題)37.若有下列說明和語句,則對結(jié)構(gòu)體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;

A.st.iB.*p.iC.(*p).iD.p->i

參考答案

1.D

2.C

3.B

4.B

5.A\nA?!窘馕觥慷址ú檎抑贿m用于順序存儲的有序線性表,對于順序存儲的非有序線性表和線性鏈表,都只能采用順序查找。

\n

6.C本題中“if(a=1)b=1”與“elsed=3;”之間多了語句“c=2;”,所以會出現(xiàn)else語句的位置錯誤的編譯失敗提示。故本題答案為C選項(xiàng)。

7.C本題考查數(shù)組的使用。本題定義了兩個數(shù)組,注意數(shù)組的下標(biāo)是從0開始的,進(jìn)行第1次for循環(huán):當(dāng)i=0時,b[0]為數(shù)組b中第l個元素,結(jié)果為0,那么a[0]也是數(shù)組a中第l個元素,結(jié)果為1,所以S的值為1。第2次循環(huán):i此時自加為l,b[1]為數(shù)組的第2個元素,值為2,所以可求出a[2](數(shù)組中的第3個元素)的值為3,s=s+3,所以S的值為4。進(jìn)入第3次for循環(huán),依此類推,第3次for循環(huán)結(jié)束時s的值為6。第4次for循環(huán),s的值變?yōu)閘0。第5次for循環(huán)時,此時i的值為4,s的值變?yōu)閘l,i=5不符合題意,所以跳出循環(huán),輸出結(jié)果,所以本題答案為C。

8.AA選項(xiàng)中逗號是一個操作符。

9.A解析:由于本題定義的是共用體,所以成員表列中的整型變量x與字符數(shù)組c共占用同一個存儲單元,且此存儲單元為2個字節(jié),通常c[0]位于低字節(jié),c[1]位于高字節(jié),所以x.i的值為266。

10.B字符‘\\0’為空值,其ASCII值為0,所以B選項(xiàng)的值為1。字符‘0’的ASCII值為48,所以A、C、D選項(xiàng)的值均不為1。故本題答案為B選項(xiàng)。

11.C解析:這是一個逗號表達(dá)式,它的值應(yīng)為表達(dá)式y(tǒng)=x+3/2的值,而前一個表達(dá)式已給x賦值1,在沒有進(jìn)行類型轉(zhuǎn)換的情況下,3/2的值為1,所以x+3/2的值應(yīng)為2.0。

12.D

13.00解析:解答本題需要注意表達(dá)式“k=0”,它是賦值表達(dá)式而不是關(guān)系表達(dá)式,不論k為何值,表達(dá)式k=0總會使k為0,所以不能進(jìn)入循環(huán)。

14.0240480,2,4\r\n0,4,8解析:本題主要考查了for循環(huán)語句的使用以及靜態(tài)局部變量的特點(diǎn)。

15.6

16.->->解析:結(jié)構(gòu)變量abc有成員a,并有指針pabc指向結(jié)構(gòu)變量abc,則引用變量abc成員a的形式有abc.a和p_abc->a。

17.scanf("%f<空格>%d"&b&a);printf("ab=%5.2f"a*b);scanf('%f<空格>%d',&b,&a);\r\nprintf('a,b=%5.2f',a*b);

18.!=returnj!=\r\nreturnj解析:本題程序的流程是:讓i,j都從1開始,其中j用于控制刪除后剩下的數(shù)中的下標(biāo),i用于搜索原數(shù)組中的元素。j始終是新數(shù)組已有元素中最后一個元素的下一個元素的下標(biāo),所以if()中的條件是a[j-1]!=a[i],其中a[j-1]就是新數(shù)組中的最后一個元素,若條件成立則表示出現(xiàn)了不同的值,所以a[i]要留到新數(shù)組中。注意本題中i、j的初值都要從1開始,該算法只能用于數(shù)組已排序的題目中。

19.86518651解析:主程序中,第一次循環(huán)時,i=0,調(diào)用sb(s,x)子函數(shù),此時n=3,x=s[n]=s[3]=8,然后將n減1變?yōu)?;第二次循環(huán)時,i=1,調(diào)用sb(s,x)子函數(shù),因?yàn)閷定義為了靜態(tài)變量,所以此時n=2,返回x=s[n]=s[2]=6;第三次循環(huán)時,i=2,調(diào)用sb(s,x)子函數(shù),此時n=1,返回x=s[n]=s[1]=5;第四次循環(huán)時,i=3,調(diào)用sb(s,x)子函數(shù),此時n=0,返回x=s[n]=s[0]=1。此程序?qū)嶋H上是將數(shù)組s逆序輸出。

20.模塊模塊解析:矩形表示的是模塊,箭頭表示的是模塊間的調(diào)用關(guān)系。用帶實(shí)心圓的箭頭表示傳遞的是控制信息,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。

21.1+a1-a1+a,1-a解析:考查條件運(yùn)算符的使用。因?yàn)轭}目中求的是1+|a|的值,即1和a的絕對值之和,所以根據(jù)數(shù)學(xué)中求絕對值的規(guī)則;當(dāng)a>=0時,絕對值取本身,當(dāng)a<0時,絕對值取相反數(shù),再結(jié)合條件運(yùn)算符的計算規(guī)則,可得到本題的答案為a>=0。

22.“d1.dat”“rb”或“d1.dat”“r+b”或“d1.dat”“rb+”“d1.dat”,“rb”,或“d1.dat”,“r+b”,或“d1.dat”,“rb+”,解析:打開文件的函數(shù)為fopen(”文件名”,“mode”),其中“mode”表示文件的打開方式。如果打開的是二進(jìn)制文件,其mode字符串可以是:“rb”、“wb”、“ab”、“rb+”、“wb+”、“ab+”?!皉”表示以只讀方式打開?!皐”表示以寫方式打開,如果已存在該文件名的文件,文件中的內(nèi)容將被清空。若文件名不存在,則將創(chuàng)建該文件?!癮”為追加方式打開。若文件存在時;將打開這個文件并且在文件的末尾進(jìn)行追加。當(dāng)文件不存在,將創(chuàng)建新文件?!皉+”打開一個已存在文件用于更新(可讀可寫)?!皐+”創(chuàng)建個新文件用于更新,如果文件存在,文件被重寫(可讀可寫)。“a+”打開用于追加,當(dāng)文件不存在時,創(chuàng)建新文件,并在文件末尾進(jìn)行追加(可讀可寫)。根據(jù)題意,應(yīng)該填“d1.dst”,“rb”或其他等價的表達(dá)法。

23.b[0][0]=1b[0][1]=2b[0][2]=3

24.1234theend1,2,3,4,theend解析:本題考查帶參數(shù)的宏的定義。第1次循環(huán),i=1時,調(diào)用PRINT(1),P(1)輸出1;第2次循環(huán),i=2時,調(diào)用PRINT(2),P(2)輸出2;第3次循環(huán),i=3時,調(diào)用PRINT(3),P(3)輸出3;第4次循環(huán),i=4時,調(diào)用PRINT(4),P(4)輸出4,theend。

25.doublefun(doublexintn){intij=1;doubles=1.0s1=1.0;for(i=1;i<=n;i++){j=-1*j;s1=s1*i/*各項(xiàng)中的階乘*/s=s+j*pow(xi)/s1;/*按公式求出*/}returns;}doublefun(doublex,intn)\r\n{\r\ninti,j=1;\r\ndoubles=1.0,s1=1.0;\r\nfor(i=1;i<=n;i++)\r\n{\r\nj=-1*j;\r\ns1=s1*i/*各項(xiàng)中的階乘*/\r\ns=s+j*pow(x,i)/s1;/*按公式求出*/\r\n}\r\nreturns;\r\n}解析:本程序中用s1來表示每項(xiàng)的分母(即各項(xiàng)中的階乘),要注意本程序中s和s1的初值都為1。注意到本題的公式中是加減相間的,這里要學(xué)會使用語句j=-1*j來實(shí)現(xiàn)。

26.voidfun(char*Schart[]){intij=0k=strlen(s);/*k為字符串的長度*/for(i=0;i<k;i=i+2)/*將s所指字符串中下標(biāo)為偶數(shù)的字符存入t所指字符串中*/t[j++]=s[i];t[j]='\0';/*在字符串最后加上結(jié)束標(biāo)志*/}voidfun(char*S,chart[])\r\n{\r\ninti,j=0,k=strlen(s);/*k為字符串的長度*/\r\nfor(i=0;i<k;i=i+2)/*將s所指字符串中下標(biāo)為偶數(shù)的字符存入t所指字符串中*/\r\nt[j++]=s[i];\r\nt[j]='\\0';/*在字符串最后加上結(jié)束標(biāo)志*/\r\n}解析:本題使用了一種i永遠(yuǎn)是偶數(shù)的循環(huán)方法,即for(i=0;i<k;i=i+2),因?yàn)殚_始時i的值為0,當(dāng)i+2循環(huán)時,此值永遠(yuǎn)是偶數(shù)。

27.voidfun(int*wintpintn){intiJ;inta[N];for(i=0;i<=p;i++)a[i]=w[i]for(i=p+1j=0;i<n;i++j++)w[j]=w[i];for(i=0;i<=p;i++)w[n-p-1+i]=a[i];}voidfun(int*w,intp,intn)\r\n{inti,J;\r\ninta[N];\r\nfor(i=0;i<=p;i++)a[i]=w[i]\r\nfor(i=p+1,j=0;i<n;i++,j++)w[j]=w[i];\r\nfor(i=0;i<=p;i++)w[n-p-1+i]=a[i];\r\n}解析:將數(shù)組后面的元素向前平移,肯定會將前面的元素覆蓋。因此,可以定義一個數(shù)組用來暫時存放前面的元素。可以先將w[0]~w[p]依次賦給a[0]~a[p];然后將w[p]~w[n—1)

移到數(shù)組的前面:再將a[0]~a[p)依次賦給w[n-p-1+i]~w[n—1]。

28.voidfun(inttt[M][N]intpp[N]){intiimax;for(j=0;j<N;j++){max=tt[0][j];/*假設(shè)各列中的第一個元素最大*/for(i=0;i<M;i++)if(tt[i][j]>max)/*如果各列中的其他元素比最大值大則將這個更大的元素看作當(dāng)前該列中最大元素*/max=tt[i][j];pp[j]=max;/*將各列的最大值依次放入pp數(shù)組中*/}}voidfun(inttt[M][N],intpp[N])\r\n{\r\ninti,i,max;\r\nfor(j=0;j<N;j++)\r\n{\r\nmax=tt[0][j];/*假設(shè)各列中的第一個元素最大*/\r\nfor(i=0;i<M;i++)\r\nif(tt[i][j]>max)/*如果各列中的其他元素比最大值大,則將這個更大的元素看作當(dāng)前該列中最大元素*/\r\nmax=tt[i][j];\r\npp[j]=max;/*將各列的最大值依次放入pp數(shù)組中*/\r\n}\r\n}解析:本題中函數(shù)的功能是求出二維數(shù)組中每列的最大元素。首先,假設(shè)各列中的第一個元素最大,然后利用行標(biāo)值的移動來依次取得各列中其他元素的值,并與假設(shè)的最大值進(jìn)行比較,如果遇到更大的,則把這個更大的元素看做當(dāng)前該列中最大的元素,繼續(xù)與該列中其他元素比較。

29.

解析:該程序功能是比較兩個字符串的長度。解題過程是首先分別求得兩個字符串的長度,然后對這兩個值進(jìn)行判斷,實(shí)現(xiàn)兩個字符串長度的比較。

30.intfun(intscore[]intmintbelow[]){intij=0;floatav=0.0;for(i=0;i<m;i++)av=av+score[i]/m;/*求平均值*/for(i=0;i<m;i++)if(score[i]<av)/*如果分?jǐn)?shù)低于平均分則將此分?jǐn)?shù)放入below數(shù)組中*/below[j++]=score[i];returnj;/*返回低于平均分的人數(shù)*/}intfun(intscore[],intm,intbelow[])\r\n{\r\ninti,j=0;\r\nfloatav=0.0;\r\nfor(i=0;i<m;i++)\r\nav=av+score[i]/m;/*求平均值*/\r\nfor(i=0;i<m;i++)\r\nif(score[i]<av)/*如果分?jǐn)?shù)低于平均分,則將此分?jǐn)?shù)放入below數(shù)組中*/\r\nbelow[j++]=score[i];\r\nreturnj;/*返回低于平均分的人數(shù)*/\r\n}解析:該題第1個循環(huán)的作用是求出平均分av,第2個循環(huán)的作用是找出低于平均分的成績并存入below數(shù)組中。

31.intfun(char*str){intij=0;for(i=0;str[i]!='\0';i++)if(str[i]!='')/*將字符串中的空格刪去*/str[j++]=str[i];/*注意該程序中空格字符的表達(dá)方法*/str[j]='\0';/*在字符串最后加上結(jié)束標(biāo)記符*/}intfun(char*str)\r\n{\r\ninti,j=0;\r\nfor(i=0;str[i]!='\\0';i++)\r\nif(str[i]!='')/*將字符串中的空格刪去*/\r\nstr[j++]=str[i];/*注意該程序中空格字符的表達(dá)方法*/\r\nstr[j]='\\0';/*在字符串最后加上結(jié)束標(biāo)記符*/\r\n}解析:前面我們接觸到的題是刪除字符,但本題要求刪除所有空格,即除了空格以外的其他所有字符都要留下。由于C語言中沒有直接刪除字符的操作,所以我們對于刪除字符的操作都是采用“留下”字符的算法,以前的題目亦是如此。用str[i]從串頭到串尾逐一走動,

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論