2021年江蘇省常州市全國計算機等級考試C語言程序設計真題(含答案)_第1頁
2021年江蘇省常州市全國計算機等級考試C語言程序設計真題(含答案)_第2頁
2021年江蘇省常州市全國計算機等級考試C語言程序設計真題(含答案)_第3頁
2021年江蘇省常州市全國計算機等級考試C語言程序設計真題(含答案)_第4頁
2021年江蘇省常州市全國計算機等級考試C語言程序設計真題(含答案)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年江蘇省常州市全國計算機等級考試C語言程序設計真題(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.以下是正確的C語言實型常量的是()。

A..8e+8.B.e+8C.+8e.8D.+8.8e+8

3.設文件指針fp已定義,執(zhí)行語句“fP=foPen(“file”,“w”);”后,下列針對文本文件file操作敘述的選項中正確的是()。

A.只能寫,不能讀B.寫操作結束后可以從頭開始讀C.可以在原有內容后追加寫D.可以隨意讀和寫

4.

5.有下列程序:程序執(zhí)行后的輸出結果是()。

A.15,12,9,B.15,13,11,C.15,11,7,D.15,15,15,

6.下列關于棧的描述中錯誤的是()。A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

7.以下程序段中,與語句“k=a>b?(b>c?1:0):0;”功能相同的是()。

A.if((a>b)||(b>c))k=1;elsek=0;

B.if((a>b)&&(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b<=c)k=1;

D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;

8.若有定義:“inta=4,b=5;floatx=3.4,y=2.1;”,則下列表達式的值為()。(float)(a+b)/2+(int)x%(int)y;

A.5.5B.55C.5.500000D.55.00000

9.對含有16個元素的有序表進行二分查找,關鍵字比較次數最多是()

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

10.以下一維數組a正確的定義是()

A.inta(5)B.intn=5,a[n]C.inta[SZ]其中SZ為符號常量D.inta{5}

11.設有如下定義和語句:FILE*fp;intdata[10],i,n;fp=fopen(“abc.txt”,“r”);文本文件abc.txt中的數據為58192765190,其中第1個數據代表的是它后面數據的個數。若文件已正確打開,則以下程序段中能將文件的最后5個數據依次正確讀入數組data[0]~data[4]中的是()。

A.fscanf(fp,“%d”,&n);for(i=0;i<n;i++)fscanf(fp,“%d”,&data[i]);

B.i=0;while(!feof(fp)){fscanf(fp,“%d”,&data[i]);i++;}

C.for(i=0;!feof(fp);i++)fscanf(fp,“%d”,&data[i]);

D.i=0;fscanf(fp,“%d”,&n);i++;while(!feof(fp)){fscanf(fp,“%d”,&data[i]);i++;}

12.下列程序的輸出結果是()。#includedstdi0.h>#includedstring.h>voidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);}main{intk,a[5]={1,3,5,4,9};fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}A.13579B.48579C.48549D.48999

13.下列敘述中錯誤的是()。A.程序可以由多個程序文件組成

B.一個C語言程序只能實現一種算法.

C.程序可以由一個或多個函數組成

D.一個C函數可以單獨作為一個C程序文件存在

14.請讀程序:#include<stdio.h>main(){inta;floatb,c;scanf("%2d%3f%4f",&a,&b,&c);printf("\na=%d,b=%f,c=%f\n",a,b,c);}若運行時從鍵盤上輸入9876543210,則上面程序的輸出結果是______。

A.a=98,b=765,c=4321

B.a=10,b=432,c=8765

C.a=98,b=765.000000,c=4321.000000

D.a=98,b=765.0,c=4321.0

15.若用一個大小為6的數值來實現循環(huán)隊列,且當前rear和front的值分別為0和3,當從隊列中刪除一個元素,再加入兩個元素后,rear和front的值分別為()。

A.1和5B.2和4C.4和2D.5和1

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

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

17.以下描述中,不是線性表順序存儲結構特征的是()。

A.可隨機訪問B.需要連續(xù)的存儲空間C.不便于插入和刪除D.邏輯相鄰的數據物理位置上不相鄰

18.一個順序表的第一個元素的存儲地址是100,每個元素的長度為5,則第7個元素的地址是()。

A.130B.125C.120D.135

19.以下選項中,當x為大于1的奇數時,值為0的表達式是A.x%2==1B.x/2C.x%2!=0D.x%2==0

20.

二、2.填空題(20題)21.有以下程序

intfa(intx){returnx*x;}

intfb(intx){returnx*x*x;}

intf(ing(*f1)(),int(*f2)(),intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2),printf("%d\n",i);}

程序運行后,輸出結果是【】。

22.下面程序的運行結果是______。

#include<stdio.h>

intf(inta[],intn)

{if(n>1)

returna[0]+f(a+1,n-1);

else

returna[0];

}

main()

{intaa[10]={1,2,3,4,5,6,7,8,9,10},s;

s=f(aa+2,4);printf("%d\n",s);

}

23.以下fun函數的功能是:累加數組元素中的值,n為數組中元素的個數。累加的和值放入x所指的存儲單元中。補足所缺語句。

fun(intb[],intn,int*x)

{intk,r=0;

for(k=0;k<n;k++)r=【】;

【】=r;

}

24.請在以下程序第一行的下劃線處填寫適當內容,使程序能正確運行。

【】(double,double);

main()

{doublex,y;

scanf("%1f%1f",&x,&y);

printf("%1f\n",max(x,y));

}

doublemax(doublea,doubleB)

{return(a>b?a:b);}

25.當輸入的數據為2、5時,則下列程序的運行結果為【】。

#include<stdio.h>

#definemax100

main()

{

intf[max],i,j,k,m;

scanf("%d%d",&k,&m);

for(i=0;i<=m;i++)f[i]=0;

f[k-1]=1;

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

for(j=i-k;j<=i-1;j++)f[i]+=f[i];

printf("%d%10d%10d\n",k,m,f[m]);

getch();

}

26.對于一棵具有n個結點的樹,該樹中所有結點的度為【】。

27.fun函數的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大的數,再求這N個最大值中的最小的那個數作為函數值返回。請?zhí)羁铡?/p>

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

