2021年貴州省遵義市全國計算機等級考試C語言程序設計_第1頁
2021年貴州省遵義市全國計算機等級考試C語言程序設計_第2頁
2021年貴州省遵義市全國計算機等級考試C語言程序設計_第3頁
2021年貴州省遵義市全國計算機等級考試C語言程序設計_第4頁
2021年貴州省遵義市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩103頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年貴州省遵義市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.如果最常用的操作是取第i個結點及其前驅,則采用()存儲方式最節(jié)省時間。A.單鏈表B.雙鏈表C.單循環(huán)鏈表D.順序表

2.有以下程序

#include<stdio.h>

main()

{intx=1,y=2,z=3;

if(x>y)

if(y<z)printf("%d",++z);

elseprintf("%d",++y);

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

}

程序的運行結果是

A.A.331

B.41

C.2

D.1

3.以下關于鏈式存儲結構說法錯誤的是()

A.比順序存儲結構的存儲密度小

B.每個節(jié)點是由數據域和指針域組成

C.查找結點時鏈式存儲比順序存儲快

D.邏輯上不相鄰的節(jié)點物理上可能相鄰

4.有以下程序:#include<stdio.h>main(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i*j;}}printf(“m=%d\n”,m);}程序運行后的輸出結果是()A.m=4B.m=2C.m=6D.m=5

5.在Internet中,域名服務器的主要功能是實現()的轉換。

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

6.在多媒體計算機系統(tǒng)中,不能用以存儲多媒體信息的是A.光纜B.軟盤C.硬盤D.光盤

7.在下列運算符中,優(yōu)先級最低的是()。A.||B.!=C.<D.+

8.

9.以下選項中敘述錯誤的是()。

A.C程序函數中定義的賦有初值的靜態(tài)變量,每調用一次函數,賦一次初值

B.在同一函數中,各復合語句內可以定義變量,其作用域僅限本復合語句內

C.C程序函數中定義的自動變量,系統(tǒng)不自動賦確定的初值

D.C程序函數的性能不可以說明為static型變量

10.C語言提供的合法的數據類型關鍵字是()。

A.DoubleB.shortC.integerD.Char

11.以下函數調用語句中含有實參個數為().func((exp1,exp2),(exp3,exp4,exp5));

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

12.下列選項中,不屬于數據管理員(DBA.職責的是()。

A.數據庫維護B.數據庫設計C.改善系統(tǒng)性能,提高系統(tǒng)效率D.數據類型轉換

13.設有100個元素,用折半查找法進行查找時,最大比較次數是_____。

A.25B.50C.10D.7

14.直接選擇排序的時間復雜度為()。(n為元素個數)

A.O(n)B.O(log2n)C.O(nlog2n)D.O(n2)

15.依次讀入數據元素序列{a,b,c,d,e,f,g}進棧,每進一個元素,機器可要求下一個元素進?;驈棗?,如此進行,則??諘r彈出的元素構成的序列是以下哪些序列?

A.{d,e,c,f,b,g,a}

B.{f,e,g,d,a,c,b}

C.{e,f,d,g,b,c,a}

D.{c,d,b,e,f,a,g}

16.當c的值不為0時,在下列選項中不能正確將c的值賦給變量a、b的是()。

A.c=b=a;B.(a=c)||(b=c)C.(a=c)&&(b=c);D.a=c=b;

17.有以下程序:main{chara=a,b;printf("%c,",++a);printf("%c\n",b=a++):)程序運行后的輸出結果是()。A.b,bB.b,cC.a,bD.a,c

18.程序中主函數的名字為()。

A.mainB.MAINC.MainD.任意標識符

19.

20.程序中已構成如下不帶頭節(jié)點的單向鏈表結構,指針變量s、p、q均已正確定義,并用于指向鏈表節(jié)點,指針變量s總是作為指針指向鏈表的第1個節(jié)點。若有以下程序段:q=s;s=s->next;p=s;while(p->next)p=p->next;p->next=q;q->next=NULL;該程序段實現的功能是()。

A.刪除尾節(jié)點B.使尾節(jié)點成為首節(jié)點C.刪除首節(jié)點D.使首節(jié)點成為尾節(jié)點

二、2.填空題(20題)21.下面程序的輸出是【】。

main()

{intarr[10],i,k=0;

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

arr[i]=i;

fov(i=1;i<4;i++)

k+=arr[i]+i;

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

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

longfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

printf("%1d\n",x);}

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

main()

{inti,sum;

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

sum+=i;

printf("%d",sum);

}

24.注釋一般分為序言性注釋和______注釋。

25.設C語言中,一個int型數據在內存中占兩個字節(jié),則int型數據的取值范圍為【】。

26.以下程序的功能是根據輸入的“y”(“Y”)與“n”(“N”),在屏幕上分別顯示出“ThisisYES.”與“ThisNO.”??瞻滋幮枰钊氲膬热菔?/p>

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case'y':

case'Y':printf("\nThisisYES,\n");

case'n':

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

main()

{charch;

printf("\nEnterachar'y','Y'or'n','N':");

ch=【】;

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

YesNo(ch);}

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

main()

{

intp=30;

printf("%d\n",(p/3>0?p/10:p%3));

}

28.以下函數用來求出數組的最大元素在數組中的下標并存放在k所指的存儲單元中。請?zhí)羁铡?/p>

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

【】

if(s[*k]<s[i])*k=i;

return【】;}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777},k;

clrscr();

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);}

29.若fp已正確定義為一個文件指針,d1.dat為二進制文件,請?zhí)羁?,以便為“讀”而打開此文件:

fp=fopen(【】);。

30.在scanf()函數調用語句中,可以在格式字符和%號之間加上一個星號,它的作用是跳過對應的輸入數據;當輸入以下數據時,100200300400500<回車>,下面語句的執(zhí)行結果為【】。

main()

{inta,b,C;

scanf("%d%*d%d%d",&a,&b,&c);

printf("%d%d%d",a,b,c);}

31.數據的【】結構在計算機存儲空間中的存放形式稱為數據的存儲結構或物理結構。

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

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

main()

{inti=10,j=0;

do

{j=j+i;i-;}

while(i>2);

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

}

