2021-2022學年廣東省珠海市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2021-2022學年廣東省珠海市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2021-2022學年廣東省珠海市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2021-2022學年廣東省珠海市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2021-2022學年廣東省珠海市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩50頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2021-2022學年廣東省珠海市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(12題)1.假設以行序為主序存儲二維數組array[100][100],設每個數據元素占2個存儲單元,基地址為10,下標從0開始,則元素array[5][5]的地址為()。

A.808B.818C.1010D.1020

2.若變量已正確定義為int型,要通過語句“scanf(“%d,%d,%d”,&a,&b,&c);”將a賦值為1、將b賦值為2、將c賦值為3,以下輸入形式中錯誤的是(注:□代表一個空格符)()。

A.1,2,3<Enter>

B.□□□1,2,3<Enter>

C.1,□□□2,□□□3<Enter>

D.1□2□3<Enter>

3.有以下程序:#include<stdio.h>main(){inta=-2,b=2;for(;++a&&--b;)printf(“%d,%d\n”,a,b);}程序運行后的輸出結果是()。

A.0,1B.0,0C.1,-1D.0,2

4.一個有7個頂點的完全三部圖,至少有存在幾條邊()

A.10B.11C.15D.16

5.有以下函數intfun(char*X,char*y){intn=0;while((*x===*y)*x!=\O){x++;y++;n++;}returnn;}函數的功能是()。A.查找X和y所指字符串中是否有\o

B.統計x和Y所指字符串中最前面連續相同的字符個數

C.將Y所指字符串賦給X所指定存儲空間

D.統計X和Y所指字符串中相同的字符個數

6.有以下程序:#include<stdiO.h>main(){FILE*fp;intk,n,i,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);fclose(fp);fp(i=0;i<3;i++)fscanf(fp,"%d%d",&k,&n);fclose(fp);printf("%d\n,%d\n,k,n);}程序運行后的輸出結果是()。A.1,2B.3,4C.5,6D.123,456

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

A.算法的執行效率與數據存儲結構無關

B.算法的空間復雜度是指算法程序中指令(或語句)的條數

C.算法的有窮性是指算法必須能在執行有限個步驟之后終止

D.以上3種描述都不對

8.以下能正確定義一維數組的選項是()。

A.inta[5]=(0,1,2,3,4,5);

B.chara[]={0,1,2,3,4,5);

C.chara={'A','B','C'};

D.inta[5]="0123";

9.對包含N個元素的散列表進行檢索,平均檢索長度________

A.為o(log2N)B.為o(N)C.不直接依賴于ND.上述三者都不是

10.下面程序的運行結果是______。#include<stdio.h>#include<string.h>fun(char*w,intn){chart,*s1,*s2;s1=w;s2=w+n-1;while(s1<s2){t=*s1++;*s1=*s2--;*s2=t;}}main(){char*p;p="1234567";fun(p,strlen(p));puts(p);}

A.7654321B.1714171C.1711717D.7177171

11.設棧S的初始狀態為空,6個元素入棧的順序為e1,e2,e3,e4,e5和e6。若出棧的順序是e2,e4,e3,e6,e5,el,則棧s的容量至少應該是()。

A.6B.4C.3D.2

12.以下敘述中正確的是()。

A.C語言比其他語言高級

B.C語言可以不用編譯就被計算機識別并執行

C.C語言以接近英語國家的自然語言和數學語言作為語言的表達形式

D.C語言出現最晚,具有其他語言的一切優點

二、2.填空題(12題)13.若有如下定義:

int[]={11,24,56,19,29,39),*t=s;

則不移動指針t,且通過指針t引用數組中值為29的元素的表達式是【】。

14.以下程序通過函數SunFun求。這里f(x)=x2+l,由F函數實現。請填空。

main()

{

printf("Thesum=%d\n",SunFun(10));

}

SunFun(intn)

{

intx,s=0;

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

S+=F(______);

returns;

}

F(intx)

{

return(______);

}

15.按“先進后出”原則組織數據的數據結構是[]。

16.設函數findbig已定義為求3個數中的最大值。以下程序將利用函數指針調用findbig函數。請填空。

main()

{

intfindbig(int,int,int);

int(*f)(),x,yz,z,big;

f=【】;

scanf("%d%d%d",&X,&y,&z);

big=(*f)(x,y,z);

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

}

17.執行以下程序的輸出結果是()。

#include<stdio.h>

#defineM5

#defineNM+M

main()