{

introw,col,max,min;

for(row=0;row<N;row++

{

for(max=a[row][0],col=1;col<N;col++)

if(【】)max=a[row][col];

if(row==0)min=max;

elseif(【】)min=max;

}

returnmin;

}

28.數據的邏輯結構有線性結構和______兩大類。

29.語句“int(*ptr)();”的含義是______是指向函數的指針,該函數返回一個血型數據。

30.下面程序的功能是:計算110之間的奇數之和與偶數之和,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta,b,c,I;

a=c=0;

for(I=0;I<=10;I+=2)

{a+=I;

【】;

c+=b;}

printf("偶數之和=%d\n",a);

printf("奇數之和=%d\n",c-11);}

31.在長度為n的有序線性表中進行二分查找。最壞的情況下,需要的比較次數為【】。

32.下面invert函數的功能是將一個字符串str的內容顛倒過來,請?zhí)羁铡?/p>

#include<string.h>

voidinvert(charstr[])

{inti,j,【】;

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;

}

}

33.以下程序的輸出結果是【】。

fun(intx,inty,intz)

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

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

34.數據結構分為邏輯結構與存儲結構,線性鏈表屬于【】。

35.設Y是int型變量,請寫出判斷Y為奇數的關系表達式【】。

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

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

38.下面程序的功能是將一個字符串str的內容倒序,請?zhí)羁铡?/p>

#inelude<stdio.h>

#include<strins.h>

main()

{inti,j,【】;

charstr[]={"1234567"};

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;}

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

}

39.下列程序的功能是計算數的階乘。

main()

{ihti,n;

nlongnp;

scanf("%d",&n);

np=【】;

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

【】;

printf("n=%dn!=%ld\n",n,np);

}

40.以下程序輸出的最后一個值是【】。

intff(intn)

{staticintf=1;

f=f*n;

returnf;

}