34.下列程序的運行結果是______。

main()

{inti,a[10];

a[0]=a[1]=1;

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

a[i]=a[i-2]+a[i-1];

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

{if(i%2==0)printf("\n");

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

}

}

35.以下程序的輸出結果是()。main(){char*p[]={"ABC","DEF","GHI","JKL"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);}

36.以下程序運行后的輸出結果是______。

main()

{chara[]="Language",b[]="Programe";

char*p1,*p2;

intk;

p1=a;p2=b;

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

if(*(p1+k)==*(p2+k))printf("%c,*(p1+k));

}

37.一個模塊直接調用的其他模塊的模塊個數稱為______。

38.\13'在內存中占1個字節(jié),"\12"在內存中占______個字節(jié)。

39.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;

}

40.以下程序中,for循環(huán)體執(zhí)行的次數是______。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{

inti;

for(i-1;i<K;i++)

{...}

...

}

三、1.選擇題(20題)41.有以下程序

fun(intx)

{intp;

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

p=x-fun(x-2);

returnp;

}

main()

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

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

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

42.下面能正確進行字符串賦值操作的語句是()

A.chars[5]={"ABCDE"}

B.chars[5]={'A','B','C','D','E'};

C.char*s;s="APCDEF"

D.char*s;scanf("%s",s);

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

A.局部變量說明為static存儲類,其生存期將得到延長

B.全局變量說明為static存儲類,其作用域將被擴大

C.任何存儲類的變量在未賦初值時,其值都是不確定的

D.形參可以使用的存儲類說明符與局部變量完全相同

44.已定義c為字符型變量,則下列語句中正確的是()。

A.c='97'B.c="97"C.c=97D.c="a"

45.下列選項中不合法的十六進制數是()。

A.OxffB.OXllC.OxlgD.OXabc

46.下列正確的實型常量是()。

A.E3.4B.-12345C.2.2e0.8D.4

47.字長為16位的計算機是指______。

A.該計算機能夠處理的最大數不超過16

B.該計算機中的CPU可以同時處理16位的二進制信息

C.該計算機的內存量為16MB

D.該計算機每秒鐘所能執(zhí)行的指令條數為16MIPS

48.下面程序main(){intx=32;printf("%d\n",x=x<<1);}的輸出是______。

A.100B.160C.120D.64

49.假定在一棵二叉樹中,雙分支結點數為15個,單分支結點數為32個,則葉結點數為______個。

A.15B.16C.17D.47

50.在C語言中,函數的隱含存儲類別是______。

A.autoB.staticC.externD.無存儲類別

51.在C語言中,只有在使用時才占用內存單元的變量,其存儲類型是()。

A.auto和register

B.extern和register

C.auto和static

D.static和register

52.以下敘述中正確的是______。

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

B.C語言可以不用編譯就能被計算機識別執(zhí)行

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

D.C語言出現的最晚,具有其他語言的一切優(yōu)點

53.在數據管理技術的發(fā)展過程中,經歷了人工管理階段、文件系統(tǒng)階段和數據庫系統(tǒng)階段。其中數據獨立性最高的階段是()。

A.數據庫系統(tǒng)B.文件系統(tǒng)C.人工管理D.數據項管理

54.從未排序序列中依次取出元素與已排序序列中的元素作比較,將取出的元素放入已排序序列中的正確位置上,此方法稱為______。

A.歸并排序B.選擇排序C.交換排序D.插入排序

55.設有以下定義:char*st="howareyou";下列程序段中正確的是______。

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;srtcpy(p=&a[1],st+2);

56.若有定義: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");}

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

A.軟件交付使用后還需要進行維護

B.軟件一旦交付使用就不需要再進行維護

C.軟件交付使用后其生命周期就結束

D.軟件維護是指修復程序中被破壞的指令

58.下面程序段的運行結果是

charstr[]="ABC",*p=str;

printf("%d\n",*(p+3));

A.67B.0C.字符′C′的地址D.字符′C′

59.在下列選項中,沒有構成死循環(huán)的是()。

A.inti=100;while(1){i==i0+1;if(i>100)break;}

B.for(;;);

C.intk=10000;do{k++;}while(k>10000);

D.ints=36;while(s)--s;