{intk;

k=N*N*5;printf(”%d\n",k);

}

18.若有定義:inta=6,b=8,c=14;接著順序執行下列語句后,變量c中的值是()。c=(b-=(a-5));a=(c%3)+(a=8);

19.在一個容量為32的循環隊列中,若頭指針front=3,尾指針rear=2,則該循環隊列中共有______個元素。

20.以下程序運行后的輸出結果是()。

#include<stdio.h>

main()

{inta=1,b=7;

do{

b=b/2;a+=b;

}while(b>1);

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

}

21.下面程序段的輸出結果是【】。

intx=5;

do{printf("%d",x-=4);

}while(!(--x));

22.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為【】。

23.關系模型的完整性規則是對關系的某種約束條件,包括實體完整性、______和自定義完整性。

24.表達式pow(2.8,sqrt(float(x)))值的數據類型為______型。

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

例如,當n=10,x=0.3時,函數值為1.349859。

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

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

26.請編寫函數fun(),它的功能是:判斷字符串是否是回文?若是,函數返回1,主函數中輸出:YES,否則返回0,主函數輸出NO。回文是指順讀和倒讀都一樣的字符串。

例如,字符串LEVEL是回文,而字符串12312就不是回文。

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

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

[試題源程序]

#include<stdio.h>

#defineN80

intfun(char*str)

{

}

main()

{

chars[N];

printf("Enterastring:")"gets(s);

printf("\n\n");puts(s);

if(fun(s))

printf("YES\n");

else

printf("NO\n");

NONO();

}

NONO()

{

/*請在此函數內打開文件,輸入測試數據,調用fun函數,輸出數據,關閉文件。*/

FILE*rf,*wf;

inti;chars[N];

rf=fopen("K:\\k06\\24010001\\in.dat","r");

wf=fopen("K:\\k06\\24010001\\out.dat","w");

for(i=0;i<10;i++){

fscanf(rf,"%s",s);

if(fun(S))

fprintf(wf,"%sYES\n",s);

else

fprintf(wf,"%sNO\n",s);

}

fclose(rf);

fclose(wf);

}

27.學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun(),它的功能是:函數返回指定學號的學生數據,指定的序號在主函數中輸入。若沒找到指定的學號,在結構體變量中給學號置空串,給成績置-1,作為函數值返回(用于字符串比較的函數是strcmp)。

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

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

試題程序:

#include<stdio.h>

#inctude<stdlib.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

STRECfun(STREC*a,char*b)

{

}

main()

{

STRECs[N]={{"GA005",85},{"GA003",76},

{"GA002",69},{"GA004",85},{"GA001",91},

{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},

{"GA014",91},{"GA011",77},{"GA017",64},

{"GA018",64},{"GA016",72}};

STRECh;

charre[10];

inti,n;

FILE*out;

printf("Theoriginaldata:\n");

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

{if(i%4==0)

printf("In");

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

printf("%s%3d",s[i]num,s[i]s);

}

printf("\n\nEnterthenumber:");

gets(m);

h=fun(s,m);

printf("Thedata:");

printf("\n%s%4d\n",h.num,h.s);

printf("\n");

out=fopen("out80.dat","w");

h=fun(s,"GA013");

fprintf(out,"%s%4d\n",h.num,h.s);

fclose(out);

}

28.請編寫函數fun(),該函數的功能是:計算n門課程的平均分,計算結果作為函數值返回。

例如x有5門課程的成績是90.5,72,80,61.5,55,則函數的值為71.80。

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

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

試題程序:

#include<stdio.h>

floatfun(float*a,intn)

{

}

main()

{

floatscore[30]=(90.5,72,80,61.5,55},

aver;

aver=fun(score,5);

printf("\nAveragescoreis:%5.2f

\n",aver);

}

29.請編寫函數fun(),該函數的功能是:移動一維數組中的內容,若數組中有n個整數,要求把下標從p~n-1(p<n-1)的數組元素平移到數組的前面。

例如,一維數組中的原始內容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,P的值為6。移動后,一維數組的內容應為7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。

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

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

[試題源程序]

#inciude<stdio.h>

#defineN80

voidfun(int*w,intp,intn)

{

}

main()

{

inta[N]=(i,2,3,4,5,6,7,8,9,10,11,12,13,14,15);

inti,P,n=15;

printf("Theoriginaldata:\n");

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

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

printf("\n\nEnterp:");

scanf("%d",&p);

fun(a,P,n);

printf("\nThedataaftermoving:\n");

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

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

printf("\n\n");

}

30.假定輸入的字符串中只包含字母和*號。請編寫函數fun(),它的功能是:只刪除字符串前導和尾部的*號,串中字母之間的*號都不刪除。形參n給出了字符串的K度,形參h給出了字符串中前導*號的個數,形參e給出了字符山中最后*號的個數。在編寫函數時,不得使用c語言提供的字符串函數。

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

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(char*a;intn,inth,inte)

{

}

main()

{

chars[81],*t,*f;

intm=0,tn=0,fn=0;

printf("Enterastring:\n");

gets(s);

t=f=s;

while(*t)

{t++;m++;}/*m為字符串的長度*/

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

while(*t=='*')

{t--;tn++;}

/*指針t指向最后一個字母,tn統計尾部'*'的個數*/

while(*f=='*')

{f++;fn++;}

/*指針f指向第一個字母,tn統計導'*'的個數*/

fun(s,m,fn,tn);

printf("Thestringafterdeleted:\n");

puts(s);

}

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

例如,若輸入ABC4efG,則應輸出aBc4efg。

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

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

}

32.N名學生的成績己在主函數中放入一個帶頭節點的鏈表結構中,h指向鏈表的頭節點。請編寫函數fun(),它的功能是:求出平均分,由函數值返回。

例如,若學生的成績是85,76,69,91,72,64,87,則平均分應當是78.625。

注童:部分源程序給出如下.

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

試題程序:

#include<stdlib.h>

#include<stdio.h>

#defineN8

structslist

{doubles;

structslist*next;

};

typedefstructslistSTREC;

doublefun(STREC*h)

{

}

STREC*creat(double*s)/*創建鏈表*/

{

STREC*h,*p,*q;

inti=0;

h=p=(STREC*)malloc(sizeof(STREC));

p->s=0;

while(i<N)

{q=(STREC*)malloc(sizeof(STREC));

q->s=sIi];i++;p->next=q;p=q;

}

p->next=0;

returnh;

}

outlist(STREC*h)

{

STREC*p;

p=h->next;

printf("head");

do

{printf("->%4.if",p->s);

p=p->next;/*輸出各成績*/

}

while(p!=0)

}

main()

{

doubles[N]={85,76,69,85,91,72,64,

87},ave;

STREC*h;

h=creat(s);

outlist(h);

ave=fun(h);

printf("ave=%6.3f\n",ave);

}

33.請編寫一個函數fun(),它的功能是計算并輸出給定整數n的所有因子(不包括1與自身)的平方和(規定n的值不大于100)。