main()

{inti;

for(i=1;i<5;i++)printf("%d\n",ff(i));}

三、1.選擇題(20題)41.按通信距離劃分,計算機網絡可以分為局域網和廣域網。下列網絡中屬于局域網的是()

A.InternetB.CERNETC.NovellD.CHINANET

42.設a、b、c、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達式(m=a>b)&&(n=c>d)運算后,n的值為______。

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

43.在關系數據庫中,用來表示實體之間聯系的是

A.樹結構B.網結構C.線性表D.二維表

44.下列程序的輸出結果是()。

#include<stdio.h>

#defineF(x)2.84+x

#definew(y)printf("%d",(int(y))

#defineP(y)w(y)pmchar('\n'》

main()

{intx=2;

P(F(5)*x);

}

A.12B.13C.14D.16

45.若有定義int*p[3]:,則以下敘述中正確的是______。

A.定義了一個基類型為int的指針變量p,該變量有三個指針

B.定義了一個指針數組p,該數組含有三個元素,每個元素都是基類型為int的指針

C.定義了一個名為*p的整型數組,該數組含有三個int類型元素

D.定義了一個可指向一維數組的指針變量p,所指一維數組應具有三個int類型元素

46.以下能正確定義一維數組的選項是A.intnum[];

B.#defineN100intnum[N];

C.intnum[0..100];

D.intN=100;intnum[N];

47.已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正確判斷出kk中的值為大寫字母的表達式是

A.kk>='A'&&kk<='Z'

B.!(kk>='A'||kk<="Z")

C.(kk+32)>='a'&&(kk+32)<='Z'

D.isalpha(kk)&&(kk<91)

48.設有以下語句:chara=3,b=6,c;c=ab<<2;則c的二進制值是()。

A.11011B.10100C.11100D.11000

49.有下列程序:

fun(intx)

{intp;

if(x==0‖x==1)return(3);

p=x-fun(x-2);

returnp;

}

main()

{printf("%d\n",fun(7));}

執(zhí)行后的輸出結果是()。

A.7B.3C.2D.0

50.若已定義的函數有返回值,則以下關于該函數調用的敘述中錯誤的是A.函數調用可以作為獨立的語句存在

B.函數調用可以作為一個函數的實參

C.函數調用可以出現在表達式中

D.函數調用可以作為一個函數的形參

51.以下程序的輸出結果是______。main(){intnum=0;while(num<=2){num++;printf("%d\n",num);}}

D.1111222334

52.下列程序的輸出結果是()。#include<stdio.h>main(){inta=O,i;for(i=1;i<5;i++){swich(i){case0:case3:a+=1;case1:case2:a+=2;default:a+=3;}}printf("%d",a);}

A.19B.18C.6D.8

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

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

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

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

D.以上3種描述都不對

54.若有下面的說明和定義,則sizeof(structaa)的值是______。structaa{intr1;doubler2;floatr3;unionuu{charul[5];longu2[2]}ua;}mya;

A.30B.29C.24D.22

55.分析下列程序:#include<stdio.h>main(){int*p1,*p2,*p;inta=6,b=9;p1=&a;p2=&b;if(a<b){p=p1;p1=p2;p2=p;}printf("%d,%d",*p1,*p2);printf("%d,%d",a,b);}程序的輸出結果為()。

A.9,66,9B.6,99,6C.6,96,9D.9,69,6

56.當把以下四個表達式用作if語句的控制表達式時,有一個選項與其他三個選項含義不同,這個選項是______。A.k%2B.k%2==1C.(k%2)!=0D.!k%2==1

57.下圖

所示二叉樹的中序遍歷結果為()。

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

58.若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語句是()。

A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}

B.switch((int)x);{case1:printf("*\n");case2:printf("**\n");}

C.switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}

D.switch(a+b){case1:printf("*\n");casec:printf("**\n");}

59.下列字符序列中,不可用作C語言標識符的是______。

A.b70B.#abC._symbolD.al