60.請讀程序片段(字符串內沒有空格字符):printf("%d\n",stlen("ATS\n012\1\\”));上面程序片段的輸出結果是()

A.11B.10C.9D.8

四、選擇題(20題)61.有以下程序

62.

有以下程序:

#include<stdio.1l>

voidWriteStr(char*fn.char*str)

{FILE*fp;

fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}

main

{WriteStr("tl.dat","start");

WriteStr("t1.dat","end");)

程序運行后,文件t1.dat中的內容是()。

A.startB.endC.startendD.endrt

63.

有以下程序:

#include<strintg.h>

main

{charp[20]={a,b,c,d),q[]="abc",r[]="

abcde";

strcpy(p+strlen(q),r);strcat(p,q);

printf("%d%d\n",sizeof(p),strlen(p));

}

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

A.209B.99C.2011D.1111

64.

65.

66.

67.

68.

69.有以下程序:

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

A.02356B.0235C.235D.2356

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

main

{inta,b,d=25;

a=d/10%9;

b=a&&(-1);

printf("%d,%d\n",a,b);}A.A.6,1B.2,1C.6,0D.2,0

71.

72.

73.下面程序的輸出結果是

main

{

intx=3,y=6,a=0;

while(x++!=(y-=1))

{

a+=1;

if(y<x)

break;

}

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

}

A.x=4,y=4,a=1B.x=5,y=5,a=1

C.x=5,y=4,a=1D.x=5,y=4,a=3

74.

75.下列選項中屬于軟件生命周期中開發(fā)階段任務的是()。

A.詳細設計B.運行維護C.可行性研究D.需求分析

76.

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

char*p1="abcd",*p2="ABCD",str[50]="xyz";

strcpy(str+2,strcat(p1+2,p2+1));

printf("%s",str);

A.xyabcABB.abcABzC.ABabczD.xycdBCD

78.有下列函數定義:fun(floath){printf("%f,%f\n",h,h*h);)該函數的類型是()。A.int類型B.float類型C.void類型D.函數無類型說明,定義有錯

79.

80.

五、程序改錯題(1題)81.下列給定的程序中,函數proc()的功能是:為一個偶數尋找兩個素數,這兩個素數之和等于該偶數,并將這兩個素數通過形參指針傳回主函數。

請修改函數proc()中的錯誤,使它能得出正確的結果。

注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。

試題程序:

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數fun(),其功能是將一個數字字符串轉換成一個整數(不得調用C語言提供的將字符串轉換成整數的函數)。例如,若輸入字符串“-1234”,則函數把它轉換成整數值-1234。注意:部分源程序給出如下。請勿改動主函數main()和其他函數中的任何內容,僅在函數fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<string.h>longfun(char*p){}voidmain(){ chars[6]; longn; printf(“Enterastring:\n”); gets(s); n=fun(s); printf(“%ld\n”,n);}

參考答案

1.D

2.D本題考查if-else語句的使用。if-else語句可以在條件為“真”或為“假”時執(zhí)行指定的動作,由if引導條件為“真”時執(zhí)行的操作;由else引導條件為“假”時執(zhí)行的操作。else語句要與上面最近的if語句進行匹配,如果要嵌套調用if-else語句,需要將嵌套部分用{}括起來,避免程序報錯。題目中給出了一個if語句和一個if-else語句,if-else語句為第一個if語句的子語句。首先執(zhí)行外層if語句,執(zhí)行條件為x>y,由于x=1,y=2,故該條件為假,不執(zhí)行if的子語句,直接執(zhí)行語句printf("%d\\n",x++);,該語句先輸出x的值,然后進行x++操作。x的初始值為1,輸出結果為1。

3.C

4.C第一次外循環(huán)的值為1,第一次內循環(huán)j的值為3,不滿足條件執(zhí)行m*=i*j即m的值為3;第二次j的值為2。不滿足條件執(zhí)行m*=i*j,即的值為6;第三次j的值為1,不滿足條件執(zhí)行m*=i*j,即m的值仍為6。第二次外循環(huán)的值2,j的值為3,滿足條件執(zhí)行break語句跳出循環(huán)。

5.B在Internet中,把域名翻譯為IP地址的軟件稱為域名系統(tǒng)DNS,運行域名系統(tǒng)的主機稱為域名服務器。域名服務器的主要功能是實現入網主機名字和IP地址的轉換。

6.A解析:光纜是傳輸多媒體信息的通道,不能用以存儲多媒體信息。

7.A

8.A

9.A靜態(tài)變量不是每調用一次就賦一次初值,而是將需要定義許多相同的具有相同屬性的值時,使用靜態(tài)變量來節(jié)省空間,所以A選項錯誤。

10.Bdouble,char,int,第一個字母都是小寫。

11.B

12.DD)【解析】數據庫管理員(DataBaseAdministrator,DBA)是指對數據庫的規(guī)劃、設計、維護、監(jiān)視等的人員,其主要工作如下:數據庫設計。DBA的主要任務之一是數據庫設計,具體地說是進行數據模式的設計;數據庫維護。DBA必須對數據庫中的數據安全性、完整性、并發(fā)控制及系統(tǒng)恢復、數據定期轉儲等進行實施與維護;改善系統(tǒng)性能,提高系統(tǒng)效率。DBA必須隨時監(jiān)視數據庫的運行狀態(tài),不斷調整內部結構,使系統(tǒng)保持最佳狀態(tài)與效率。

13.D

14.D

15.A

16.C選項A是先將a的值賦給變量b,再將變量b的值賦給變量c,不合題意;B選項中由于c的值不為0,在將c的值賦給變量a后,表達式a=c的值為1,不再對表達式b=c計算;對于c選項,表達式a=c的值為1,再求表達式b=c的值為1,然后進行邏輯與運算;D選項將b的值賦給c后再賦給e,故選擇C選項。

17.A++a與a++的區(qū)別是前者先自加再運算,后者是先運算后自加。

18.A

19.B

20.D程序中,指針s指向了它的下一個節(jié)點。題目中說明了s總是指向鏈表的第1個節(jié)點。然后while循環(huán)找到鏈表的最后一個元素,最后一個元素指向了之前鏈表的頭節(jié)點,之前頭節(jié)點指向了空節(jié)點。所以本題實現的是使首節(jié)點成為尾節(jié)點。故本題答案為D選項。

21.1212解析:本題通過第一個for循環(huán)將數組arr[0]=arr[9]分別賦值為0-9,通過第二個for循環(huán)的三次循環(huán)累加,求出結果為12,具體分析如下:

i=1:k=0+arr[1]+1即k=2;

i=2:k=2+arr[2]+2即k=6;

i=3:k=6+arr[3]+3即k=12:

22.考查ifelse語句,n=4不滿足條件,所以fun5(4)=4+fun5(3),n==3也不滿足條件,fun5(3)=3+fun5(2),n==2滿足條件fun5(2)=2,故x=4+3+2=9。\r\n\r\n

23.無定值無定值解析:for(i=1;i<7;i++)決定了循環(huán)次數為6次,每次執(zhí)行的操作是sum+=i,但由于sum沒有初始化,并不知道sum的初值是多少,所以結果無定值。

24.功能性功能性解析:注釋一般分為序言性注釋和功能性注釋。序言性注釋通常位于每個程序的開頭部分,給出程序的整體說明;功能性注釋一般嵌在源程序體之中,主要描述其后的語句或程序做什么,

25.-32768~32767

26.getchargetchar解析:題中要求根據輸入的字符調用函數YesNo來判斷輸入的字符是y(Y)還是n(N),字符的輸入可用字符輸入函數getchar。函數YesNo用來判斷一個字符是y(Y)還是n(N),主要用了一個switch多分支結構來比較輸入字符與字符'y','Y'、,'n','N'是否相等來實現的。注意:用于字符串處理的函數。

27.33解析:條件表達式的一般形式為;表達式1?表達式2:表達式3條件運算符的執(zhí)行順序:先求解表達式1,若為非0(真)則求解表達式2,此時表達式2的值就作為整個條件表達式的值;若表達式1的值為0(假),則求解表達式3,表達式3的值就是整個條件表達式的值。30/3=10>0,所以執(zhí)行p/10,結果為3。

28.for(i=0;i<t;i++)0for(i=0;i<t;i++)\r\n0解析:本題中直接使用指針變量k,但在使用時要注意對k的指針運算,此外,一開始應使*k的值為數組中的某一下標值,即*k=0。

29.d1.dat"rb"d1.dat,'rb'解析:打開文件的函數為fopen('文件名','mode'),其中'mode'表示文件的打開方式。如果打開的是二進制文件,其mode字符串可以是:'rb'、'wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只讀方式打開。'w'表示以寫方式打開,如果已存在該文件名的文件,文件中的內容將被清空。若文件名不存在,則將創(chuàng)建該文件。'a'為追加方式打開。若文件存在時,將打開這個文件并且在文件的末尾進行追加。當文件不存在,將創(chuàng)建新文件。'r+'打開一個已存在文件用于更新(可讀可寫)。\'w+'創(chuàng)建一個新文件用于更新,如果文件存在,文件被重寫(可讀可寫)。'a+'打開用于追加,當文件不存在時,創(chuàng)建新文件,并在文件末尾進行追加(可讀可寫)。根據題意,應該填'd1.dat','rb'。

30.100300400100300400解析:scanf的格式控制字符串中,“*”表示跳過對應的輸入數據,所以第二個輸入數200被跳過去了,只有100,300,400三個數被從鍵盤輸入了進來。

31.邏輯邏輯解析:數據的邏輯結構在計算機存儲空間中的存放形式稱為數據的存儲結構或物理結構。

32.3535解析:考查swap()函數。函數swap(int*a,int*b)的功能是實現*a和*b中兩個數據的交換,在主函數中調用swap(p,q)后,參形指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結果為35。

33.5252解析:do...while語句的形式為:

do

{

語句;

}while(條件表達式)

當條件表達式為非零時,繼續(xù)執(zhí)行循環(huán)體,直到條件表達式為零時退出循環(huán)。

34.11<CR>23<CR>5(<CR代表換行)11<CR>23<CR>5(<CR,代表換行)解析:本題通過語句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”將數組中前面兩項的和賦值給數組當前元素,得到a的值應為(1,1,2,3,5)。語句if(i%2==0)pfintf('\\n')是要將數組中的元素以每行2個的形式輸出。

35.JD

36.gae

37.扇出扇出解析:在結構圖中,調用一個給定模塊的模塊個數稱為扇入,一個模塊直接調用的其他模塊個數稱為扇出。

38.22解析:'\\13':表示八進制數13表示的ASCII字符,是一個字符,占一個字節(jié);而”\\12”是個字符串,除了八進制數12表示的ASCII字符占一個字節(jié)外,還有在字符串的末尾加上串結束標志“'\\0'”,所以共有2個字節(jié)。

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

40.44解析:將程序中所有的宏替換掉可得:M=2+1,K=2+1*2+1/2=4,所以for循環(huán)共循環(huán)了K-1+1次,即4-1+1共4次。

41.C解析:因為fun(intx)是一個遞歸函數,所以主函數中fun(7)經過三次遞歸調用,其過程可以描述為'fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2',所以最后的輸出結果為2。

42.C

43.A解析:局部變量在執(zhí)行到它所在的程序塊時產生,執(zhí)行完時被摧毀,而靜態(tài)局部變量的生存期將一直延長到程序運行結束,故選項A正確;全局變量的只有一種靜態(tài)存儲類別,故全局變量說明為static存儲類,和沒有說明為static存儲類其生存期都是一直延長到程序運行結束,故選項B不正確:未賦初值的局部變量的初值是隨機的,故選項C不正確;形參只能是一般局部變量,不能使用任何存儲類說明符,故選項D不正確。所以,4個選項中選項A符合題意。

44.C解析:本題考核的知識點是字符型變量的基本概念。用單引號括起來的一個字符稱為字符常量,而選項B和選項D中用的是雙引號,而用雙引號括起來的字符為字符串常量,故選項B和選項D不正確。因為在C語言中,字符常量在存儲時,并不是把該字符本身放到內存單元中去,而是將該字符的相應的ASCII代碼放到存儲單元中,所以C語言使字符型數據和整形數據之間可以通用,選項C正確.而選項A中,給字符型變量賦值時只能賦一個字符,而9,7作為字符時為兩個字符且必須分別為單引號括起來,故選項A不正確,所以,4個選項中選項C符合題意。

45.C解析:十六進制是以“0x”或“0X”開頭的字符串,字符串中只能含有0~9這10個數字和a、b、c、d、e、f這6個字母。

46.B解析:實型常量有兩種書寫形式。①小數形式,它由符號、整數部分、小數點及小數部分組成;②指數形式,由十進制小數形式加上指數部分組成,其形式為:十進制小數e指數或十進制小數E指數。

注:e或E后面的指數必須是整數,并且在e或E的前面必須有數字。本題中,選項A)中E的前面沒有數字,因此錯誤。選項C)中0.8不是整數,因此錯誤。選項D)中4是整型常量而不是實型常量。