例如:主函數從鍵盤給輸入n的值為56,則輸出為sum=1113。

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

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

試題程序:

#include<stdio.h>

longfun(intn)

{

}

main()

{

intn;

longsum;

printf("Inputn:");

scanf("%d",&n);

sum=fun(n);

printf("sum=%ld\n",sum);

}

34.請編寫函數fun(),該函數的功能是:實現B=A+A',即把矩陣A加上A的轉置,存放在矩陣B中。計算結果在main()函數中輸出。

例如,輸入下面矩陣:

123

456

789

其轉置矩陣為:

147

258

369

則程序輸出:

2610

61014

101418

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

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

試題程序:

#include<stdio.h>

#include<conio,h>

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

{

}

main()

{

inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},

t[3][3];

inti,j;

clrscr();

fun(a,t);

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

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

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

printf("\n");

}

}

四、單選題(0題)35.若有定義inta=5,b=7;,則表達式a%=(b%2)運算后,a的值為()。

A.0B.1C.11D.3

五、單選題(0題)36.如有inta=11;則表達式(a/1)的值是()。

A.0B.3C.4D.11

六、單選題(0題)37.以下不能定義為用戶標識符的是()。

A.VoidB.scanfC.intD._3com_

參考答案

1.C

2.D在輸入整數或實數這類數值型數據時,輸入數據之間必須用空格、回車符、制表符等間隔符隔開,間隔符個數不限。scanf的格式控制字符串也可以使用其他非空白字符,如本題中的逗號,但在輸入時必須輸入這些字符,以保證匹配,所以逗號必須輸入。故本題答案為D選項。

3.A在語句“for(;++a&&--b;)”中,for循環的表達式1和表達式3為缺省項。首先判斷條件表達式“b”。當“a=-2,b=2”時,第1次執行“++a”和“--b”,條件表達式為真,循環條件成立。第2次執行“++a”為0,由于運算符,當第1個條件為假時,不執行第2個條件,因此“b=1”,發生短路,“--b”不再執行。因此輸出的最終值為0,1。故本題答案為A選項。

4.B

5.B由題中while(*x==*y*x!=\\n)可知此函數是統計x和y所指向的字符串中最前面的聯系相同的字符的個數。

6.C此題是考查fprintf和fscanf,其中fprintf是向文件輸出,文件為da2.dat文件,fscanf是向文件輸入,所以根據程序循環寫入和寫出.可知答案為C。

7.C在程序設計中,算法執行效率與數據的存儲結構密切相關。算法的空間復雜度是指算法執行過程中所需存儲空間。

8.B數組1標從0開始,A選項中所賦值的個數超過了數組的長度;C選項中定義a為字符型變量,而不是數組,賦值錯誤;D選項中,整型數組不能賦字符串。

9.C

10.C

11.C

12.C解析:計算機語言分為低級語言和高級語言,C語言屬于高級語言,但并非比其他語言高級,選項A)錯誤;除了機器語言外,其他各種語言都必須編譯成能被計算機識別的機器代碼才能執行,選項B)錯誤;C語言出現于1972年至1973年,并不是出現最晚的語言,選項D)錯誤。

13.*(t+4)*(t+4)解析:本題定義了指針變量t,并用數組s的首地址給它賦初值。t+4代表數組第6個元素的地址,*(t+4)是取得該地址中的值即29,而此時并沒有移動指針t。

14.xX*X+1或1+x*xx\r\nX*X+1或1+x*x解析:題目中要求從x=0開始將f(x)的值累加起來,直到x=10。在SunFun()函數中用了一個for循環,每循環一次將f(x)累加到s中,所以在本題的第一個空格處我們應該填x,,然后x+1,共循環10次。F()函數的功能應該是求數學表達式f(x)得值,所以其返回值應該為x*x+1。

15.棧棧解析:棧和隊列都是—種特殊的操作受限的線性表,只允許在端點處進行插入和刪除。二者的區別是:棧只允許在表的—端進行插入或刪除操作,是—種“先進后出”的線性表;而隊列只允許在表的—端進行插入操作,在另—端進行刪除操作,是—種“先進先出”的線性表。

16.findbigfindbig解析:本題首先定義了一個指向函數的指針變量f,如果希望讓它指向某個函數,只需把函數名賦給該指針變量即可。所以本題的空白處應該填入函數名findbig。

17.5555解析:本題考查的重點是對宏定義的理解。#define指令定義一個標識符和一個串,編譯程序在對C源程序處理時.發現該標識符都用該串替換,因此,在語句k=N*N*5將替換成k=M+M*M+M*5后,M被替換成5,從而k=5+5*5+5*5=55。

18.77解析:本題考查基本賦值運算符和賦值表達式。c=(b-=a-5))等價于c=b-(a-5)b=7。c%3=1,a=(c%3)+a=8)=9,但c的值在第二條語句只能夠并沒有被改變,因此c的值還是7。

19.3131解析:設隊列容量為m,如果:rear>front,則隊列中元素個數為rear-front;如果rear<front,則隊列中元素個數為m+(rear-front)。本題rear<front,則m=32+(2-3)=31。

20.55解析:該程序考查do-while循環。循環共進行兩次。第一次循環b=3,a=4;第二次循環b=1,a=5。輸出a的值為5。

21.1-41-4解析:題目中首先讓x=5,然后進入do-while循環體,輸出x-4的值1,此時x為1,表達式!(--x)的值為!(0)為真(此時x變為0),所以再次執行循環體,輸出x-4的值-4,此時x為-4,表達式!(--x)的值為!(—5)為假,退出循環。故輸出結果是1-4。

