2021-2022學年四川省成都市全國計算機等級考試C語言程序設計真題一卷(含答案)_第1頁
2021-2022學年四川省成都市全國計算機等級考試C語言程序設計真題一卷(含答案)_第2頁
2021-2022學年四川省成都市全國計算機等級考試C語言程序設計真題一卷(含答案)_第3頁
2021-2022學年四川省成都市全國計算機等級考試C語言程序設計真題一卷(含答案)_第4頁
2021-2022學年四川省成都市全國計算機等級考試C語言程序設計真題一卷(含答案)_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2021-2022學年四川省成都市全國計算機等級考試C語言程序設計真題一卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(12題)1.數(shù)據(jù)處理的最小單位是()。

A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項D.數(shù)據(jù)結構

2.若聲明一個浮點數(shù)數(shù)組如下:froataverage[]=newfloat[30];假設該數(shù)組的內存起始位置為200,average[15]的內存地址是()。A.A.214B.215C.260D.256

3.有以下程序:voidfun1(char*p){char*q;q=p;while(*q!='\0'){(*q)++;q++;}}main(){chara[]={"Program"),*p;p=&a[3];fun1(p)printf("%s\n",A);}程序執(zhí)行后的輸出結果是()。

A.ProhsbnB.PrphsbnC.ProgsbnD.Program

4.某二叉樹的前序和后序序列正好相反,則該二叉樹一定是_____的二叉樹

A.空或者只有一個結點B.高度等于其結點數(shù)C.任一結點無左孩子D.任一結點無右孩子

5.下列關系模型中,能使經運算后得到的新關系中屬性個數(shù)多于原來關系中屬性個數(shù)的是

A.選擇B.連接C.投影D.并

6.軟件生命周期可分為定義階段、開發(fā)階段和維護階段。詳細設計屬于()。

A.定義階段B.開發(fā)階段C.維護階段D.上述三個階段

7.有下列程序:

程序執(zhí)行后的輸出結果是()。A.3,7,3,7B.7,3,7,3C.3,7,7,3D.7,3,3,7

8.下列敘述中正確的是()。

A.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

B.break語句只能用在循環(huán)體內和switch語句體內

C.在循環(huán)體內使用break語句和continue語句的作用相同

D.break語句只能用于switch語句體中

9.有以下程序:

程序運行后的輸出結果是()。

A.abc+abc=defdef

B.abc+ABC=DEFdef

C.abcABCDEFdef

D.abcabcdefdef

10.下列敘述中正確的是______。

A.線性表是線性結構B.棧與隊列是非線性結構C.線性列表是非線性性結構D.二叉樹是線性結構

11.設計一個判別表達式中左、右括號是否配對出現(xiàn)的算法,采用()數(shù)據(jù)結構最佳。A.線性表的順序存儲結構B.隊列C.線性表的鏈式存儲結構D.棧

12.若f(n)=3n2+2n+1,則f(n)=()。

A.O(n2)B.O(n)C.O(2n)D.O(3n2)

二、2.填空題(12題)13.一個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。

14.以下程序的功能是根據(jù)輸入的"y"("Y")與"n"("N"),在屏幕上分別顯示出"ThisisYES."與"ThisisNO."。空白處需要填入的內容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case′y′:

case′Y′:printf("\nThisisYES.\n");

case′n′:

case′N′:printf("\nThisisNO.\n");}

main()