60.下面程序段中,輸出*的個數是char*s="\ta\018bc";for(;*s!='\0';s++)printf("*");

A.9B.5C.6D.7

四、選擇題(20題)61.有以下程序(注:字符a的ASCIl碼值為97)}程序運行后的輸出結果是()。

A.789B.abcC.7890D.979899

62.有以下程序

#include<stdio.h>

intfun(int(*s)[4],intn,intk)

{intm,i;

m=s[0][k];

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

if(s[i][k]>m)m=s[i][k];

returnm;

}

main()

{inta[4][4]={{1,2,3,4},{11,12,13,14},{2l,22,23,24},{31,32,33,34}};

printf("%d\n",fun(a,4,0));

}

程序的運行結果是

A.4B.34

C.31D.32

63.

64.

65.算法的時間復雜度是指()。

A.算法所處理的數據量B.算法的執(zhí)行時間C.算法在執(zhí)行過程中所需要的基本運算次數D.算法程序中的語句或指令條數

66.

67.

68.有以下程序

main()

{intm=14,n=24;

printf("%d,%d",m++,++n);

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

}

程序運行后的輸出結果是

A.15252616B.14252515

C.14252516D.14252615

69.以下選項中正確的定義語句是()。

A.doublea;b;B.doublea=b=7;C.doublea=7,b=7;D.double,a,b;

70.

71.下列對于軟件測試的描述正確的是()。

A.軟件測試的主要目的是發(fā)現程序中的錯誤

B.軟件測試的目的是證明程序是否正確

C.軟件測試的目的是使程序運行結果正確

D.軟件測試是證明軟件中沒有錯誤

72.有以下程序段:

當執(zhí)行上述程序段,并從鍵盤輸入:nalne=LilinLim=1001<;回車>;后,name的值為()。

A.name:=Lilinum=1001B.nfll"ne=LiliC.Uli.h.um=D.Lili

73.設在C語言中,float類型數據占4個字節(jié),則double類型數據占()個字節(jié)。A.A.1B.2C.8D.4

74.有以下程序:

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

A.0B.3C.7D.8

75.下列選項中,能夠滿足“若字符串sl等于字符串s2,則執(zhí)行sT”要求的是()。

A.

B.

C.

76.

77.

78.以下選項中,合法的一組c語言數值常量是()。

A.12.0Xtl234.5e0

B.028.5e-3-0xf

C.1774el.50abe

D.0x8A10,0003.e5

79.下列描述錯誤的是()。

A.繼承分為多重繼承和單繼承

B.對象之間的通信靠傳遞消息來實現

C.在外面看不到對象的內部特征是基于對象的“模塊獨立性好”這個特征

D.類是具有共同屬性、共同方法的對象的集合

80.有以下程序程序輸出()。

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

五、程序改錯題(1題)81.下列給定程序中函數proc()的功能是計算1/n!的值。例如,給n輸入3,則輸出0.166667。請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.假定輸人的字符串中只包含字母和*號。請編寫函數proc,它的功能是:將字符串中的前導*號全部刪除,中間和后面的*號不刪除。例如,若字符串中的內容為****a*bc*def*g****,刪除后,字符串中的內容則應當是a*bc*def*g****。注意:部分源程序給出如下。請勿改動main函數和其他函數中的任何內容,僅在函數proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>voidproc(char*str){}voidmain{charstr[81];printf("Enterastring:kn");gets(str);proc(str);printf("Thestringafterdeleted:kn");puts(str);}

參考答案

1.B

2.DC語言中,實型常量有兩種表示形式:小數形式和指數形式。其中指數形式的一般形式為:尾數E(或e)整型指數。C語言規(guī)定,字母E或e之前必須要有數字,且E或e后面的指數必須是整數,所以選項A、B、C錯誤,選項D正確。故本題答案為D選項。

3.A以“w”方式打開文件時只能寫,不能讀。故本題答案為A選項。

4.D