22.88解析:fabs函數功能是求x的絕對值,計算結果為double型。pow功能是計算x的y次方的值,計算結果同樣為double型。所以本題表達式相當于2.0的3.0次方,結果為8.000000。

23.參照完整性參照完整性

24.floatfloat解析:在此表達式中x是float類型的變量,經過開方所得到的結果仍是float類型,再和2.8進行運算時,應該先將2.8轉換成float類型再運算,最后結果仍是float型。

25.

解析:該程序功能是計算并輸出多項式值。根據題干中給出的數列,首先推出每一項的表達式,然后再對多項式進行累加求和。

26.intfun(char*str){intin=0fg=1;char*p=str;while(*p){n++;P++;}for(i=0;i<n/2;i++)if(str[i]==str[n-1-i]);else{fg=0;break;}returnfg;}intfun(char*str)\r\n{\r\ninti,n=0,fg=1;\r\nchar*p=str;\r\nwhile(*p)\r\n{\r\nn++;\r\nP++;\r\n}\r\nfor(i=0;i<n/2;i++)\r\nif(str[i]==str[n-1-i]);\r\nelse\r\n{\r\nfg=0;\r\nbreak;\r\n}\r\nreturnfg;\r\n}解析:本題的設計思路是:(1)定義一個int型變量flag用做返回值,定義一個字符指針代替原串遍歷,求字符串的長度;(2)利用循環及if條件語句判斷字符串首尾對應字符是否相等;(3)如果為回文數,修改flag的值;(4)返回flag

27.STRECfun(STREC*achar*b){inti;STRECstr={"\0"-1};/*若沒找到摜定的學號在結構體變量中給學號置空串給成績置-1*/for(i=0;i<N;i++)if(strcmp(a[i].numb)==0)/*找到指定學號的學生數據*/str=a[i];returnstr;/*返回學生記錄*/}STRECfun(STREC*a,char*b)\r\n{\r\ninti;\r\nSTRECstr={'\\0',-1};/*若沒找到摜定的學號,在結構體變量中給學號置空串,給成績置-1*/\r\nfor(i=0;i<N;i++)\r\nif(strcmp(a[i].num,b)==0)/*找到指定學號的學生數據*/\r\nstr=a[i];\r\nreturnstr;/*返回學生記錄*/\r\n}解析:本程序一開始先使結構體變量str的學號為空串,成績為-1。題中循環體的功能是搜索所有學生的學號并判斷是否有學號與b所指字符串相同的(即找到),若找到則給str重新賦值(str=a[i]),若沒找到則str成員的值還是原有值(即未找到時學號返回空串,成績返回-1)。

題中已經給出字符串的比較只能用strcmp()函數,而不能直接進行比較,我們在改錯題分析中已經詳細講述了字符串操作函數,如strcmp(),strcat(),strcpy()和strlen()等,希望學習者能熟練掌握。