{charch;

printf("\nEnterachary,Yorn,N:");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

15.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。

16.下列程序的輸出結果是【】。

#include<stdio.h>

main()

{charb[]="Helloyou";

b[5]=0;

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

}

17.下列程序段的輸出結果是______。

intn='c':

switch(n++)

{default:printf("error");break;

case'a':printf("good");break;

case'c':printf("moming");

case'd':printf("class");

}

18.有以下程序:

#include<stclio.h>

main()

{charc;

while((c=getchar())!='?')putchar(--c);

}

程序運行時,如果從鍵盤輸入:Y?N?<回車>,則輸出結果為【】。

19.按照邏輯結構分類,結構可以分為線性結構和非線性結構,棧屬于______。

20.設有以下程序,為使之正確運行,請在橫線中填入應包含的命令行。(注:try_me()函數(shù)在a:\myfile.txt中有定義。)

______

main()

{printf("\n");

try_me();

printf("\n");}

21.當數(shù)據(jù)的物理結構(存儲結構、存取方式等)改變時,不影響數(shù)據(jù)庫的邏輯結構,從而不致引起應用程序的變化,這是指數(shù)據(jù)的【】。

22.閱讀下面程序,則程序的執(zhí)行結果為【】。

#include"stdio.h"

main()

{inta=30,b=20,z;

z=fun(a+b,a-b);

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

fun(inta,intb)

{intz;

z=a/b;

returnz;}

23.以下程序運行后的輸出結果是【】。

main()

{inta=1,b=3,c=5;

if(c=a+b)printf("yes\n");

elseprintf("no\n");

}

24.表示""整數(shù)x的絕對值大于5""時值為""真""的C語言表達式是【】。

三、3.程序設計題(10題)25.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun(),它的功能是:將字符串中的前導*號全部刪除,中間和后面的*號不刪除。

例如,若字符串中的內容為****A*BC*DEF*G*******,刪除后,字符串中的內容則應當是A*BC*DEF*G*******。

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

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

試題程序;

#include<stdio.h>

#include<conio.h>

voidfun(char*a)

{

}

main()

{

chars[81];

printf("Enterastring:\n");

gets(s);

fun(s);

printf("Thestringafterdeleted:\n");

puts(s);

}

26.學生的記錄由學號和成績組成,N名學生的數(shù)據(jù)已在主函數(shù)中放入結構體數(shù)組s中,請編寫函數(shù)fun(),它的功能是按分數(shù)的高低排列學生的記錄,低分在前。

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

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

試題程序:

#include<stdio.h>

#defineN16

typedefstruct

{charmum[10);

ints;

}STREC;

intfun(STRECa[])

{

}

main()

{

STRECs[N]={{“GA005”,88},{“GA003”,64},

{“CA002”,77},{“GA004”,89},{“GA001”,54},

{“GA007”,72},{“GA008”,72},{“GA006”,65},

{“GA015”,83},{“GA013”,95},{“GA012”,55},

{“GA014”,68},{“GA01l”,78},{“GA017”,53},

{“GA018”,92},{“GA016”,82}};

inti;

FILE*out;

fun(s);

printf(“Thedataaftersorted:\n”);

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

{

if((i)%4==0)

/*每行輸出4個學生記錄*/

printf(“\n”);

printf(“%s%4d”,s[i].num,s[i].s);

}

printf(“\n”);

ut=fopen(“out21.dat”,“w”);

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

{

if((i)%4==0&&i)

fprintf(out,“\n”);

fPrintf(out,“%4d”,s[i].s);

}

fprintf(out,“\n”);

fClose(out);

}

27.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun(),它的功能是:除了尾部的,:號之外,將字符串中其他*號全部刪除。形參p已指向字符串中最后一個字母。在編寫函數(shù)時,不得使用C語言的字符串函數(shù)。

例如,若字符串中的內容為****A*BC*DEF*G******,刪除后,字符串中的內容應當是ABCDEFG******。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(char*a,char*p)

{

}

main()

chars[81],*t;

printf("Enterastring:\n");

gets(s);

t=s;

while(*t)

t++;

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

while(*t=='*')

t--;/*指針t指向最后一個字母*/

fun(s,t);

printf("Thestringafterdeleted:\n");

puts(s);

}

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

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

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

請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(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);

}

29.請編寫函數(shù)fun(),該函數(shù)的功能是:統(tǒng)計各年齡段的人數(shù)。N個年齡通過調用隨機函數(shù)獲得,并放在主函數(shù)的age數(shù)組中。要求函數(shù)把0至9歲年齡段的人數(shù)在d[0]中,把10至19歲年齡段的人數(shù)放在d[1]中,把20至29歲年齡段的人數(shù)放在d[2]中,依次類推,把100歲(含100)以上年齡的人數(shù)都放在d[10]中。結果在主函數(shù)中輸出。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>#defineN50#defineM11voidfun(int*a,int*b){}doublernd(){statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;return((double)r/m);}main(){intage[N],i,d[M];for(i=0;i<N;i++)age[i]=(int)(i15*rnd());/*產生一個隨機的年齡數(shù)組*/printf("Theoriginaldata:\n");for(i=0;i<N;i++)printf((i+l)%10==07“%4d\n”;“%4d”,age[i]);/*每行輸出10個數(shù)*/printf(“\n\n”);fun(age,d);for(i=0;i<l0;i++)printf(“%4d---%4d:%4d\n”;,i*l0,i*10+9,d[i]);printf(“Over100;%4dkn”;,d[10]).;}

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