5.A程序定義整型的全局變量a,初值為5,main函數定義整型局部變量a,初值為4。所以在main函數中,局部變量a屏蔽全局變量a。func函數中定義局部變量b,初值為5,定義靜態(tài)變量c,初值為5,并且在func函數中變量a引用的是全局變量a。綜上,我們使用a_a代表全局變量a,使用m_a代表main函數中局部變量a。main函數中,當k=0時,a_a=5,m_a=4,調用函數func(4),函數func中d的值為4,b的值為5,c的值為5,執(zhí)行表達式“a_a--;b--;--c;--d;”后,a_a的值為4,b的值為4,c的值為4,d的值為3,a+b+c+d的值為15,程序輸出15。當k=1時,a_a=4,m_a=3,調用函數func(3),函數func中d的值為3,b的值為5,c的值為4(靜態(tài)變量使用上一次調用結束時的值),執(zhí)行表達式“a_a--;b--;--c;--d;”后,a_a的值為3,b的值為4,c的值為3,d的值為2,a+b+c+d的值為12,程序輸出12。當k=2時,a_a=3,m_a=2,調用函數func(2),函數func中cl的值為2,b的值為5,c的值為3,執(zhí)行表達式“a_a--;b--;--c;--d;”后,a_a的值為2,b的值為4,c的值為2,d的值為1,a+b+c+d的值為9,程序輸出9。本題答案為A選項。

6.B棧是限定只能在表的一端進行插入和刪除操作的線性表,入棧和出棧都是在棧頂進行,它們的操作特點是先進后出,因此具有記憶作用。??梢圆捎庙樞虼鎯Γ部梢圆捎面準酱鎯?。

7.B條件表達式的含義是:如果表達式1成立,結果為表達式2的值,如果不成立,則為表達式3的值。在題干中,如果“a>b”且“b>c”,則k值為1;如果“a>b”且“b<c”,則k值為0;如果“a<b”,則k值為0。條件“a>b”與“b>c”中只要有一個條件不成立,k的值就為0。故本題答案為B選項。

8.C在計算(float)(a4-b)/2時,由于通過強制類型轉換將(a+b)轉換成了float型,所以應先將2轉換成float型,再進行計算,得4.500000。在計算(int)x%(int)y時,先將x和y通過強制類型轉換成int型,再進行求余運算,結果為1。又因為4.500000是float型,所以將1和它相加時,先將1換成float型,再計算,得到5.500000。類型轉換的一般規(guī)則是:低級類型從高級類型,并進行相應的轉換。數據類型的級別由低到高的排序表示為:char→int→unsigned→log→float→double。

9.C

10.C

11.A由題意可知,文件abc.txt中存放了6個整數。其中第1個表示后續(xù)數據的個數。要將最后5個數據讀入數組data中,需要讀取數據的個數為5,所以首先調用fscanf函數,將5讀入整型變量n中;接著通過for循環(huán),i分別取值0~n-1,調用fscanf函數將n個整數讀入data[0]~data[n-1]中。故本題答案為A選項。

12.C本題考查do-while循環(huán),在fun函數中,首先定義了靜態(tài)變量i=0,do-while循環(huán)要實現的功能是以b[0]=b[0]+b[1],b[1]=b[1]+b[2],其他元素不變的規(guī)則重新給b數組賦值。在主函數中,通過調用fun函數,按上面的規(guī)則對數組a重新賦值,最后輸出數組a。

13.B在一個C語言程序中可以進行多種算法的實現,對算法的個數沒有規(guī)定,所以B)錯誤。

14.C解析:scanf()把用戶從鍵盤錄入的數字的第1、2位存入整型變量a;把第3、4、5位存入單精度實型變量b,把第6、7、8、9位存入單精度實型變量c,用戶錄入的第10位被scanf()遺棄。這時變量a、b、c的值分別為:98、765.000000、4321.000000。

15.B

16.B

17.DD)【解析】線性表的順序存儲是用一片連續(xù)的空間來存放數據元素,其特點是邏輯上相鄰的元素在物理位置上也相鄰。數據元素之間邏輯上的先后關系自動隱含在物理位置的相鄰元素之中,因此不需要另外開辟空間來保存元素之間的關系。