47.B解析:字長是指CPU可以同時處理二進制的位數,是由CPU的型號和類型決定的。

48.D解析:<<是C語言中規(guī)定的左移運算符,例如,a=a<<2,這個語句即是將a的二進制數左移兩位,左移一位相當于該數乘于2,左移兩位相當于該數乘以2的2次方。所以,x<<1=32*2=64。

49.B

50.C解析:C語言規(guī)定,只要在定義函數時不進行存儲類型的顯式說明,函數的存儲類型就隱含為外部類型,即extern型,外部類型允許其他文件中的函數調用。

51.A解析:在C語言中,動態(tài)存儲區(qū)域中存放的變量在使用時才分配內存空間,函數調用時返回的地址和自動類局部變量等存放在動態(tài)存儲區(qū)域中。auto變量和register變量都屬于自動類局部變量,因此選項A正確。static說明的變量為靜態(tài)變量,靜態(tài)變量在內存的靜態(tài)存儲中占據著永久的存儲單元,直至程序運行結束。extern說明的變量為外部變量,屬于全局變量,全局變量在整個程序運行期間都占用內存空間。

52.C解析:計算機語言分為低級語言、匯編語言和高級語言,C語言屬于高級語言,但并不是說C語言比其他語言高級,所以選項A錯誤;除了低級語言外,其他各種語言都必須編譯成能被計算機識別的二進制數才能執(zhí)行,選項B錯誤;C語言出現在1972年到1973年間,并不是出現最晚的語言,所以選項D也是錯誤的。