28.floatfun(float*aintn){floatav=0.0;inti;for(i=0;iav=av+a[i];/*求分數的總和*/return(av/n);/*返回平均值*/}floatfun(float*a,intn)\r\n{\r\nfloatav=0.0;\r\ninti;\r\nfor(i=0;iav=av+a[i];/*求分數的總和*/\r\nreturn(av/n);/*返回平均值*/\r\n}解析:我們先按數學的思路來計算平均分:總分除以人數即可得到平均分,其實用C語言的指針來實現該問題,也不難。當指針變量指向一個數組時,用該指針變量引用數組元素時,引用方式與數組的引用方式相同。如本題中a指向了score,所以通過a引用score中的元素時可以用下標法,也可以用指針運算法,a[i]和*(a+i)具有相同的作用。下標運算實際上是從當前地址開始往后取出地址中的第幾個元素,當前地址下標為0。例如:若有intcc[10],*P=cc+5;,即p指向了cc的第5號元素,則p[0]的作用是取出從當前地址(即p所指地址)開始的第0號元素,它與cc[5]相同:p[3]的作用是取出從當前地址(即p所指地址)開始往后的第3號元素,它與cc[8]相同:p[-2]的作用是取出從當前地址開始往前的第2號元素,它與cc[3]相同,但不提倡使用“負”的F標。

29.voidfun(int*wintpintn){intiJt;for(i=p;i<=n-i;i++){t=w[n-1];for(j=n-2;j>=0;j--)w[j+1]=w[j];w[0]=t;}}voidfun(int*w,intp,intn)\r\n{\r\ninti,J,t;\r\nfor(i=p;i<=n-i;i++)\r\n{\r\nt=w[n-1];\r\nfor(j=n-2;j>=0;j--)\r\nw[j+1]=w[j];\r\nw[0]=t;\r\n}\r\n}

30.voidfun(char*aintninthinte){intij=0for(i=h;i<n-e;i++)/*第一個字母和最后一個字母之間的字符全不刪除*/a[j++]=a[i];a[j]='\0;/*在字符串最后加上結束標記*/}voidfun(char*a,intn,inth,inte)\r\n{\r\ninti,j=0\r\nfor(i=h;i<n-e;i++)/*第一個字母和最后一個字母之間的字符全不刪除*/\r\na[j++]=a[i];\r\na[j]='\\0;/*在字符串最后加上結束標記*/\r\n}解析:注意循環變量i的初值(h)和終止值(n-e),由于h和e分別是a中的前導*和尾部*的個數,n是字符串的長度,所以從a[h])到a[n-e-1]之間的所有字符都要留下,而其他字符均刪除。刪除操作(即留下相應字符)現己由循環完成。

本題技巧部分:

voidfun(char*a,intn,inth,inte)

{a[n-e]='\\0;

strcpy(a,a+h);}

另外,請注意,a(n-e]的作用是使最后一個字母后出現字符串結束符。木程序采用了strcpy()庫函數。

31.voidfun(char*ss){inti;for(i=0;ss[i]!='\0'i++)/*將ss所指字符串中所有下標為偶數位置的字母轉換為小寫*/if(i%2==0&&ss[i]>='A'&&ss[i]<='z')ss[i]=ss[i]+32;}voidfun(char*ss)\r\n{\r\ninti;\r\nfor(i=0;ss[i]!='\\0'i++)/*將ss所指字符串中所有下標為偶數位置的字母轉換為小寫*/\r\nif(i%2==0&&ss[i]>='A'&&ss[i]<='z')\r\nss[i]=ss[i]+32;\r\n}解析:從C語言的學習中我們知道,只要將小寫字母減去32則轉成大寫字母,將大寫字母加上32則轉成小寫字母。該程序是用if語句實現該功能轉化的。

32.doublefun(STREC*h){doubleav=0.0;STREC*p-h->next;/*p直接指向“頭結點”的下一個結點即第—個成績*/while(p!=NULL){aY=ay+p->s;/*求總分數*/p=p->next;}returnay/N;/*返回平均值*/}doublefun(STREC*h)\r\n{\r\ndoubleav=0.0;\r\nSTREC*p-h->next;/*p直接指向“頭結點”的下一個結點,即第—個成績*/\r\nwhile(p!=NULL)\r\n{aY=ay+p->s;/*求總分數*/\r\np=p->next;\r\n}\r\nreturnay/N;/*返回平均值*/\r\n}解析:本題是關于鏈表問題,所以,一定要弄清表示出使指針變量p指向下一個“結點”的方法及表示結束的判斷,本題中,因為“頭結點”中沒有數值,所以程序中讓p直接指向“頭結點”的下一個結點,使用語句STREC*p=h->next,當然也可將p一開始就指向“頭結點”。

33.longfun(intn){inti;longs=0;for(i=2;i<=n-1;i++)/*從2~n-1中找n的所有因子*/if(n%i==0)s+=i*i;/*將所有因子求平方加*/returns;/將平方和返回*/}longfun(intn)\r\n{\r\ninti;\r\nlongs=0;\r\nfor(i=2;i<=n-1;i++)/*從2~n-1中找n的所有因子*/\r\nif(n%i==0)\r\ns+=i*i;/*將所有因子求平方加*/\r\nreturns;/將平方和返回*/\r\n}解析:本題的解題思路是用n逐個去除以2到n-1之間的所有數,如果n能被除盡,則把所得到的一個因子的平方累加到s中去。

34.voidfun(inta[3][3]intb[3][3]){intij;for(i=0;i<3;i++)for(j=0;j<3;j++)b[i][j]=a[i][j]+a[j][i];/*把矩陣a加上a的轉置存放在矩陣b中*/}voidfun(inta[3][3],intb[3][3])\r\n{\r\ninti,j;\r\nfor(i=0;i<3;i++)\r\nfor(j=0;j<3;j++)\r\nb[i][j]=a[i][j]+a[j][i];/*把矩陣a加上a的轉置,存放在矩陣b中*/\r\n}解析:在《線性代數》里面有矩陣轉置的概念,行列數相等的二維數組的轉置就是行列互換。即轉置后的第i行第j列正好對應原矩陣的第j行第i列。

若要將矩陣a轉置后還存入a中可用程序:

inti,j,t;

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

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

{t=a[i][j];a[i][j]=a[j][i];a[j][ii=t;}

注意第2個循環的初值。

若要將矩陣a轉置后存入c中:

inti,j;

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

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

c[i][j]=a[j][i];

注意數組c和a的下標。

35.A解析:本題考查'%'運算符的使用。運算符'%'要求兩個運算對象都為整型,其結果是整數除法的余數。本題中表達式ao%=(b%2)等價于a=a%o(b%2)=5%(7%2)=5%1=0。

36.D

37.C標識符的命名可以由字母、數字或下劃線組成,并且第1個字符必須為字母或下劃線,另外用戶標識符不能使用關鍵字。選項A中的Void可以定義為用戶標識符,因為C語言對大小寫敏感,Void與關鍵字void屬于不同的標識符;選項B中的scanf是庫函數名,屬于預定義標識符,它也可以作為用戶標識符使用,不過通常不建議這么使用;選項C中的int屬于關鍵字,錯誤;選項D符合標識符的命名規則,也不屬于關鍵字,可以作為標識符使用。本題答案為C選項。2021-2022學年廣東省珠海市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(12題)1.假設以行序為主序存儲二維數組array[100][100],設每個數據元素占2個存儲單元,基地址為10,下標從0開始,則元素array[5][5]的地址為()。

A.808B.818C.1010D.1020

2.若變量已正確定義為int型,要通過語句“scanf(“%d,%d,%d”,&a,&b,&c);”將a賦值為1、將b賦值為2、將c賦值為3,以下輸入形式中錯誤的是(注:□代表一個空格符)()。

A.1,2,3<Enter>

B.□□□1,2,3<Enter>

C.1,□□□2,□□□3<Enter>

D.1□2□3<Enter>

3.有以下程序:#include<stdio.h>main(){inta=-2,b=2;for(;++a&&--b;)printf(“%d,%d\n”,a,b);}程序運行后的輸出結果是()。

A.0,1B.0,0C.1,-1D.0,2

4.一個有7個頂點的完全三部圖,至少有存在幾條邊()

A.10B.11C.15D.16

5.有以下函數intfun(char*X,char*y){intn=0;while((*x===*y)*x!=\O){x++;y++;n++;}returnn;}函數的功能是()。A.查找X和y所指字符串中是否有\o

B.統計x和Y所指字符串中最前面連續相同的字符個數

C.將Y所指字符串賦給X所指定存儲空間

D.統計X和Y所指字符串中相同的字符個數

6.有以下程序:#include<stdiO.h>main(){FILE*fp;intk,n,i,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);fclose(fp);fp(i=0;i<3;i++)fscanf(fp,"%d%d",&k,&n);fclose(fp);printf("%d\n,%d\n,k,n);}程序運行后的輸出結果是()。A.1,2B.3,4C.5,6D.123,456

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

A.算法的執行效率與數據存儲結構無關

B.算法的空間復雜度是指算法程序中指令(或語句)的條數

C.算法的有窮性是指算法必須能在執行有限個步驟之后終止

D.以上3種描述都不對

8.以下能正確定義一維數組的選項是()。

A.inta[5]=(0,1,2,3,4,5);

B.chara[]={0,1,2,3,4,5);

C.chara={'A','B','C'};

D.inta[5]="0123";

9.對包含N個元素的散列表進行檢索,平均檢索長度________

A.為o(log2N)B.為o(N)C.不直接依賴于ND.上述三者都不是

10.下面程序的運行結果是______。#include<stdio.h>#include<string.h>fun(char*w,intn){chart,*s1,*s2;s1=w;s2=w+n-1;while(s1<s2){t=*s1++;*s1=*s2--;*s2=t;}}main(){char*p;p="1234567";fun(p,strlen(p));puts(p);}

A.7654321B.1714171C.1711717D.7177171

11.設棧S的初始狀態為空,6個元素入棧的順序為e1,e2,e3,e4,e5和e6。若出棧的順序是e2,e4,e3,e6,e5,el,則棧s的容量至少應該是()。

A.6B.4C.3D.2

12.以下敘述中正確的是()。

A.C語言比其他語言高級

B.C語言可以不用編譯就被計算機識別并執行

C.C語言以接近英語國家的自然語言和數學語言作為語言的表達形式

D.C語言出現最晚,具有其他語言的一切優點

二、2.填空題(12題)13.若有如下定義:

int[]={11,24,56,19,29,39),*t=s;

則不移動指針t,且通過指針t引用數組中值為29的元素的表達式是【】。

14.以下程序通過函數SunFun求。這里f(x)=x2+l,由F函數實現。請填空。

main()

{

printf("Thesum=%d\n",SunFun(10));

}

SunFun(intn)

{

intx,s=0;

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

S+=F(______);

returns;

}

F(intx)

{

return(______);

}

15.按“先進后出”原則組織數據的數據結構是[]。

16.設函數findbig已定義為求3個數中的最大值。以下程序將利用函數指針調用findbig函數。請填空。

main()

{

intfindbig(int,int,int);

int(*f)(),x,yz,z,big;

f=【】;

scanf("%d%d%d",&X,&y,&z);

big=(*f)(x,y,z);

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

}

17.執行以下程序的輸出結果是()。

#include<stdio.h>

#defineM5

#defineNM+M

main()

{intk;

k=N*N*5;printf(”%d\n",k);

}

18.若有定義:inta=6,b=8,c=14;接著順序執行下列語句后,變量c中的值是()。c=(b-=(a-5));a=(c%3)+(a=8);

19.在一個容量為32的循環隊列中,若頭指針front=3,尾指針rear=2,則該循環隊列中共有______個元素。

20.以下程序運行后的輸出結果是()。

#include<stdio.h>

main()

{inta=1,b=7;

do{

b=b/2;a+=b;

}while(b>1);

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

}

21.下面程序段的輸出結果是【】。

intx=5;

do{printf("%d",x-=4);

}while(!(--x));

22.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為【】。

23.關系模型的完整性規則是對關系的某種約束條件,包括實體完整性、______和自定義完整性。

24.表達式pow(2.8,sqrt(float(x)))值的數據類型為______型。

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

例如,當n=10,x=0.3時,函數值為1.349859。

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

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

26.請編寫函數fun(),它的功能是:判斷字符串是否是回文?若是,函數返回1,主函數中輸出:YES,否則返回0,主函數輸出NO。回文是指順讀和倒讀都一樣的字符串。

例如,字符串LEVEL是回文,而字符串12312就不是回文。

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

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

[試題源程序]

#include<stdio.h>

#defineN80

intfun(char*str)

{

}

main()

{

chars[N];

printf("Enterastring:")"gets(s);

printf("\n\n");puts(s);

if(fun(s))

printf("YES\n");

else

printf("NO\n");

NONO();

}

NONO()

{

/*請在此函數內打開文件,輸入測試數據,調用fun函數,輸出數據,關閉文件。*/

FILE*rf,*wf;

inti;chars[N];

rf=fopen("K:\\k06\\24010001\\in.dat","r");

wf=fopen("K:\\k06\\24010001\\out.dat","w");

for(i=0;i<10;i++){

fscanf(rf,"%s",s);

if(fun(S))

fprintf(wf,"%sYES\n",s);

else

fprintf(wf,"%sNO\n",s);

}

fclose(rf);

fclose(wf);

}

27.學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun(),它的功能是:函數返回指定學號的學生數據,指定的序號在主函數中輸入。若沒找到指定的學號,在結構體變量中給學號置空串,給成績置-1,作為函數值返回(用于字符串比較的函數是strcmp)。

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

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

試題程序:

#include<stdio.h>

#inctude<stdlib.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

STRECfun(STREC*a,char*b)

{

}

main()

{

STRECs[N]={{"GA005",85},{"GA003",76},

{"GA002",69},{"GA004",85},{"GA001",91},

{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},

{"GA014",91},{"GA011",77},{"GA017",64},

{"GA018",64},{"GA016",72}};

STRECh;

charre[10];

inti,n;

FILE*out;

printf("Theoriginaldata:\n");

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

{if(i%4==0)

printf("In");

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

printf("%s%3d",s[i]num,s[i]s);

}

printf("\n\nEnterthenumber:");

gets(m);

h=fun(s,m);

printf("Thedata:");

printf("\n%s%4d\n",h.num,h.s);

printf("\n");

out=fopen("out80.dat","w");

h=fun(s,"GA013");

fprintf(out,"%s%4d\n",h.num,h.s);

fclose(out);

}

28.請編寫函數fun(),該函數的功能是:計算n門課程的平均分,計算結果作為函數值返回。

例如x有5門課程的成績是90.5,72,80,61.5,55,則函數的值為71.80。

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

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

試題程序:

#include<stdio.h>

floatfun(float*a,intn)

{

}

main()

{

floatscore[30]=(90.5,72,80,61.5,55},

aver;

aver=fun(score,5);

printf("\nAveragescoreis:%5.2f

\n",aver);

}

29.請編寫函數fun(),該函數的功能是:移動一維數組中的內容,若數組中有n個整數,要求把下標從p~n-1(p<n-1)的數組元素平移到數組的前面。

例如,一維數組中的原始內容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,P的值為6。移動后,一維數組的內容應為7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。

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

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

[試題源程序]

#inciude<stdio.h>

#defineN80

voidfun(int*w,intp,intn)

{

}

main()

{

inta[N]=(i,2,3,4,5,6,7,8,9,10,11,12,13,14,15);

inti,P,n=15;

printf("Theoriginaldata:\n");

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

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

printf("\n\nEnterp:");

scanf("%d",&p);

fun(a,P,n);

printf("\nThedataaftermoving:\n");

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

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

printf("\n\n");

}

30.假定輸入的字符串中只包含字母和*號。請編寫函數fun(),它的功能是:只刪除字符串前導和尾部的*號,串中字母之間的*號都不刪除。形參n給出了字符串的K度,形參h給出了字符串中前導*號的個數,形參e給出了字符山中最后*號的個數。在編寫函數時,不得使用c語言提供的字符串函數。

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

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(char*a;intn,inth,inte)

{

}

main()

{

chars[81],*t,*f;

intm=0,tn=0,fn=0;

printf("Enterastring:\n");

gets(s);

t=f=s;

while(*t)

{t++;m++;}/*m為字符串的長度*/

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

while(*t=='*')

{t--;tn++;}

/*指針t指向最后一個字母,tn統計尾部'*'的個數*/

while(*f=='*')

{f++;fn++;}

/*指針f指向第一個字母,tn統計導'*'的個數*/

fun(s,m,fn,tn);

printf("Thestringafterdeleted:\n");

puts(s);

}

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

例如,若輸入ABC4efG,則應輸出aBc4efg。

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

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

}

32.N名學生的成績己在主函數中放入一個帶頭節點的鏈表結構中,h指向鏈表的頭節點。請編寫函數fun(),它的功能是:求出平均分,由函數值返回。

例如,若學生的成績是85,76,69,91,72,64,87,則平均分應當是78.625。

注童:部分源程序給出如下.

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

試題程序:

#include<stdlib.h>

#include<stdio.h>

#defineN8

structslist

{doubles;

structslist*next;

};

typedefstructslistSTREC;

doublefun(STREC*h)

{

}

STREC*creat(double*s)/*創建鏈表*/

{

STREC*h,*p,*q;

inti=0;

h=p=(STREC*)malloc(sizeof(STREC));

p->s=0;

while(i<N)

{q=(STREC*)malloc(sizeof(STREC));

q->s=sIi];i++;p->next=q;p=q;

}

p->next=0;

returnh;

}

outlist(STREC*h)

{

STREC*p;

p=h->next;

printf("head");

do

{printf("->%4.if",p->s);

p=p->next;/*輸出各成績*/

}

while(p!=0)

}

main()

{

doubles[N]={85,76,69,85,91,72,64,

87},ave;

STREC*h;

h=creat(s);

outlist(h);

ave=fun(h);

printf("ave=%6.3f\n",ave);

}

33.請編寫一個函數fun(),它的功能是計算并輸出給定整數n的所有因子(不包括1與自身)的平方和(規定n的值不大于100)。

例如:主函數從鍵盤給輸入n的值為56,則輸出為sum=1113。

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

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

試題程序:

#include<stdio.h>

longfun(intn)

{

}

main()

{

intn;

longsum;

printf("Inputn:");

scanf("%d",&n);

sum=fun(n);

printf("sum=%ld\n",sum);

}

34.請編寫函數fun(),該函數的功能是:實現B=A+A',即把矩陣A加上A的轉置,存放在矩陣B中。計算結果在main()函數中輸出。

例如,輸入下面矩陣:

123

456

789

其轉置矩陣為:

147

258

369

則程序輸出:

2610

61014

101418

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

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

試題程序:

#include<stdio.h>

#include<conio,h>

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

{

}

main()

{

inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},

t[3][3];

inti,j;

clrscr();

fun(a,t);

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

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

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

printf("\n");

}

}