18.A

19.D解析:因為x的值為大于1的奇數,所以x除以2的余數等于1,因此,選項A)、C)中表達式的結果為真,不為0;對于選項B)來說,x除以2的商不會等于0;選項D)中表達式的結果為假,即等于0。

20.C

21.44解析:在主函數中調用函數f,函數f有三個參數,形參f1與f2分別是兩個指向函數的指針。在f中執(zhí)行f2(x)-f1(x),實際上是執(zhí)行了fb()2)-fa(2),故執(zhí)行i=(fa,fb,2)卮i的值為23-22=4。

22.本題主要考查函數的嵌套調用和數組名作為實參。實際程序運行結果應為aa[2]+aa[3]+aa[4]+aa[5]=18。\r\n\r\n

23.r+b[k]或b[k]+r或r+*(b+k)或*(b+k)+r*xr+b[k]或b[k]+r或r+*(b+k)或*(b+k)+r\r\n*x

24.doublemax或externdoublemaxdoublemax或externdoublemax解析:本題中main()函數需要調用max()函數,在main()之前就需要聲明函數max(),并且可以用extern說明符使變量的作用域擴充到需要用到它的函數,所以,填寫doublemax(或externdoublemax)。

25.255

26.n-1n-1解析:設該樹中所有結點的度為x,因為,在樹的結點中,除了根結點以外,其余結點都有一個分支進入,所以,n=x+1,所以x=n-1。