53.A在數據管理技術的發(fā)展過程中,經歷了人工管理階段、文件系統(tǒng)階段和數據庫系統(tǒng)階段。其中數據獨立性最高的階段是數據庫系統(tǒng)這一階段。數據庫系統(tǒng)階段用數據模型來表示復雜的數據,有較高的數據獨立性。數據庫系統(tǒng)為用戶提供了方便的用戶接口,用戶既可使用查詢語言或終端命令操作數據庫,也可以用程序方式來操作。數據庫管理系統(tǒng)提供了數據控制功能。

54.D

55.A解析:選項A表示把st所指串的第5個字符開始的后面的元素賦值給數組a的第2個元素開始的后面元素,形式正確;選項B中出現對數組名進行自加運算,因此錯誤:選項C中st所指字符串有11個字符,再加上'\\0',有12個字符,超過數組長度,所以也是錯誤的;選項D的情況和選項C相似,也是形式正確,但超過了數組的長度。

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

57.A解析:維護是軟件生命周期的最后一個階段,也是持續(xù)時間最長、付出代價最大的階段。軟件工程學的目的就在于提高軟件的可維護性,同時也要設法降低維護的代價。

軟件維護通常有以下四類;

①為糾正使用中出現的錯誤而進行的改正性維護;

②為適應環(huán)境變化而進行的適應性維護;

③為改進原有軟件而進行的完善性維護;

④為將來的可維護和可靠而進行的預防性維護。

軟件維護不僅包括程序代碼的維護,還包括文檔的維護。文檔可以分為用戶文檔和系統(tǒng)文檔兩類。但無論是哪類文檔,都必須與程序代碼同時維護。只有與程序代碼完全一致的文檔才有意義和價值。由此可知,本題中選項B、C、D中的說法都是錯誤的。

58.B解析:考查指向字符串的指針變量。在該題中,指針變量p指向的應該是該字符串中的首地址,p+3指向的是字符串結束標志'\\0'的地址,因而*(p+3)的值為0。

59.D

60.C

61.A第一個while循環(huán)跳過字符串前面的t,第二個while循環(huán)將剩余的字符串賦值給字符串b,所以fun函數功能是刪除字符串s的前置*賦值給t。

62.B

\n用'w'方式打開文件,意思是如果文件名相同則覆蓋原來的文件,所以當再次輸入時覆蓋了第一次的內容,B選項正確。\n

63.C

\n在主函數中,首先定義一個包含20個元素的字符數組P,執(zhí)行語句“strcpy(P+strlen(q),r);”,數組P的內容變?yōu)閧a,b,C,a,b,c,d,e,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0),執(zhí)行語句“strcat(P,q);”,數組P的內容變?yōu)?,a,b,c,a,b,C,d,P,a,b,c,\0,\0,\0,\0,\0,\0,\0,\0),函數sizeof(P)是求數組P的大小,返回20,而函數strlen(p)是計算以P所指起始地址的字符串的長度,這一長度不包括串尾的結束標志0,所以函數返回11。

\n

64.C

65.C

66.C

67.C

68.C

69.Ck的值為5,逐個對caBe語句進行匹配,均不匹配,執(zhí)行default下的語句n=0;k一一。再執(zhí)行case2:ca804:后面的語句n+=2;k一一;。執(zhí)行break語句跳出switch判斷,打印n的值,即2。經過第一次循環(huán)后,k的值為3,然后進行k>0&&ll<5條件判斷為真。第二次執(zhí)行循環(huán)體,執(zhí)行case3:后面的語句n+=1;k一一;。再執(zhí)行break語句跳出循環(huán),此時打印n的值3,此時k的值為2。第三次執(zhí)行循環(huán)體k的值為2,滿足條件,執(zhí)行case2:case4:后面的語句n+=2;k一一;。執(zhí)行break語句跳出循環(huán)體。打印n的值5。此時n不滿足條件k>0&&n<5,所以結束循環(huán)。整個程序的打印結果為235。

70.B當邏輯運算符“&&”兩邊的值是非零時,邏輯表達式的值為真(即為1)。所以b=2&&(-1)=1,2%9=2,故a=2,故先算a/10=25/10=2。

71.B

72.A

73.C本題中x++中的x值應當是先引用,后自加,在此基礎上,逐步將值帶入程序中,即可得到正確的答案。

74.B

75.A\n軟件生命周期分為軟件定義、軟件開發(fā)及軟件運行維護3個階段。定義階段包括問題定義、可行性研究和需求分析,開發(fā)階段包括概要設計、詳細設計、實現和測試,運行維護即軟件的運行和維護。

\n

76.A

77.D

78.A本題考查函數值的類型,在函數定義時,由于函數沒有說明其類型,系統(tǒng)默認一律自動按整型(int)處理。

79.D

80.A

81.(1)錯誤:y=0;

正確:y=1;

(2)錯誤:d=i=num;

正確:d=num-i;

【解析】由函數proc()可知,變量y是判斷小于num/2的整數中是否存在素數的標志,y=1為找到所要的素數,其初始值應該為1,因此,“y=0;”應改為“y=1;”變量ntim為兩個素數之和,變量i和d為要求的兩個素數,因此,“d=i-num;”應改為“d=num-i;”。