例如,當s所指字符串中的內容為siegAHdied,則在t所指數(shù)組中的內容應是seAde。

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

請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(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);

}

31.請編寫函數(shù)fun,函數(shù)的功能是:將大于形參m且緊靠m的k個素數(shù)存入xx所指的數(shù)組中。例如,若輸入17,5,則應輸出:19,23,29,3l,37。

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

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

32.請編寫一個函數(shù)fun,它的功能是:找出一維整型數(shù)組元素中最大的值和它所在的下標,最大的值和它所在的下標通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。

主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值,index存放最大值所在元素的下標。

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

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

33.程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動賦值。

請編寫函數(shù)fun(inta[][N],intn),該函數(shù)的功能是使數(shù)組左下半三角元素中的值加上n。

例如:若n的值為3,a數(shù)組中的值為

a=254

169

537

則返回主程序后a數(shù)組中的值應為

554

499

8610

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#defineN5

fun(inta[][N],intn)

{

}

main()

{

inta[N][N],n,i,j;

clrscr();

printf("*****Thearray*****\n");

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

/*產生—個隨機5*5矩陣*/

{

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

{

a[i][j]=rand()%10;

printf("%4d",a[i][j]);

}

printf("\n");

}

do

n=rand()%10;

/*產生一個小于5的隨機數(shù)n*/

while(n>=5);

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

fun(a,n);

printf("*****THERESULT*****\n");

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

{

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

printf("%4d",a[i][j]);

printf("\n");

}

}

34.學生的記錄由學號和成績組成,N名學生的數(shù)據(jù)已存放在主函數(shù)的結構體數(shù)組s中,請編寫函數(shù)fun,它的功能是:把低于平均分的學生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。

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

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

[試題源程序]

#include<stdio.h>

#defineN8

typedefstruct

{

charnum[10];

doubles;

}STREC;

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

{

}

voidmain()

{

STRECs[N]={{"GA05",85},

{"GA03",76},{"GA02",69},{"GA04",85},

{"GA01",91},{"GA07",72},{"GA08",64},

{"GA06",87}};

STRECh[N],t;FILE*out;

inti,j,n;

doubleave;

ave=fun(s,h,&n);

printf("The%dstudentdatawhichislowerthan%7.3f:\n",n,ave);

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

printf("%s%4.1f\n",h[i].num,h[i].s);

printf("\n");

ut=fopen("out.dat","W");

fprintf(out,"%d\n%7.3f\n",n,ave);

for(i=0;2<n-1;i++)

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

if(h[i].s>h[j].s)

{

t=h[i];

h[i]=h[j];

h[j]=t;

}

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

fprintf(out,"%4.1f\n",h[i].s);

fclose(out);

}

四、單選題(0題)35.要聲明一個有10個int型元素的數(shù)組,正確的語句是()。

A.inta[10];B.inta[2,5];C.inta[];D.int*a[10];

五、單選題(0題)36.在Internet中,域名服務器的主要功能是實現(xiàn)()的轉換。

A.IP地址到域名(主機名字)B.域名到IP地址C.主機IP地址和路由器IP地址之間D.路由器IP地址之問

六、單選題(0題)37.是哈希查找的沖突處理方法()。

A.求余法B.平均取中法C.二分法D.開放地址法

參考答案

1.C解析:數(shù)據(jù)處理的最小單位是數(shù)據(jù)項;由若干數(shù)據(jù)項組成數(shù)據(jù)元素;而數(shù)據(jù)是指能夠被計算機識別、存儲和加工處理的信息載體;數(shù)據(jù)結構是指數(shù)據(jù)之間的相互關系和數(shù)據(jù)運算。故正確答案為選項C)。

2.C