27.a[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)max<min或min>max或max<=min或min>=maxa[row][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[row][col)\r\nmax<min或min>max或max<=min或min>=max解析:本題有兩層for循環(huán),主函數中定義了整型變量row、col、max和min,其中row用來存放外循環(huán)中的循環(huán)次數,col用來存放內循環(huán)中的次數,max記錄每行中的最大值,min記錄所有行中最大值中的最小值。在內循環(huán)中,首先給max賦初值為每行的第0列元素值,然后從第一列開始依次與max進行比較。如果大于max則將其值賦給max,當每一行循環(huán)結束,max記錄了每一行的最大值。所以第一個空應該填a[row][col]>max或a[row][col]>=max。退出內循環(huán),在第一次退出內循環(huán)時,將min賦初值為第0行的max,然后在每次退出內循環(huán)時,將min和每行的max比較,如果大于max,則將max值賦min,所以第二個空應該填max>min或mm>max,當退出外循環(huán)時,min為所有行中的最大值的最小值。

28.非線性結構非線性結構

29.ptrptr解析:本題考查函數指針的概念。函數指針的定義格式是:類型標識符(葉旨針變量名)()。注:“類型標識符”為函數返回值的類型。

30.b=I+1b=I+1解析:本題考查了for循環(huán)語句的執(zhí)行過程。i+=2是修正表達式,執(zhí)行一次循環(huán)體后i的值就增加2,i的初始值為0,每次加2后的和累加至a,所以a的值就是110之間的偶數之和;b的值是111之間的奇數和,但在輸出b值時,c去掉多加的11,即為110之間的奇數之和。

31.log2n

32.k-1k\r\n-1解析:本題通過定義一中間值k,實現字符串str內容的交換。

33.3131解析:在函數調用時,形參值和改變,不會改變實參的值。

34.存儲結構

35.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數可以用變量與2取模,判斷結果是為1或下為0。本題具體做法如下:Y%2=1或Y%2!=0。

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

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

38.k-1k-1解析:第一處應該是定義的某個變量,讀程序可知,變量k沒有定義,所以此處應填入k。字符串的倒序,就是將首尾對應的字符(數組元素)兩兩交換。可用兩個游標變量i和j分別代表前端元素的下標和后端元素的下標,交換以這兩個變量值為下標的元素str[i]和str[j]。開始時,i的值為0,j的值為字符串末元素的下標(字符串長度減1)。每次交換后,i增1,j減1。繼續(xù)交換的條件是str[i]仍然位于str[j]的前面,即i<j。字符串末元素的下標是它的長度減1,所以在第二處應填入-1。

39.1np*=i或np=np*i1\r\nnp*=i或np=np*i

40.120120解析:靜態(tài)變量的類型說明符是static,靜態(tài)局部變量屬于靜態(tài)存儲方式,它具有以下特點:

①靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內分配存儲單元。在程序整個運行期間都不釋放。

②對靜態(tài)局部變量是在編譯時賦被值的,即只賦被值一次,在程序運行時它已有被值。以后每次調用函數時不再重新賦初值而只是保留上次函數調用結束時的值。

③如在定義局部變量時不賦初值的話,則對靜態(tài)局部變量來說,編譯時自動賦初值0(對數值型變量)或空字符(對字符變量)。(注意:C語言中的非靜態(tài)變量在定義時,系統(tǒng)并不會自動給它賦被值)

④雖然靜態(tài)局部變量在函數調用結束后仍然存在,但其他函數是不能引用它的。

本題中函數的功能是:與for語句一起求一個整數的階乘。

41.C解析:在這四個選項中,只有Novell屬于局域網,Internet是計算機網絡中最大的網絡。CERNET和CHINANET都是廣域網。

42.A解析:C語言中比較表達式的運算結果為0或1。0代表不成立,1表示成立。

43.D解析:在關系模型中,把數據看成一個二維表,每一個二維表稱為一個關系。即關系模型是用表格數據來表示實體本身及其相互之間的聯系。本題的正確答案是D。

44.A解析:本題考查帶參數的宏的定義及相關運算。P(F(5)*x)=P(2.84+5*2)=P(12.84),調用w(12.84),輸出(int)(12.84)=12。

45.B解析:由于運算符[]優(yōu)先級比*高,int*p[3];相當于int*(p[3]);,表示數組p的三個元素都是指針變量,且每個元素都是基類型為int的指針。

46.B解析:選項A定義數組時省略了長度,而C語言中規(guī)定,只有在定義并同時進行初始化時,數組的長度才可以省略,數組的長度為初始化時候的成員個數,故選項A錯誤;在C語言中規(guī)定,數組的長度必須是一個整數或整型常量表達式,故選項C不正確:定義時數組的長度不能使用變量表示,故選項D不正確,所以,4個選項中選項B符合題意。

47.B解析:C語言的字符以其ASCII碼的形式存在,所以要確定某個字符是大寫字母,只要確定它的ASCII碼在“A”和“Z”之間就可以了,選項A和C符合要求。函數isalpha用來確定一個字符是否為字母,大寫字母的ASCII碼值的范圍為65-90,所以如果一個字母的ASCII碼小于91,那么就能確定它是大寫字母。

48.A解析:“<<”是C語言中規(guī)定的左移運算符,例如,a=a<<2,是將a的二進制數左移兩位,左移一位相當于該數乘以2,左移兩位相當于該數乘以2的2次方;“^”是異或運算符,所以,c的二進制值應為00011011。

49.C解析:因為在函數fun(intx)中,如果參數x等于0或1時,返回值3。否則p=x-fun(x-2)這是一個遞歸函數,所以在主函數調用fun(7)時,其過程為:“fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1))=7-(5-(3-3))=7-5=2”,所以最后的輸出結果為2。

50.D解析:本題考查函數的調用。在有參函數調用中,是將主調函數的實參值傳給被調函數的形參。按函數在程序中出現的位置來分,有以下三種函數調用形式:

①函數調用作為一條語句。例如:fun();這時不要求函數帶回值,只要求函數完成一定的操作。故選項A)正確。

②函數出現在表達式中,這種表達式稱為函數表達式。這時要求函數帶回一個確定的值以參加表達式的運算。例如:c=5*max(a,b);函數max是表達式的一部分,將其值乘以5后賦給c。故選項C)正確。

③函數調用作為一個函數的實參,例如:m=max(a,max(b,c));其中max(b,c)是一次函數調用,它的值作為max另一次調用的實參。故選項B)正確。