82.longfun(char*p){ longn=0; intflag=1; if(*p==‘-’) /*負數時置flag為-1*/ {p++;flag=-1;} elseif(*p==‘+’) /*正數時置flag為1*/ p++; while(*p!=‘\0’) { n=n*10+*p-‘\0’; /*將字符串轉換成相應的整數*/ p++; } returnn*flag;}if語句的作用是判斷該字符串為正數還是負數,while循環(huán)的作用是將字符串轉換成相應的整數。注意:*P是一個字符(如‘9’、‘4’),并不是一個數,要將其轉換成相應的數字需令其減去‘0’(而不是‘\\0’),即*p-‘0’就得到*P這個字符的相應數字,如‘0’-‘0’=0、‘8’-‘0’=8等。2021年貴州省遵義市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.如果最常用的操作是取第i個結點及其前驅,則采用()存儲方式最節(jié)省時間。A.單鏈表B.雙鏈表C.單循環(huán)鏈表D.順序表

2.有以下程序

#include<stdio.h>

main()

{intx=1,y=2,z=3;

if(x>y)

if(y<z)printf("%d",++z);

elseprintf("%d",++y);

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

}

程序的運行結果是

A.A.331

B.41

C.2

D.1

3.以下關于鏈式存儲結構說法錯誤的是()

A.比順序存儲結構的存儲密度小

B.每個節(jié)點是由數據域和指針域組成

C.查找結點時鏈式存儲比順序存儲快

D.邏輯上不相鄰的節(jié)點物理上可能相鄰

4.有以下程序:#include<stdio.h>main(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i*j;}}printf(“m=%d\n”,m);}程序運行后的輸出結果是()A.m=4B.m=2C.m=6D.m=5

5.在Internet中,域名服務器的主要功能是實現()的轉換。

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

6.在多媒體計算機系統(tǒng)中,不能用以存儲多媒體信息的是A.光纜B.軟盤C.硬盤D.光盤

7.在下列運算符中,優(yōu)先級最低的是()。A.||B.!=C.<D.+

8.

9.以下選項中敘述錯誤的是()。

A.C程序函數中定義的賦有初值的靜態(tài)變量,每調用一次函數,賦一次初值

B.在同一函數中,各復合語句內可以定義變量,其作用域僅限本復合語句內

C.C程序函數中定義的自動變量,系統(tǒng)不自動賦確定的初值

D.C程序函數的性能不可以說明為static型變量

10.C語言提供的合法的數據類型關鍵字是()。

A.DoubleB.shortC.integerD.Char

11.以下函數調用語句中含有實參個數為().func((exp1,exp2),(exp3,exp4,exp5));

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

12.下列選項中,不屬于數據管理員(DBA.職責的是()。

A.數據庫維護B.數據庫設計C.改善系統(tǒng)性能,提高系統(tǒng)效率D.數據類型轉換

13.設有100個元素,用折半查找法進行查找時,最大比較次數是_____。

A.25B.50C.10D.7

14.直接選擇排序的時間復雜度為()。(n為元素個數)

A.O(n)B.O(log2n)C.O(nlog2n)D.O(n2)

15.依次讀入數據元素序列{a,b,c,d,e,f,g}進棧,每進一個元素,機器可要求下一個元素進?;驈棗?,如此進行,則棧空時彈出的元素構成的序列是以下哪些序列?

A.{d,e,c,f,b,g,a}

B.{f,e,g,d,a,c,b}

C.{e,f,d,g,b,c,a}

D.{c,d,b,e,f,a,g}

16.當c的值不為0時,在下列選項中不能正確將c的值賦給變量a、b的是()。

A.c=b=a;B.(a=c)||(b=c)C.(a=c)&&(b=c);D.a=c=b;

17.有以下程序:main{chara=a,b;printf("%c,",++a);printf("%c\n",b=a++):)程序運行后的輸出結果是()。A.b,bB.b,cC.a,bD.a,c

18.程序中主函數的名字為()。

A.mainB.MAINC.MainD.任意標識符

19.

20.程序中已構成如下不帶頭節(jié)點的單向鏈表結構,指針變量s、p、q均已正確定義,并用于指向鏈表節(jié)點,指針變量s總是作為指針指向鏈表的第1個節(jié)點。若有以下程序段:q=s;s=s->next;p=s;while(p->next)p=p->next;p->next=q;q->next=NULL;該程序段實現的功能是()。

A.刪除尾節(jié)點B.使尾節(jié)點成為首節(jié)點C.刪除首節(jié)點D.使首節(jié)點成為尾節(jié)點

二、2.填空題(20題)21.下面程序的輸出是【】。

main()

{intarr[10],i,k=0;

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

arr[i]=i;

fov(i=1;i<4;i++)

k+=arr[i]+i;

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

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

longfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

printf("%1d\n",x);}

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

main()

{inti,sum;

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

sum+=i;

printf("%d",sum);

}

24.注釋一般分為序言性注釋和______注釋。

25.設C語言中,一個int型數據在內存中占兩個字節(jié),則int型數據的取值范圍為【】。

26.以下程序的功能是根據輸入的“y”(“Y”)與“n”(“N”),在屏幕上分別顯示出“ThisisYES.”與“ThisNO.”??瞻滋幮枰钊氲膬热菔?/p>

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case'y':

case'Y':printf("\nThisisYES,\n");

case'n':

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

main()

{charch;

printf("\nEnterachar'y','Y'or'n','N':");

ch=【】;

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

YesNo(ch);}

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

main()

{

intp=30;

printf("%d\n",(p/3>0?p/10:p%3));

}

28.以下函數用來求出數組的最大元素在數組中的下標并存放在k所指的存儲單元中。請?zhí)羁铡?/p>

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

【】

if(s[*k]<s[i])*k=i;

return【】;}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777},k;

clrscr();

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);}

29.若fp已正確定義為一個文件指針,d1.dat為二進制文件,請?zhí)羁?,以便為“讀”而打開此文件:

fp=fopen(【】);。

30.在scanf()函數調用語句中,可以在格式字符和%號之間加上一個星號,它的作用是跳過對應的輸入數據;當輸入以下數據時,100200300400500<回車>,下面語句的執(zhí)行結果為【】。

main()

{inta,b,C;

scanf("%d%*d%d%d",&a,&b,&c);

printf("%d%d%d",a,b,c);}

31.數據的【】結構在計算機存儲空間中的存放形式稱為數據的存儲結構或物理結構。

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

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

main()

{inti=10,j=0;

do

{j=j+i;i-;}

while(i>2);

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

}

34.下列程序的運行結果是______。

main()