四、單選題(0題)35.若有定義inta=5,b=7;,則表達式a%=(b%2)運算后,a的值為()。

A.0B.1C.11D.3

五、單選題(0題)36.如有inta=11;則表達式(a/1)的值是()。

A.0B.3C.4D.11

六、單選題(0題)37.以下不能定義為用戶標識符的是()。

A.VoidB.scanfC.intD._3com_

參考答案

1.C

2.D在輸入整數或實數這類數值型數據時,輸入數據之間必須用空格、回車符、制表符等間隔符隔開,間隔符個數不限。scanf的格式控制字符串也可以使用其他非空白字符,如本題中的逗號,但在輸入時必須輸入這些字符,以保證匹配,所以逗號必須輸入。故本題答案為D選項。

3.A在語句“for(;++a&&--b;)”中,for循環的表達式1和表達式3為缺省項。首先判斷條件表達式“b”。當“a=-2,b=2”時,第1次執行“++a”和“--b”,條件表達式為真,循環條件成立。第2次執行“++a”為0,由于運算符,當第1個條件為假時,不執行第2個條件,因此“b=1”,發生短路,“--b”不再執行。因此輸出的最終值為0,1。故本題答案為A選項。

4.B

5.B由題中while(*x==*y*x!=\\n)可知此函數是統計x和y所指向的字符串中最前面的聯系相同的字符的個數。