3.A解析:在函數(shù)fun1()中,首先將形參p的內容存入臨時指針q中,然后使用—個while循環(huán),當q所指內容不是字符串結束標志'\\0\'時,讓q所指內容增1,然后將指針q增1指向下一個位置。所以函數(shù)fun1()實現(xiàn)的功能是:將傳入字符串的所有字符自增1。主函數(shù),指針p在被傳入fun1()函數(shù)之前,初始化指向的是寧符數(shù)組a的第4個元素\'g\',所以最終輸出的結果應該是Prohsbn。故應該選擇A。

4.B

5.B解析:本題主要考查關系模型中幾種運算的特征。經過選擇或投影運算得到的新關系的屬性個數(shù)最多不會超過原關系中的屬性個數(shù)。經過連接運算得到的新關系最多不少于原關系中屬性的個數(shù)。故選項B正確。

6.B解析:軟件生命周期由軟件定義、軟件開發(fā)和軟件維護三個階段組成。軟件定義可分為軟件系統(tǒng)的可行性研究和需求分析兩個階段。軟件開發(fā)階段由5個階段組成:概要設計、詳細設計、編寫代碼、組裝測試和確認測試。軟件維護時期的主要任務是使軟件持久地滿足用戶的需要。選項B正確。

7.C程序定義兩個整型變量i、j,初值為3,7。另外,定義兩個整型指針變量p、q,其中p指向i,q指向j。將i、j的地址傳給swap函數(shù)。在swap函數(shù)中,a指向i,b指向j。通過臨時變量t交換a和b指向的值,此時a指向的實參i、b指向的實參j的值發(fā)生了交換。即a指向i的值為7,b指向j的值為3;再通過臨時變量tp交換a和b的指針值,使得a指向j,b指向i。所以swap中輸出a指向的值為3(j),b指向的值為7(i);swap函數(shù)調用結束后,輸出p和q指向的值,即i、j的值為7、3。所以程序輸出:3,7,7,3。本題答案為C選項。

8.Bcontinue語句的作用是跳過循環(huán)體中剩余的語句而進行下一次循環(huán),所以A選項錯誤。break語句的作用是終止正在執(zhí)行的switch語句體,跳出switch語句體或者強制終止當前循環(huán),從當前執(zhí)行的循環(huán)中跳出,所以C、D選項錯誤。故本題答案為B選項。

9.A題干中,函數(shù)fun的功能是:判斷形參ch是否為大寫字母,若是大寫字母則改寫成小寫字母,其他字符不變。main函數(shù)中,通過while循環(huán),調用fun函數(shù),將字符數(shù)組s中的各個字符傳入,將s中的大寫字母改成小寫字母,程序輸出:abc+abc=defdef。本題答案為A選項。

10.A解析:一般將數(shù)據(jù)結構分為兩大類型:線性結構與非線性結構。線性表、棧與隊列、線性鏈表都是線性結構,而二叉樹是非線性結構。

11.D

12.A

13.可重用性繼承的優(yōu)點:相似的對象可以共享程序代碼和數(shù)據(jù)結構,從而大大減少了程序中的冗余,提高軟件的可重用性。

14.getchargetchar解析:考查了字符可以作為整型變量來對待,參與操作。題中要求根據(jù)輸入的字符調用函數(shù)YesNo來判斷輸入的字符是y(Y)還是n(N),字符的輸入可用字符輸入函數(shù)getchar。函數(shù)YesNo用來判斷一個字符是y(Y)還是n(N),主要用了一個switch多分支結構來比較輸入字符與字符\ue008'y',\ue009'Y'、,'n','N'是否相等來實現(xiàn)的。

15.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DBMS)

16.HelloHello解析:語句b[5]=0;相當于語句b[5]='\\0';且'\\0'為字符串結束標志,輸出時遇到'\\0'就停止輸出。

17.morningclassmorningclass解析:本題考查了兩個知識點:①“++、--”運算后綴形式是先使用變量原來的值,使用完后再使其增1或減1;②在switch語句中,當n=\'c\'時,執(zhí)行“case\'c\':”,輸出morning;因為此句中沒有break語句,因此接著執(zhí)行'case\'d\':”,輸出class,最終輸出結果為morningclass。