函數調用不可作為一個函數的形參,因為函數調用參數的數據傳遞是單向傳遞,即實參傳給形參,不能由形參傳給實參。故選項D)錯誤。

51.2解析:while的執(zhí)行過程是:先計算條件表達式的值,若成立則執(zhí)行循環(huán)體,重復上述過程,直到條件表達式的值為“假”(值為零)時,退出循環(huán),并轉下一語句去執(zhí)行。本題在輸出num的值為3之后,再判斷while的循環(huán)條件3<=2,不成立,所以不再輸出num的值,故本題的答案選B。

52.A解析:本題考查switch語句。當i=1時,執(zhí)行case1,因為沒有遇到break語句,所以依次往下運行,a=a+2=2,a=a+3=5;當i=2時,執(zhí)行case2,因為沒有遇到break語句,所以依次柱下運行,a=a+2=7,a=a+3=10:當i=3時,執(zhí)行case3,a=a+1=11,因為沒有遇到break語句,所以依次往下運行,a=a+2=13,a=a+3=16;當i=4時,執(zhí)行default,a=a+3=19,結束循環(huán)。

53.C解析:算法的執(zhí)行效率與數據的存儲結構密切相關。算法的空間復雜度是指算法執(zhí)行過程中所需的存儲空間。

54.D解析:結構體變量所占內存長度是各成員占的內存長度之和,每個成員分別占有自己的內存單元;共用伸變量所占的內存長度等于最長的成員的長度。結構件變量aa中,成員r1占2個字節(jié),r2占8個字節(jié),r3占4個字節(jié),共用體ua占8個字節(jié),所以共占用2+8+4+8=22個字節(jié)。

55.A解析:通過p1=&a,p2=&b分別將a、b的地址賦給指針p1、p2,接著執(zhí)行if語句,發(fā)現a<b成立,則通過交換p1、p2的值,即交換a、b所在存儲單元的地址,但是a、b的值并沒有發(fā)生變化。

56.D解析:本題考查的是判斷奇偶數。選項A、B和c中都是當k是奇數時表達式的值為1,否則為0。而選項D中因為邏輯非!運算符的優(yōu)先級最高,所以當k為0的時候,k的值為1,整個表達式的值也就是1,而當k為非。的時候!k的值為0,整個表達式的值為0。所以本題應該選擇D。

57.B解析:中序遍歷首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹,并且在遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結點,最后遍歷右子樹。

58.C解析:switch后的括號中只能是整型或字符型表達式,選項A中使用的是浮點型變量x,故不正確。選項B在switch的括號后面多了一個分號,故也不正確。switch的case標號后只能是常量或常量表達式,而不能是變量,所以選項D也不正確。故應該選擇C。

59.B

60.C解析:本題中,格式符。表示的是八進制無符號形式輸出整型數(不帶前導0),字符常量在內存中占一個字節(jié),存放的是ACSII碼代碼值。C語言規(guī)定,所有字符常量都作為整型量來處理,在計算機內部,其對應的整數值就是ACSII字符集中該字符的序號,即&*s中有幾個字符就輸出幾個*。

61.A因為小寫字符a,b,c的ASCIl碼的值分別為97,98,99,而在d0…while循環(huán)語句中,每次對字符的ASCIl碼的值取余數并輸出,所以分別輸出7,8,9,選項A)正確。

62.C本題考查的重點還是二維數組的操作。題目將二維數組與函數相結合,考查了函數對二維數組的調用。程序主體分為兩個部分:主函數main和函數fun。main函數結構較簡單,功能很明確,首先初始化了一個二維數組,隨后將fun(a,4,0)作為printf函數的實參輸出。下面分析一下fun函數的作用,fun函數包括三個形參,其中一個形參為用指針定義的二維數組,另外兩個為整型常量n和k。在fun函數中,先定義了一個整型變量m=s[0][k],表示m為s中第1行第k+1列的數據。下面的for循環(huán)是題目的關鍵,該for循環(huán)的意義是令m為數組s中k+1列從第1行到第n行的數據中最大

溫馨提示

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

評論

0/150

提交評論