6.C此題是考查fprintf和fscanf,其中fprintf是向文件輸出,文件為da2.dat文件,fscanf是向文件輸入,所以根據程序循環寫入和寫出.可知答案為C。

7.C在程序設計中,算法執行效率與數據的存儲結構密切相關。算法的空間復雜度是指算法執行過程中所需存儲空間。

8.B數組1標從0開始,A選項中所賦值的個數超過了數組的長度;C選項中定義a為字符型變量,而不是數組,賦值錯誤;D選項中,整型數組不能賦字符串。

9.C

10.C

11.C

12.C解析:計算機語言分為低級語言和高級語言,C語言屬于高級語言,但并非比其他語言高級,選項A)錯誤;除了機器語言外,其他各種語言都必須編譯成能被計算機識別的機器代碼才能執行,選項B)錯誤;C語言出現于1972年至1973年,并不是出現最晚的語言,選項D)錯誤。

13.*(t+4)*(t+4)解析:本題定義了指針變量t,并用數組s的首地址給它賦初值。t+4代表數組第6個元素的地址,*(t+4)是取得該地址中的值即29,而此時并沒有移動指針t。

14.xX*X+1或1+x*xx\r\nX*X+1或1+x*x解析:題目中要求從x=0開始將f(x)的值累加起來,直到x=10。在SunFun()函數中用了一個for循環,每循環一次將f(x)累加到s中,所以在本題的第一個空格處我們應該填x,,然后x+1,共循環10次。F()函數的功能應該是求數學表達式f(x)得值,所以其返回值應該為x*x+1。