18.XX解析:主函數(shù)中首先定義了一個字符型變量c,接著執(zhí)行下面while語句,在while循環(huán)中,首先從鍵盤上讀入一個字符Y并給賦給字符變量c,賦值表達式的值不為'?',執(zhí)行輸出語句,輸出字符X。接著判斷while中的循環(huán)條件,讀入一個字符'?'并賦值給c,賦值表達式的值為'?'循環(huán)條件不再滿足,退出循環(huán)。

19.線性結構線性結構解析:數(shù)據(jù)的邏輯結構是指數(shù)據(jù)元素之間的邏輯關系,分為線性結構和非線性結構。常見的線性結構有線性表、棧和隊列等,常見的非線性結構有樹、二叉樹等。

20.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本題考查了函數(shù)的存儲分類的概念。如果沒有特別說明,函數(shù)的存儲范圍是從定義函數(shù)的位置到文件的結尾,如果其他文件想使用這個函數(shù),需要用ginclude文件包含命令將定義函數(shù)的文件包含進來。

21.物理獨立性物理獨立性

22.55解析:函數(shù)調用的時候,函數(shù)名字必須與所調用的函數(shù)名完全一致,形參與實參類型要一致,在沒有給出函數(shù)返回值類型的情況下,默認為整形,當返回值為整型的函數(shù)放到主函數(shù)后面時,可以不需要事先說明就調用這個函數(shù)。return既可以返回一個普通常量,也可以返回一個指針變量。

23.yesyes解析:if語句的條件語句為c=a+b=1+3=4,即條件為真,執(zhí)行語句printf('yes\\n');,輸出結果為yes。

24.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:要使整數(shù)x的絕對值大于5,則x大于5或x小于5,用C語言表示即為:x>5||x<-5或者x<-5||x>5。故本題答案為;x>5||x<-5或者x<-5||x>5。

25.voidfun(char*a){char*p=a;while(*P==‘+’)p++;/*指針p指向字符串第一個字母*/for(;*p!=‘\0’;p++a++)*a=*p;/*從第—個字母開始其后的字符都放入指針a所指的字符串中*/*a=‘\0’;/*在字符串最后加上結束標記符*/}voidfun(char*a)\r\n{\r\nchar*p=a;\r\nwhile(*P==‘+’)p++;/*指針p指向字符串第一個字母*/\r\nfor(;*p!=‘\\0’;p++,a++)\r\n*a=*p;/*從第—個字母開始,其后的字符都放入指針a所指的字符串中*/\r\n*a=‘\\0’;/*在字符串最后加上結束標記符*/\r\n}解析:在前面的改錯題和編程題中,相關試題已經出現(xiàn)好多次了,我們在此提供另一種解答方法。

#include<string.h>

voidfun(char*a)

{char*p=a;

while(*p==‘*’)p++;

strcpy(a,p);

}

26.intfun(STRECa[]){intij;STRECt;for(i=l;i<N;i++)/*用冒泡法進行排序進行N-1次比較*/for(j=0;j<N-1;j++)/*在每—次比較中要進行N-1次兩兩比較*/if(a[j].s>a[j+1].s)/*按分數(shù)的高低排列學生的記錄低分在前*/{t=a[j];a[j]=a[j+1];a[j+1]=t;}}intfun(STRECa[])\r\n{\r\ninti,j;\r\nSTRECt;\r\nfor(i=l;i<N;i++)/*用冒泡法進行排序,進行N-1次比較*/\r\nfor(j=0;j<N-1;j++)/*在每—次比較中要進行N-1次兩兩比較*/\r\nif(a[j].s>a[j+1].s)/*按分數(shù)的高低排列學生的記錄,低分在前*/\r\n{\r\nt=a[j];\r\na[j]=a[j+1];\r\na[j+1]=t;\r\n}\r\n}解析:冒泡法算法思路:如果有N個數(shù),則要進行N-1次比較,在每—次比較中要進行N-1次兩兩比較(這種算法較好理解但不是最精的)。所謂兩兩比較就是從頭到尾依次將相鄰兩個數(shù)進行比較并將其中大的數(shù)放在前或在后(若要求從小到大排序,則大的數(shù)要放在后。反之則對調),即兩兩比較后這兩個數(shù)要形成題中所要求的順序。由于總是從頭到尾進行比較,所以第1次比較結束后,最大(或最小)數(shù)肯定在最后,第2次比較結束后,次最大(或次最小)數(shù)肯定在倒數(shù)的第2個數(shù),依次類推,所以進行第一次比較時必須比較到最后一個數(shù),而進行第2次比較時只要比較到倒數(shù)的第2個數(shù)即可,所以進行第i次比較I時只需比較N-i次即可(這種算法較難理解,但它是最好的)。