{inti,a[10];

a[0]=a[1]=1;

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

a[i]=a[i-2]+a[i-1];

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

{if(i%2==0)printf("\n");

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

}

}

35.以下程序的輸出結果是()。main(){char*p[]={"ABC","DEF","GHI","JKL"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);}

36.以下程序運行后的輸出結果是______。

main()

{chara[]="Language",b[]="Programe";

char*p1,*p2;

intk;

p1=a;p2=b;

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

if(*(p1+k)==*(p2+k))printf("%c,*(p1+k));

}

37.一個模塊直接調用的其他模塊的模塊個數稱為______。

38.\13'在內存中占1個字節(jié),"\12"在內存中占______個字節(jié)。

39.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;

}

40.以下程序中,for循環(huán)體執(zhí)行的次數是______。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{

inti;

for(i-1;i<K;i++)

{...}

...

}

三、1.選擇題(20題)41.有以下程序

fun(intx)

{intp;

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

p=x-fun(x-2);

returnp;

}

main()

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

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

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

42.下面能正確進行字符串賦值操作的語句是()

A.chars[5]={"ABCDE"}

B.chars[5]={'A','B','C','D','E'};

C.char*s;s="APCDEF"

D.char*s;scanf("%s",s);

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

A.局部變量說明為static存儲類,其生存期將得到延長

B.全局變量說明為static存儲類,其作用域將被擴大

C.任何存儲類的變量在未賦初值時,其值都是不確定的

D.形參可以使用的存儲類說明符與局部變量完全相同

44.已定義c為字符型變量,則下列語句中正確的是()。

A.c='97'B.c="97"C.c=97D.c="a"

45.下列選項中不合法的十六進制數是()。

A.OxffB.OXllC.OxlgD.OXabc

46.下列正確的實型常量是()。

A.E3.4B.-12345C.2.2e0.8D.4

47.字長為16位的計算機是指______。

A.該計算機能夠處理的最大數不超過16

B.該計算機中的CPU可以同時處理16位的二進制信息

C.該計算機的內存量為16MB

D.該計算機每秒鐘所能執(zhí)行的指令條數為16MIPS

48.下面程序main(){intx=32;printf("%d\n",x=x<<1);}的輸出是______。

A.100B.160C.120D.64

49.假定在一棵二叉樹中,雙分支結點數為15個,單分支結點數為32個,則葉結點數為______個。

A.15B.16C.17D.47

50.在C語言中,函數的隱含存儲類別是______。

A.autoB.staticC.externD.無存儲類別

51.在C語言中,只有在使用時才占用內存單元的變量,其存儲類型是()。

A.auto和register

B.extern和register

C.auto和static

D.static和register

52.以下敘述中正確的是______。

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

B.C語言可以不用編譯就能被計算機識別執(zhí)行

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

D.C語言出現的最晚,具有其他語言的一切優(yōu)點

53.在數據管理技術的發(fā)展過程中,經歷了人工管理階段、文件系統(tǒng)階段和數據庫系統(tǒng)階段。其中數據獨立性最高的階段是()。

A.數據庫系統(tǒng)B.文件系統(tǒng)C.人工管理D.數據項管理

54.從未排序序列中依次取出元素與已排序序列中的元素作比較,將取出的元素放入已排序序列中的正確位置上,此方法稱為______。

A.歸并排序B.選擇排序C.交換排序D.插入排序

55.設有以下定義:char*st="howareyou";下列程序段中正確的是______。

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;srtcpy(p=&a[1],st+2);

56.若有定義: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");}

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

A.軟件交付使用后還需要進行維護

B.軟件一旦交付使用就不需要再進行維護

C.軟件交付使用后其生命周期就結束

D.軟件維護是指修復程序中被破壞的指令

58.下面程序段的運行結果是

charstr[]="ABC",*p=str;

printf("%d\n",*(p+3));

A.67B.0C.字符′C′的地址D.字符′C′

59.在下列選項中,沒有構成死循環(huán)的是()。

A.inti=100;while(1){i==i0+1;if(i>100)break;}

B.for(;;);

C.intk=10000;do{k++;}while(k>10000);

D.ints=36;while(s)--s;