15.棧棧解析:棧和隊列都是—種特殊的操作受限的線性表,只允許在端點處進行插入和刪除。二者的區別是:棧只允許在表的—端進行插入或刪除操作,是—種“先進后出”的線性表;而隊列只允許在表的—端進行插入操作,在另—端進行刪除操作,是—種“先進先出”的線性表。

16.findbigfindbig解析:本題首先定義了一個指向函數的指針變量f,如果希望讓它指向某個函數,只需把函數名賦給該指針變量即可。所以本題的空白處應該填入函數名findbig。

17.5555解析:本題考查的重點是對宏定義的理解。#define指令定義一個標識符和一個串,編譯程序在對C源程序處理時.發現該標識符都用該串替換,因此,在語句k=N*N*5將替換成k=M+M*M+M*5后,M被替換成5,從而k=5+5*5+5*5=55。

18.77解析:本題考查基本賦值運算符和賦值表達式。c=(b-=a-5))等價于c=b-(a-5)b=7。c%3=1,a=(c%3)+a=8)=9,但c的值在第二條語句只能夠并沒有被改變,因此c的值還是7。

19.3131解析:設隊列容量為m,如果:rear>front,則隊列中元素個數為rear-front;如果rear<front,則隊列中元素個數為m+(rear-front)。本題rear<front,則m=32+(2-3)=31。

20.55解析:該程序考查do-while循環。循環共進行兩次。第一次循環b=3,a=4;第二次循環b=1,a=5。輸出a的值為5。

21.1-41-4解析:題目中首先讓x=5,然后進入do-while循環體,輸出x-4的值1,此時x為1,表達式!(--x)的值為!(0)為真(此時x變為0),所以再次執行循環體,輸出x-4的值-4,此時x為-4,表達式!(--x)的值為!(—5)為假,退出循環。故輸出結果是1-4。

22.88解析:fabs函數功能是求x的絕對值,計算結果為double型。pow功能是計算x的y次方的值,計算結果同樣為double型。所以本題表達式相當于2.0的3.0次方,結果為8.000000。

23.參照完整性參照完整性

24.floatfloat解析:在此表達式中x是float類型的變量,經過開方所得到的結果仍是float類型,再和2.8進行運算時,應該先將2.8轉換成float類型再運算,最后結果仍是float型。

25.

解析:該程序功能是計算并輸出多項式值。根據題干中給出的數列,首先推出每一項的表達式,然后再對多項式進行累加求和。

26.intfun(char*str){intin=0fg=1;char*p=str;while(*p){n++;P++;}for(i=0;i<n/2;i++)if(str[i]==str[n-1-i]);else{fg=0;break;}returnfg;}intfun(char*str)\r\n{\r\ninti,n=0,fg=1;\r\nchar*p=str;\r\nwhile(*p)\r\n{\r\nn++;\r\nP++;\r\n}\r\nfor(i=0;i<n/2;i++)\r\nif(str[i]==str[n-1-i]);\r\nelse\r\n{\r\nfg=0;\r\nbreak;\r\n}\r\nreturnfg;\r\n}解析:本題的設計思路是:(1)定義一個int型變量flag用做返回值,定義一個字符指針代替原串遍歷,求字符串的長度;(2)利用循

溫馨提示

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

評論

0/150

提交評論