27.voidfun(char*achar*p){char*t=a;for(;t<=p;t++)if(*t!='*')*(a++)=*t;/*將p以前所有不是*號的字符保留下來*/for(;*t!='\0';t++)*(a++)=.t;/*將p以后的所有*號保留下來*/*a='\0';/*在字符串最后加上結束標記位*/voidfun(char*a,char*p)\r\n{\r\nchar*t=a;\r\nfor(;t<=p;t++)\r\nif(*t!='*')\r\n*(a++)=*t;/*將p以前所有不是*號的字符保留下來*/\r\nfor(;*t!='\\0';t++)\r\n*(a++)=.t;/*將p以后的所有*號保留下來*/\r\n*a='\\0';/*在字符串最后加上結束標記位*/解析:本題曾在歷年上機考試及模擬試題中多次出現(xiàn),一般用兩個循環(huán)語句來實現(xiàn)。第1個循環(huán)的作用是將p以前所有不是*號的字符保留下來,即刪除所有的*號。第2個循環(huán)的作用是將p以后的所有*號保留下來。

28.intfun(char*str){intij=0;for(i=0;str[i]!='\0';i++)if(str[i]!='')/*將字符串中的空格刪去*/str[j++]=str[i];/*注意該程序中空格字符的表達方法*/str[j]='\0';/*在字符串最后加上結束標記符*/}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];/*注意該程序中空格字符的表達方法*/\r\nstr[j]='\\0';/*在字符串最后加上結束標記符*/\r\n}解析:前面我們接觸到的題是刪除字符,但本題要求刪除所有空格,即除了空格以外的其他所有字符都要留下。由于C語言中沒有直接刪除字符的操作,所以我們對于刪除字符的操作都是采用“留下”字符的算法,以前的題目亦是如此。用str[i]從串頭到串尾逐一走動,每走到一個字符都判斷其是否為空格,若不是空格(注意在if()的單引號之間有一個空格),則將其保存str[j]中。注意j的下標變化、初值及最后加串結束符'\\0'。

29.voidfun(int*aint*b){intij;for(j=0;j<M;j++)b[j]=0;/*數(shù)組b初始化為0*/for(i=0;i<N;i++)if(a[i]>=100)b[10]++;/*如果年齡大于等于100b[10]自增1*/elseb[a[i]/10]++;/*如果年齡小于100則將其分別統(tǒng)計到b[a[i]/10]中*/}voidfun(int*aint*b){intij;for(j=0;j<M;j++)b[j]=0;/*數(shù)組b初始化為0*/for(i=0;i<N;i++)if(a[i]>=100)b[10]++;/*如果年齡大于等于100b[10]自增1*/elseb[a[i]/10]++;/*如果年齡小于100則將其分別統(tǒng)計到b[a[i]/10]中*/\r\n}voidfun(int*a,int*b){inti,j;for(j=0;j<M;j++)b[j]=0;/*數(shù)組b初始化為0*/for(i=0;i<N;i++)if(a[i]>=100)b[10]++;/*如果年齡大于等于100,b[10]自增1*/elseb[a[i]/10]++;/*如果年齡小于100,則將其分別統(tǒng)計到b[a[i]/10]中*/\r\n}

30.voidfun(char*Schart[]){intij=0k=strlen(s);/*k為字符串的長度*/for(i=0;i<k;i=i+2)/*將s所指字符串中下標為偶數(shù)的字符存入t所指字符串中*/t[j++]=s[i];t[j]='\0';/*在字符串最后加上結束標志*/}voidfun(char*S,chart[])\r\n{\r\ninti,j=0,k=strlen(s);/*k為字符串的長度*/\r\nfor(i=0;i<k;i=i+2)/*將s所指字符串中下標為偶數(shù)的字符存入t所指字符串中*/\r\nt[j++]=s[i];\r\nt[j]='\\0';/*在字符串最后加上結束

溫馨提示

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

評論

0/150

提交評論