60.請讀程序片段(字符串內沒有空格字符):printf("%d\n",stlen("ATS\n012\1\\”));上面程序片段的輸出結果是()

A.11B.10C.9D.8

四、選擇題(20題)61.有以下程序

62.

有以下程序:

#include<stdio.1l>

voidWriteStr(char*fn.char*str)

{FILE*fp;

fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}

main

{WriteStr("tl.dat","start");

WriteStr("t1.dat","end");)

程序運行后,文件t1.dat中的內容是()。

A.startB.endC.startendD.endrt

63.

有以下程序:

#include<strintg.h>

main

{charp[20]={a,b,c,d),q[]="abc",r[]="

abcde";

strcpy(p+strlen(q),r);strcat(p,q);

printf("%d%d\n",sizeof(p),strlen(p));

}

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

A.209B.99C.2011D.1111

64.

65.

66.

67.

68.

69.有以下程序:

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

A.02356B.0235C.235D.2356

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

main

{inta,b,d=25;

a=d/10%9;

b=a&&(-1);

printf("%d,%d\n",a,b);}A.A.6,1B.2,1C.6,0D.2,0

71.

72.

73.下面程序的輸出結果是

main

{

intx=3,y=6,a=0;

while(x++!=(y-=1))

{

a+=1;

if(y<x)

break;

}

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

}

A.x=4,y=4,a=1B.x=5,y=5,a=1

C.x=5,y=4,a=1D.x=5,y=4,a=3

74.

75.下列選項中屬于軟件生命周期中開發(fā)階段任務的是()。

A.詳細設計B.運行維護C.可行性研究D.需求分析

76.

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

char*p1="abcd",*p2="ABCD",str[50]="xyz";

strcpy(str+2,strcat(p1+2,p2+1));

printf("%s",str);

A.xyabcABB.abcABzC.ABabczD.xycdBCD

78.有下列函數定義:fun(floath){printf("%f,%f\n",h,h*h);)該函數的類型是()。A.int類型B.float類型C.void類型D.函數無類型說明,定義有錯

79.

80.

五、程序改錯題(1題)81.下列給定的程序中,函數proc()的功能是:為一個偶數尋找兩個素數,這兩個素數之和等于該偶數,并將這兩個素數通過形參指針傳回主函數。

請修改函數proc()中的錯誤,使它能得出正確的結果。

注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。

試題程序:

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數fun(),其功能是將一個數字字符串轉換成一個整數(不得調用C語言提供的將字符串轉換成整數的函數)。例如,若輸入字符串“-1234”,則函數把它轉換成整數值-1234。注意:部分源程序給出如下。請勿改動主函數main()和其他函數中的任何內容,僅在函數fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<string.h>longfun(char*p){}voidmain(){ chars[6]; longn; printf(“Enterastring:\n”); gets(s); n=fun(s); printf(“%ld\n”,n);}

參考答案

1.D

2.D本題考查if-else語句的使用。if-else語句可以在條件為“真”或為“假”時執(zhí)行指定的動作,由if引導條件為“真”時執(zhí)行的操作;由else引導條件為“假”時執(zhí)行的操作。else語句要與上面最近的if語句進行匹配,如果要嵌套調用if-else語句,需要將嵌套部分用{}括起來,避免程序報錯。題目中給出了一個if語句和一個if-else語句,if-else語句為第一個if語句的子語句。首先執(zhí)行外層if語句,執(zhí)行條件為x>y,由于x=1,y=2,故該條件為假,不執(zhí)行if的子語句,直接執(zhí)行語句printf("%d\\n",x++);,該語句先輸出x的值,然后進行x++操作。x的初始值為1,輸出結果為1。

3.C

4.C第一次外循環(huán)的值為1,第一次內循環(huán)j的值為3,不滿足條件執(zhí)行m*=i*j即m的值為3;第二次j的值為2。不滿足條件執(zhí)行m*=i*j,即的值為6;第三次j的值為1,不滿足條件執(zhí)行m*=i*j,即m的值仍為6。第二次外循環(huán)的值2,j的值為3,滿足條件執(zhí)行break語句跳出循環(huán)。

5.B在Internet中,把域名翻譯為IP地址的軟件稱為域名系統(tǒng)DNS,運行域名系統(tǒng)的主機稱為域名服務器。域名服務器的主要功能是實現入網主機名字和IP地址的轉換。

6.A解析:光纜是傳輸多媒體信息的通道,不能用以存儲多媒體信息。

7.A

8.A

9.A靜態(tài)變量不是每調用一次就賦一次初值,而是將需要定義許多相同的具有相同屬性的值時,使用靜態(tài)變量來節(jié)省空間,所以A選項錯誤。

10.Bdouble,char,int,第一個字母都是小寫。

11.B

12.DD)【解析】數據庫管理員(DataBaseAdministrator,DBA)是指對數據庫的規(guī)劃、設計、維護、監(jiān)視等的人員,其主要工作如下:數據庫設計。DBA的主要任務之一是數據庫設計,具體地說是進行數據模式的設計;數據庫維護。DBA必須對數據庫中的數據安全性、完整性、并發(fā)控制及系統(tǒng)恢復、數據定期轉儲等進行實施與維護;改善系統(tǒng)性能,提高系統(tǒng)效率。DBA必須隨時監(jiān)視數據庫的運行狀態(tài),不斷調整內部結構,使系統(tǒng)保持最佳狀態(tài)與效率。

13.D

14.D

15.A

16.C選項A是先將a的值賦給變量b,再將變量b的值賦給變量c,不合題意;B選項中由于c的值不為0,在將c的值賦給變量a后,表達式a=c的值為1,不再對表達式b=c計算;對于c選項,表達式a=c的值為1,再求表達式b=c的值為1,然后進行邏輯與運算;D選項將b的值賦給c后再賦給e,故選擇C選項。

17.A++a與a++的區(qū)別是前者先自加再運算,后者是先運算后自加。

18.A

19.B

20.D程序中,指針s指向了它的下一個節(jié)點。題目中說明了s總是指向鏈表的第1個節(jié)點。然后while循環(huán)找到鏈表的最后一個元素,最后一個元素指向了之前鏈表的頭節(jié)點,之前頭節(jié)點指向了空節(jié)點。所以本題實現的是使首節(jié)點成為尾節(jié)點。故本題答案為D選項。

21.1212解析:本題通過第一個for循環(huán)將數組arr[0]=arr[9]分別賦值為0-9,通過第二個for循環(huán)的三次循環(huán)累加,求出結果為12,具體分析如下:

i=1:k=0+arr[1]+1即k=2;

i=2:k=2+arr[2]+2即k=6;

i=3:k=6+arr[3]+3即k=12:

22.考查ifelse語句,n=4不滿足條件,所以fun5(4)=4+fun5(3),n==3也不滿足條件,fun5(3)=3+fun5(2),n==2滿足條件fun5(2)=2,故x=4+3+2=9。\r\n\r\n

23.無定值無定值解析:for(i=1;i<7;i++)決定了循環(huán)次數為6次,每次執(zhí)行的操作是sum+=i,但由于sum沒有初始化,并不知道sum的初值是多少,所以結果無定值。

24.功能性功能性解析:注釋一般分為序言性注釋和功能性注釋。序言性注釋通常位于每個程序的開頭部分,給出程序的整體說明;功能性注釋一般嵌在源程序體之中,主要描述其后的語句或程序做什么,

25.-32768~32767

26.getchargetchar解析:題中要求根據輸入的字符調用函數YesNo來判斷輸入的字符是y(Y)還是n(N),字符的輸入可用字符輸入函數getchar。函數YesNo用來判斷一個字符是y(Y)還是n(N),主要用了一個switch多分支結構來比較輸入字符與字符'y','Y'、,'n','N'是否相等來實現的。注意:用于字符串處理的函數。

27.33解析:條件表達式的一般形式為;表達式1?表達式2:表達式3條件運算符的執(zhí)行順序:先求解表達式1,若為非0(真)則求解表達式2,此時表達式2的值就作為整個條件表達式的值;若表達式1的值為0(假),則求解表達式3,表達

溫馨提示

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

評論

0/150

提交評論