2021-2022年河北省廊坊市全國計算機等級考試C語言程序設計_第1頁
2021-2022年河北省廊坊市全國計算機等級考試C語言程序設計_第2頁
2021-2022年河北省廊坊市全國計算機等級考試C語言程序設計_第3頁
2021-2022年河北省廊坊市全國計算機等級考試C語言程序設計_第4頁
2021-2022年河北省廊坊市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩98頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2021-2022年河北省廊坊市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:#include<stdio.h>main(){intk=5;while(--k)printf(“%d”,k-=3);printf(“\n”);}程序運行后的輸出結果是()。

A.1B.2C.4D.死循環

2.下面程序的輸出結果是______。main(){inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a+4;printf("%d\n",p[3]);}

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

3.關于結構化程序設計原則和方法的描述錯誤的是()。

A.選用的結構只準許有一個入口和一個出口

B.復雜結構應該用嵌套的基本控制結構進行組合嵌套來實現

C.不允許使用GOTO語句

D.語言中若沒有控制結構,應該采用前后一致的方法來模擬

4.設x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

5.下列鏈表中,其邏輯結構屬于非線性結構的是()

A.雙向鏈表B.帶鏈的棧C.二叉鏈表D.循環鏈表

6.設初始輸入序列為1,2,3,4,5,利用一個棧產生輸出序列,下列()序列是不可能通過棧產生的。

A.1,2,3,4,5B.5,3,4,l,2C.4,3,2,1,5D.3,4,5,2,l

7.面向對象方法中,繼承是指()。

A.一組對象所具有的相似性質B.一個對象具有另一個對象的性質C.各對象之間的共同性質D.類之間共享屬性和操作的機制

8.有以下程序:#include<stdio.h>main(){intb[3][3]=(0,1,2,0,1,2,0,1,2},i,j,t=l;for(i=0;i<3;i++)for(j=1;j<=i;j++)t+=b[i][b[j][i]];printf("%d\n",t);}程序運行后的輸出結果是()。A.1B.3C.4D.0

9.要求當A的值為奇數時,表達式的值為“真”,A的值為偶數時,表達式的值為“假”,以下不滿足要求的表達式是()。A.A%2==1B.!(A%2==0)C.A%2D.!(A%2)

10.若有下列定義,則對a數組元素地址的正確引用是()。inta[5],*p=a;

A.p+5B.*a+1C.&a+1D.&a[0]

11.C語言可執行程序的開始執行點是()。

A.包含文件中的第一個函數B.程序中第一個函數C.程序中的main()函數D.程序中第一條語句

12.設有定義:charc[]=“Cc”;FILE*fp;且fp指向以“w”的方式成功打開的文件,若要將c中的兩個字符寫入文件,且每個字符占一行,則下面的選項中正確的是()。

A.fprintf(fp,“%c\n%c\n”,c[0],c[1]);

B.fprintf(fp,“%c\r\n%c\r\n”,c[0],c[1]);

C.fprintf(fp,“%c%c”,c[0],c[1]);

D.fprintf(fp,“%s\n”,c);

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

A.在一個函數中,可以有多條return語句

B.函數的定義不能嵌套,但函數的調用可以嵌套

C.函數必須有返回值

D.不同的函數中可以使用相同名字的變量

14.有以下程序

#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

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

A.宏替換不占用程序的運行時間

B.預處理命令行必須位于源文件的開頭

C.在源文件的一行上可以有多條預處理命令

D.宏名必須用大寫字母表示

16.字符串"\\"ABCDEF\"\\”的長度是()。

A.11B.10C.5D.3

17.C語言中函數返回值的類型是由()決定的。

A.return語句中的表達式類型B.調用該函數的主調函數類型C.定義函數時所指定的函數類型D.以上說法都不正確

18.若有定義:“inta,b,c,*p=&c;”,接著執行以下選項中的語句,則能正確執行的語句是()。

A.scanf(“%d”,a,b,c);

B.scanf(“%d%d%d”,a,b,c);

C.scanf(“%d”,p);

D.scanf(“%d”,&p);

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

A.C語言編譯系統對標識符的長度沒有規定

B.C語言標識符的規定長度因系統而異

C.C語言規定標識符長度最多允許16個字符,超長報錯

D.C語言規定以下劃線開頭的標識符長度必須大于1

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

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

二、2.填空題(20題)21.以下程序運行后的輸出結果是()。

main()

{intm=011,n=11;

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

}

22.在最壞情況下,堆排序需要比較的次數為()。

23.軟件定義時期主要包括______和需求分析兩個階段。

24.對數據元素之間的邏輯關系的描述是()。

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

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

printf("%d\n",S(i+j));

}

26.存儲300個16×16點陣的漢字信息需要【】字節。

27.軟件是程序、數據和【】的集合。

28.現有兩個C程序文件T18.c和myfun.c同在TC系統目錄(文件夾)下,其中T18.c文件如下:

#include<stdio.h>

#include"myfun.c"

main()

{fun();printf("\n");}

myfun.c文件如下:

voidfun()

{chars[80],c;intn=0;

while((c=getchar())!=′\n′)s[n++]=c;

n--;

while(n>=0)printf("%c",s[n--]);

}

當編譯連接通過后,運行程序T18時,輸入Thank!,則輸出結果是【】。

29.某二叉樹中度為2的結點有18個,則該二叉樹中有【】個葉子結點。

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

voidfun(int*n)

{

while((*n)--);

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

}

main()

{inta=100;

fun(&a);

}

31.下面程序的功能是:計算1~10之間奇數和及偶數之和。

#include<stdio.h>

main()

{inta,b,c,i;

a=c=O;

for(i=O;i<=10;i+=2)

{a+=i;

【】;

c+=b;

}

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

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

}

32.已知字符'A'的ASCII碼值為65,以下語句的輸出結果是【】。

charch='B';

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

33.度為10的線性表進行冒泡排序,最壞情況下需要比較的次數為______。

34.在面向對象程序設計中,從外面看只能看到對象有外部特征,而不知道也無須知道數據的具體結構以及實現操作的算法,這稱為對象的______。

35.以下程序用于判斷a、b、c能否構成三角形,若能,輸出YES,否則輸出NO。當給a、b、c輸入三角形三條邊長時,確定a、b、c能構成三角形的條件是需同時滿足三個條件:a+b>c,a+c>b,b+c>a。請填空。

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&C);

if(())printf("YES\n");/*a、b、c能構成三角形*/

elseprintf("NO\n");/*a、b、c不能構成三角形*/

}

36.#define命令出現在程序中函數的外面,宏名的有效范圍為______。

37.排序是計算機程序設計中的一種重要操作,常見的排序方法有插入排序、【】和選擇排序等。

38.下面程序的功能是:計算1~10之間的奇數之和與偶數之和,請填空。

#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);}

39.以下程序的功能是將字符串s中的數字字符放人d數組中,最后輸出d中的字符串。例如,輸入字符串abc123edf456gh,執行程序后輸出123456。請填空。

#include<stdio.h>

#include<ctype.h>

main()

{chars[80],d[80];inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(【】){d[j]=s[i];j++;)

d[j]='\0';

puts(D);

}

40.以下程序通過函數指針p調用函數fun,請在填空欄內寫出定義變量p的語句。

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

p=fun;p(&a,&b);

……

}

三、1.選擇題(20題)41.以下各選項企圖說明一種新的類型名,其中正確的是______。

A.typedefvlint;

B.typedefv2=int

C.typedefintv3;

D.typedefv4:int

42.有以下程序:#include<stdio.h>main(){unsignedinta;intb=-1;a=b;printf("%u",a);程序運行后的輸出結果是()。

A.-1B.65535C.32767D.-32768

43.已定義下列函數:intfun(int*p){return*p;)fun函數返回值是()。

A.不確定的值B.一個整數C.形參p中存放的值D.形參p的地址值

44.有以下程序main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若運行時從鍵盤上輸入:6,5,65,66<回車>。則輸出結果是

A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6

45.有以下程序

#inGlude<stdlib.h>

structNODE{

intnum;

structNODE*next;

}

main()

{structNODE*p,*q,*r;

intsum=0;

p=(structNODE*)malloc(sizeof(structNODE));

q=(structNODE*)malloc(sizeof(structNODE));

r=(stnlctNODE*)malloc(sizeof(structNODE));

p->num=1;q->num=2;r->num=3;

p->next=q;q->next;r;r->next=NULL;

sum+=q->next->Num,sum+=p->num;

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

}

執行后輸出結果是

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

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

A.程序設計過程中的主要工作是編制程序

B.程序設計的主要目標是編制出運行結果正確的程序

C.不良的程序設計風格會增加程序的復雜性

D.上述三種說法都不對

47.如果要限制一個變量,命名其只能為本文件所用,必須通過()來實現。

A.外部變量說明B.靜態內部變量C.靜態外部變量D.局部變量說明

48.在下列#include命令中,正確的一條是()

A.#include[string.h]

B.#include{math.h}

C.#include(stdio.h)

D.#include<stdio.h>

49.關于結構化程序設計原則和方法描述錯誤的是()。

A.選用的結構只準許有一個入口和一個出口

B.復雜結構應該用嵌套的基本控制結構進行組合嵌套來實現

C.不允許使用GOTO語句

D.語言中所沒有的控制結構,應該采用前后一致的方法來模擬

50.下列描述中正確的是()。

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產品的生產率問題

C.軟件工程的主要思想是強調在軟件開發過程中需要應用工程化原則

D.軟件工程只是解決軟件開發中的技術問題

51.若有以下函數首部intfun(doublex[10],int*n)則下面針對此函數的函數聲明語句中正確的是______。A.intfun(doublex,int*n);

B.intfun(double,int);

C.intfun(double*x,intn);

D.intfun(double*,int*);

52.有以下程序:#include<stdio.h>main(){inti,s=0;for(i=1;i<10;i+=2)s+=i+1;printf("%d\n",s);}程序執行后的輸出結果是()。

A.正整數1~9的累加和B.正整數1~10的累加和C.正整數1~9中奇數之和D.正整數1~10中偶數之和

53.下列程序的輸出結果是______。#include<stdio.h>main(){inti,j,k,a=3,b=2;i=(--a==b++)?--a;++b;j=a++;k=b;printf("i=%d,j=%d,k=%d\n",i,j,k);}

A.i=2,j=1,k=3B.i=1,j=1,k=2C.i=4,j=2,k=4D.i=1,j=1,k=3

54.數據庫系統的核心是()。

A.數據模型B.數據庫管理系統C.數據庫D.數據庫管理員

55.以下程序的輸出結果是_______。#include<string.h>main(){char*a="abcdefghi";intk;fun(a);puts(a);}fun(char*s){intx,y;charc;for(x=0,y=strlen(s)-1;x<y;x++,y--){c=s[y];s[y]=s[x];s[x]=c;}}

A.ihgfedcbaB.abcdefghiC.abcdedcbaD.ihgfefghi

56.若有以下定義和語句:char*s1="12345",*s2="1234";printf("%d\n",strlen(strcpy(s1,s2)));則輸出結果是______。

A.4B.5C.9D.10

57.已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是

A.acbedB.decabC.deabcD.cedba

58.若a為int類型,且其值為3,則執行完表達式a+=a-=a*a后,a的值是()。

A.-3B.9C.-12D.6

59.下述關于數據庫系統的敘述中正確的是______。

A.數據庫系統減少了數據冗余

B.數據庫系統避免了一切冗余

C.數據庫系統中數據的一致性是指數據類型的一致

D.數據庫系統比文件系統能管理更多的數據

60.有以下程序main(){unsignedchara,b;a=4|3;b=4&3;printf("%d%d\n",a,b);}執行后輸出結果是

A.70B.7C.11D.430

四、選擇題(20題)61.在C程序中有如下語句:char*func(intx,inty);它是()。

A.對函數func的定義。B.對函數func的調用。C.對函數func的原型說明。D.不合法的

62.以下語句的執行結果是()。

intm=0,s=1;

do{

s+=m++;

}while(m<6);

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

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

63.

64.

65.有以下程序:

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

A.0B.一1C.1D.7

66.設intx=7,則~x的值是()。

A.-8B.7C.-1D.1

67.

68.

69.“商品”與“顧客”兩個實體集之間的聯系一般是()。

A.一對一B.多對一C.一對多D.多對多

70.C語言可執行程序的開始執行點是()。

A.包含文件中的第一個函數B.程序中第一個函數C.程序中的main()函數D.程序中第一條語句

71.有下列二叉樹.對此二叉樹前序遍歷的結果為()。

A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXY7D.ABDYECFXZ

72.

73.

74.下列判斷正確的是()。

A.chara="ABCD":等價于char*a;*a="ABCD":

B.charstr[10]={"ABCD"}:等價于charstr[10];str[]={"ABCD"};

C.char*s="ABCD":等價于chars;*s="ABCD";

D.charc[5]="ABCD",d[5]="ABCD":等價于charc[5]-d[5]="ABCD";

75.若有以下語句:typedefstructS{int9;charh;}T;以下敘述中正確的是()。

A.可用s定義結構體變量B.可用T定義結構體變量C.S是struct類型的變量D.T是structS類型的變量

76.

77.有以下程序:

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

A.2,4,3,9,12,12,11,11,18,9,

B.3,4,2,7,9,8,6,5,11,10,

C.2,3,1,6,8,7,5,4,10,9,

D.1,2,3,6,8,7,5,4,10,9,

78.

79.

80.有以下程序

五、程序改錯題(1題)81.給定程序MODll.C中,函數fun的功能是:在有n名學生,2門課成績的結構體數組std中,計算出第l門課程的平均分,作為函數值返回。例如,主函數中給出了4名學生的數據,則程序運行的結果為:第l門課程的平均分是:76.125000請改正函數fun中指定部位的錯誤,使它能得出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.請編寫一個函數proc(),它的功能是:將str所指字符串中所有下標為奇數位置的字母轉換為大寫(若該位置上不是字母,則不轉換)。例如,若輸入abcdel23,則應輸出aBcDe123。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.A“--k”是先自減再使用,所以第1次判斷條件即while(4),條件為真輸出k的值,k=4-3,結果為1;第2次判斷條件即while(0),條件為假,結束循環,輸出回車換行符。故本題答案為A選項。

2.B解析:指針變量p指向數組a的第5個元素,p[3]在原指向基礎上移3個單位,指針變量p將指向第8個元素(下標為7的元素),值為7。

3.C結構化程序設計的原則和方法之一是限制使用GOT0語句,但不是絕對不允許使用GOT0語句。其他三項為結構化程序設計的原則。

4.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252化成二進制為0000001010101010,兩者相與得0000001000101000。

5.C數據的邏輯結構是描述數據之間的關系,分兩大類:線性結構和非線性結構。線性結構是n個數據元素的有序(次序)集合,指的是數據元素之間存在著“一對一”的線性關系的數據結構。常用的線性結構有:線性表,棧,隊列,雙隊列,數組,串。非線性結構的邏輯特征是一個結點元素可能對應多個直接前驅和多個后驅。常見的非線性結構有:樹(二叉樹等),圖(網等),廣義表。

6.B

7.D繼承是面向對象的方法的一個主要特征,是使用已有的類的定義作為基礎建立新類的定義技術。廣義的說,繼承是指能夠直接獲得已有的性質和特征,而不必重復定義它們,所以說繼承是指類之間共享屬性和操作的機制。

8.C本題考查了兩層for循環。外層循環增量i的值作為內層循環執行次數的值使用。

9.D

10.D本題考查數組元素的地址的引用。A中,p+5引用的是a[5]的地址,而數組a只有5個元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用錯誤(注:數組元素下標從0開始);B中,*a+1指的是將數組a的第一個元素加1;選項C中,不存在這種引用方式;D中,&a[0]引用的是數組的首地址。

11.C解析:每個C程序有且只有一個主函數main(),且程序必須從main函數開始執行,并在main()函數中結束。

12.A要寫入字符數據,需要使用格式字符%c,選項D錯誤;換行符需要使用‘\\n’,而不是‘\\r\\n’,選項B錯誤;選項C中未使用換行符,不滿足題意。故本題答案為A選項。

13.C

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

15.A宏替換是在編譯階段前的預處理階段,對程序中的宏完成文本替換,因此宏替換不占用運行時間,選項A正確;預處理命令行無須在源文件的開頭,它可以出現在程序的任何一行的開始部位,其作用一直持續到源文件的末尾,選項B錯誤;在源文件的一行上至多只能有一條預處理命令,選項C錯誤;宏名通常使用大寫字母表示,這并不是語法規定,只是一種習慣,選項D錯誤。本題答案為A選項。

16.B解析:本題涉及字符串的兩個最基本的概念。①字符串的長度是指字符串中字符的個數,但不包含字符串結束符;②以反斜線“\\”開頭的特殊字符序列,意思是把反斜線后面的字符序列轉換成特定的含義,而不是原來的含義,不包含在字符串長度之內,“\\”連同后面的字符為一個長度。

17.C

18.Cscanf函數要求為:輸入的變量為地址形式。4個選項中,C選項符合要求。故本題答案為C選項。

19.B對于標識符的長度(即一個標識符允許的字符個數),C語言編譯系統是有規定的,即標識符的前若干個字符有效,超過的字符將不被識別。不同的C語言編譯系統所規定的標識符有效長度是不同的。故本題答案為B選項。

20.A參數r的傳遞是地址傳遞,函數調用會改變其值。函數f的功能是:判斷n是否為3或5的倍數,如果是,則將指針r所指的內存空間賦值為n除以3或5的商;否則n遞減,直到它可以被3或5整除。初始時調用函數f(7,&r);n=7,執行else子句,調用f(6,&r1);后n=6,執行語句if(n%3==0)r1=n/3;,此后執行語句*r=rl;。所以r=6/3=2。

21.10111011解析:賦值表達式m=011中的常數011為八進制,++m后以十進制數格式“%d”輸出為10。

22.O(nlog2n)

23.可行性研究可行性研究解析:軟件生命周期一般包括可行性研究與需求分析、設計、實現、測試、交付使用及維護等,還可以將軟件生命周期分為三個階段:①軟件定義階段:可行性研究和需求分析;②軟件開發階段:設計、實現和測試;③軟件運行維護階段:交付使用和維護。

24.數據的邏輯結構數據的邏輯結構解析:數據的邏輯結構是對數據元素之間的邏輯關系的描述,它可以用一個數據元素的集合和定義在此集合中的若干關系來表示。

25.8181解析:將S(i+j)展開來有:S(i+j)=S(6+8)=4×6+8×6+8+1=81。

26.800800解析:一個16x16點陣的字形碼需要16x16/8=32字節的存儲空間,所以300個漢字信息需要9600個字節。

27.文檔文檔解析:計算機軟件是計算機系統中與硬件相互依存的另一部分,是包括程序、數據以及相關文檔的完整集合。

28.!knahT!knahT解析:此程序是一道次序顛倒題,即輸入'Thank!',則輸出'!knahT'。

29.1919解析:根據二叉樹的性質:在任意一棵二叉樹中,度為。的結點(即葉子結點)總是比度為2的結點多一個。本題中度為2的結點數為18,故葉子結點數為18+1=19個。

30.00解析:在函數fun()中,while((*n)-)是先引用*n的值,再做(*n)--運算,所以循環結束時*n的值為0,再做(*n)--運算后,*n的值為-1;執行++(*n)后,*n的值是0。

31.b=i+1

32.B66B66解析:字符B的ASCII碼值為66,因此,按%c形式輸出B,按%d形式輸出66,輸出結果為:B66。

33.4545解析:對于長度為N的線性表,在最壞情況下(即線性表中元素現在的順序與目標順序正好相反),冒泡排序需要經過N/2遍的從前往后的掃描和N/2遍的從后往前的掃描,需要的比較次數為N(N-1)/2。

34.封裝性封裝性解析:對象具有下列5個基本特點:①標識惟一性;②分類性:③多態性;④封裝性;⑤模塊獨立性好。其中,封裝性是指從外面看只能看到對象的外部特征,對象的內部特征即處理能力的實行和內部狀態,對外是不可見的,對象的內部狀態只能由其自身改變。

35.(a+b>C)&&(a+c>B)&&(b+c>A)(a+b>C)&&(a+c>B)&&(b+c>A)解析:本題主要考查運算符邏輯與“&&”的用法。

36.從定義到本源文件結束從定義到本源文件結束解析:C語言規定,宏名的有效范圍為從定義宏到本源程序結束。

37.交換排序交換排序解析:常見的排序方法有插入排序(包括簡單插入排序法和希爾排序法等)、交換排序(包括冒泡排序和快速排序法等)和選擇排序(包括簡單選擇排序和堆排序等)。注意:常見的排序方法及其作用機制和區別。

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

39.s[i]>='0'&&s[i]<='9'或s[i]>=48&&s[i]<=57s[i]>='0'&&s[i]<='9'或s[i]>=48&&s[i]<=57解析:根據題意,if語句的條件應當是判斷數組元素s[i]是否為數字,故正確答案為:s[i]>='0'&&s[i]<='9'或s[i]>=48&&s[i]<=57,其中48是字符0的ASCII碼值,57是字符9的ASCII碼值。

40.void(*p)();void(*p)();解析:要定義p為指向函數的指針變量,需寫成void(*p)();,注意*p兩側的括弧不可以省略,表示P先與*結合,是指針變量,再與后面的()結合,表示此指針變量指向函數,這個函數無返回值(同fun()函數)。

41.C解析:C語言中可以使用typedef來重新定義已有的數據類型,相當于為數據類型取個別名。

42.B解析:不同類型的對象進行混合運算時,需要進行數據的類型轉換,其轉換方向為int→unsigned→long→double。本題程序中的變量b為int型,需要轉換為unsigned型。int型變量的數值范圍為-32768~32767,最高位為符號位,而unsigned所表示的數的范圍為0~65535,它的最高位為數值位。由于內存中是以補碼形式存儲數據的,所以整型數-1在內存中表示為16個1,最高位的1表示符號為負,將它轉換為unsigned類型,即將原符號位的1看成數值,所以得到16個數值1,即65535。

43.B解析:由函數intfun(int*p){return*p;}的定義可知,返回值為整型指針變量p所指向的數據。

44.A解析:主函數中首先定義了4個字符變量a、b、cd,然后通過scanf()函數輸入a、b、c、d輸入中a和b是按字符格式c輸入的,c和d是按整型符號d輸入的。在看下面的printf()函數中,要求a、b、c、d都按字符輸出,故a和b原樣輸出為6、5,c和d將把與其ASCII碼對應的字符輸出,65和66的ASCII碼對應字符A和B,故最后的輸出為6,5,A,B。所以,4個選項中選項A符合愿意。

45.B解析:本題中定義了一個結點structNODE,在主函數中定義了三個結點變量指針p、q和r,接著通過malloc函數分配了三個結點并讓p、q和r分別指向他們,再接著給p、q和r所指向的結點的num域賦值為1、2、3,然后讓結點p指向q,讓q指向r,r指向NULL。顯然q->next->num的值為指針r所指向結點的num域的值為3,p->hum的值為指針P所指向結點的num域的值為1,故最后輸出s的值為3+1=4。

46.C解析:程序設計過程中包括很多步驟,編制程序只是其中的一步。所以,選項A錯誤。

程序設計的最終產品是程序,但僅設計和編制出一個運行結果正確的程序是不夠的,還應養成良好的程序設計風格。所以,選項B錯誤。

程序設計的根本目標是要降低程序的復雜性和提高程序的可讀性。而程序的復雜性主要來自以下兩個方面:問題固有的復雜性;不良的設計風格人為增加了程序的復雜性。所以,良好的設計風格對于降低程序的復雜性是很重要的,并且,好的設計風格是好的程序風格的基本保證。選項C正確。

47.C

48.D

49.C解析:限制使用GOTO語句是結構化程序設計的原則和方法之一,但不是絕對不允許使用GOTO語句。其他3項為結構化程序設計的原則。

50.C\r\n軟件工程是試圖用工程、科學和數學的原理與方法研制、維護計算機軟件的有關技術及管理方法。軟件工程的主要思想是強調在軟件開發工程中需要應用工程化的原則。軟件工程用來解決以下問題:軟件需求的增長得不到滿足、軟件開發成本和進度無法控制、軟件質量難以保證、軟件不可維護或維護程度低、軟件得成本不斷提高、軟件開發生產率的提高趕不上硬件的發展和應用需求的增長。軟件項目的管理、軟件產品的生產率、軟件開發中的技術都是軟件工程需要解決的部分問題。因此選項C正確。

51.D解析:函數聲明可以照寫已定義的函數的首部,再加一個號就成為了對函數的聲明,在函數聲明中也可以不寫形參名,而只寫形參的類型,但要保證與函數首部寫法上的—致,即函數類型、函數名、參數個數、參數類型和參數順序相同。字符數組可用指針來表示,所以選頂D正確。

52.D解析:通過for(i=1;i<10;i+=2)可知,i取值為1~10的奇數,即1,3,5,7,9,i+1即為2,4,6,8,10。因此,程序的功能是計算并輸出1~10中的偶數之和,s+=i+1就是累加這些偶數。

53.D

54.B解析:數據庫管理系統是數據庫系統的核心,是負責數據庫的建立、使用和維護的軟件。數據庫管理系統建立在操作系統之上,實施對數據庫的統一管理和控制。用戶使用的各種數據庫命令以及應用程序的執行,最終都必須通過數據庫管理系統。另外,數據庫管理系統還承擔著數據庫的安全保護工作,按照數據庫管理員所規定的要求,保證數據庫的完整性和安全性。

55.A解析:觀察子函數fun()可知,它是實現—個數組首末元素位置互相依次交換。聯系主函數,可以看出,是對字符串中的元素依次進行首末位置的對調。

56.A解析:函數strcpy(s1,s2)的返回結果是指針s1的新值'1234',因此求串長函數的結果為4。

57.D解析:中序遍歷的遞歸算法如下:①遍歷左子樹;②訪問根結點;③遍歷右子樹。前序遍歷的遞歸算法如下:①訪問根結點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法如下:①遍歷左子樹;②遍歷右子樹;③訪問根結點。由后序遍歷結果dabec可知c是根結點,且無右子樹。再由左子樹的后序遍歷結果dabe可知,e是左子樹的根結點,且由左子樹的中序遍歷結果deba可知,d是左子樹的左子樹結點,b和a是左子樹的右子樹結點。再次由后序遍歷結果ab可知,a是左子樹結點。b是根結點。至此,各結點在樹中的位置已完全確定。

58.C解析:本題中首先定義一個整型變量a并給它賦初值為3,在表達式中,從右開始執行,即先執行“a-=a*a;”等價于a=a-a*a即a=3-3*3=-6,此時a的值為-6,接著執行“a+=a-;”相當于執行a=a+a即a=-6+(-6)=-12,此時a的值為-12。所以,4個選項中選項C符合題意。

59.A解析:由于數據的集成性使得數據可為多個應用所共享,特別是在網絡發達的今天,數據庫與網絡的結合擴大了數據關系的應用范圍。數據的共享自身又可極大地減少數據冗余性,不僅減少了不必要的存儲空間,更為重要的是可以避免數據的不一致性。這里所謂數據的一致性是指在系統中同一數據的不同出現應保持相同的值,而數據的不一致性指的是同一個數據在系統的不同拷貝處有不同的值。

60.A解析:按位與運算符“&”中參加運算的兩位都為1時,其結果為1,否則結果為0,或位或運算符“|”中參加運算的兩位只要有一個為1,則結果為1,只有當相應的兩位都為0結果才為0。所以最后輸出a和b的值為7和0。

61.C

62.B

63.A

64.A

65.Ba一一的含義是先用后減l,所以當a的值為0時,跳出循環,但是仍要執行a一一,g的值變為一1。

66.A本題主要考查按位求反運算和C語言正負數的表示,“O”代表正數,“1”代表負數;x=7的二進制為00111,第一個0代表正數,~x為11000,第一個l代表負數,值為8。

67.D

68.C

69.D商品與顧客兩個實體集之間的買與被買聯系是多對多的,因為一種商品可以被多個顧客購買,而一個顧客也可以買多個商品。

70.C解析:每個C程序有且只有一個主函數main(),且程序必須從main函數開始執行,并在main()函數中結束。

71.D

\n所謂二叉樹的前序遍歷是指先訪問根結點,訪問左子樹,最后訪問右子樹,本題中序為DYBEAFCZX,后序為YDEBFZXCA。

\n

72.A

73.B

74.Da=“ABCD”書寫錯誤,因為“=”左邊不能出現常量;數組名S是代表S數組首地址常量,而不是變量;字符串只有在定義時維數可以省略。

75.B本題考查typledef重新聲明一種結構體類型,那么T為結構體類型,而不是結構體變量,所以B選項正確。

76.B

77.A本題考查的是結構體成員的引用。在主函數main中定義了一個整型變量i和一個結構體變量s。f函數中,通過指針a來引用數組中的元素;通過for循環語句將數組中除最后一個元素外的其他元素(由條件i<n-1決定的)分別加上由0開始的遞增數據(即0、1、2…8),所以最后的輸出結果為2,4,3,9,12,12,11,11,18,9,。

78.D

79.B

80.A本題考查的是遞歸算法的分析。一個直接或間接地調用自身的算法稱為遞歸算法。在一個遞歸算法中,至少要包含一個初始值和一個遞歸關系。本題的fun()函數在x等于0或1時返回3,而在其余情況下返回x—fhn(x一2),所以本題的遞歸算法可以這樣表示:fun(x)=3(x--0或x=1)(初始值)fun(x)=x-fun(x一2)(x≠0且x≠1)(遞歸關系)在主函數中輸出的結果是run(7),而fun(7)=7-fun(5)=7-(5-fun(3))=7-(5一(3一fun(1)))。

81.(1)doublesum改為doublesunl=0.0;(2)for(i=0;i<2;i*)改為細(i=0;i<2;i++)改為for(i_0;i82.

【解析】要將字符串中為奇數的字母轉換為大寫。首先應該判斷奇數位置上的字符是否為小寫字母,若是則將其轉換為大寫,若不是則不予處理。

2021-2022年河北省廊坊市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:#include<stdio.h>main(){intk=5;while(--k)printf(“%d”,k-=3);printf(“\n”);}程序運行后的輸出結果是()。

A.1B.2C.4D.死循環

2.下面程序的輸出結果是______。main(){inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a+4;printf("%d\n",p[3]);}

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

3.關于結構化程序設計原則和方法的描述錯誤的是()。

A.選用的結構只準許有一個入口和一個出口

B.復雜結構應該用嵌套的基本控制結構進行組合嵌套來實現

C.不允許使用GOTO語句

D.語言中若沒有控制結構,應該采用前后一致的方法來模擬

4.設x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

5.下列鏈表中,其邏輯結構屬于非線性結構的是()

A.雙向鏈表B.帶鏈的棧C.二叉鏈表D.循環鏈表

6.設初始輸入序列為1,2,3,4,5,利用一個棧產生輸出序列,下列()序列是不可能通過棧產生的。

A.1,2,3,4,5B.5,3,4,l,2C.4,3,2,1,5D.3,4,5,2,l

7.面向對象方法中,繼承是指()。

A.一組對象所具有的相似性質B.一個對象具有另一個對象的性質C.各對象之間的共同性質D.類之間共享屬性和操作的機制

8.有以下程序:#include<stdio.h>main(){intb[3][3]=(0,1,2,0,1,2,0,1,2},i,j,t=l;for(i=0;i<3;i++)for(j=1;j<=i;j++)t+=b[i][b[j][i]];printf("%d\n",t);}程序運行后的輸出結果是()。A.1B.3C.4D.0

9.要求當A的值為奇數時,表達式的值為“真”,A的值為偶數時,表達式的值為“假”,以下不滿足要求的表達式是()。A.A%2==1B.!(A%2==0)C.A%2D.!(A%2)

10.若有下列定義,則對a數組元素地址的正確引用是()。inta[5],*p=a;

A.p+5B.*a+1C.&a+1D.&a[0]

11.C語言可執行程序的開始執行點是()。

A.包含文件中的第一個函數B.程序中第一個函數C.程序中的main()函數D.程序中第一條語句

12.設有定義:charc[]=“Cc”;FILE*fp;且fp指向以“w”的方式成功打開的文件,若要將c中的兩個字符寫入文件,且每個字符占一行,則下面的選項中正確的是()。

A.fprintf(fp,“%c\n%c\n”,c[0],c[1]);

B.fprintf(fp,“%c\r\n%c\r\n”,c[0],c[1]);

C.fprintf(fp,“%c%c”,c[0],c[1]);

D.fprintf(fp,“%s\n”,c);

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

A.在一個函數中,可以有多條return語句

B.函數的定義不能嵌套,但函數的調用可以嵌套

C.函數必須有返回值

D.不同的函數中可以使用相同名字的變量

14.有以下程序

#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

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

A.宏替換不占用程序的運行時間

B.預處理命令行必須位于源文件的開頭

C.在源文件的一行上可以有多條預處理命令

D.宏名必須用大寫字母表示

16.字符串"\\"ABCDEF\"\\”的長度是()。

A.11B.10C.5D.3

17.C語言中函數返回值的類型是由()決定的。

A.return語句中的表達式類型B.調用該函數的主調函數類型C.定義函數時所指定的函數類型D.以上說法都不正確

18.若有定義:“inta,b,c,*p=&c;”,接著執行以下選項中的語句,則能正確執行的語句是()。

A.scanf(“%d”,a,b,c);

B.scanf(“%d%d%d”,a,b,c);

C.scanf(“%d”,p);

D.scanf(“%d”,&p);

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

A.C語言編譯系統對標識符的長度沒有規定

B.C語言標識符的規定長度因系統而異

C.C語言規定標識符長度最多允許16個字符,超長報錯

D.C語言規定以下劃線開頭的標識符長度必須大于1

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

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

二、2.填空題(20題)21.以下程序運行后的輸出結果是()。

main()

{intm=011,n=11;

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

}

22.在最壞情況下,堆排序需要比較的次數為()。

23.軟件定義時期主要包括______和需求分析兩個階段。

24.對數據元素之間的邏輯關系的描述是()。

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

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

printf("%d\n",S(i+j));

}

26.存儲300個16×16點陣的漢字信息需要【】字節。

27.軟件是程序、數據和【】的集合。

28.現有兩個C程序文件T18.c和myfun.c同在TC系統目錄(文件夾)下,其中T18.c文件如下:

#include<stdio.h>

#include"myfun.c"

main()

{fun();printf("\n");}

myfun.c文件如下:

voidfun()

{chars[80],c;intn=0;

while((c=getchar())!=′\n′)s[n++]=c;

n--;

while(n>=0)printf("%c",s[n--]);

}

當編譯連接通過后,運行程序T18時,輸入Thank!,則輸出結果是【】。

29.某二叉樹中度為2的結點有18個,則該二叉樹中有【】個葉子結點。

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

voidfun(int*n)

{

while((*n)--);

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

}

main()

{inta=100;

fun(&a);

}

31.下面程序的功能是:計算1~10之間奇數和及偶數之和。

#include<stdio.h>

main()

{inta,b,c,i;

a=c=O;

for(i=O;i<=10;i+=2)

{a+=i;

【】;

c+=b;

}

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

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

}

32.已知字符'A'的ASCII碼值為65,以下語句的輸出結果是【】。

charch='B';

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

33.度為10的線性表進行冒泡排序,最壞情況下需要比較的次數為______。

34.在面向對象程序設計中,從外面看只能看到對象有外部特征,而不知道也無須知道數據的具體結構以及實現操作的算法,這稱為對象的______。

35.以下程序用于判斷a、b、c能否構成三角形,若能,輸出YES,否則輸出NO。當給a、b、c輸入三角形三條邊長時,確定a、b、c能構成三角形的條件是需同時滿足三個條件:a+b>c,a+c>b,b+c>a。請填空。

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&C);

if(())printf("YES\n");/*a、b、c能構成三角形*/

elseprintf("NO\n");/*a、b、c不能構成三角形*/

}

36.#define命令出現在程序中函數的外面,宏名的有效范圍為______。

37.排序是計算機程序設計中的一種重要操作,常見的排序方法有插入排序、【】和選擇排序等。

38.下面程序的功能是:計算1~10之間的奇數之和與偶數之和,請填空。

#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);}

39.以下程序的功能是將字符串s中的數字字符放人d數組中,最后輸出d中的字符串。例如,輸入字符串abc123edf456gh,執行程序后輸出123456。請填空。

#include<stdio.h>

#include<ctype.h>

main()

{chars[80],d[80];inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(【】){d[j]=s[i];j++;)

d[j]='\0';

puts(D);

}

40.以下程序通過函數指針p調用函數fun,請在填空欄內寫出定義變量p的語句。

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

p=fun;p(&a,&b);

……

}

三、1.選擇題(20題)41.以下各選項企圖說明一種新的類型名,其中正確的是______。

A.typedefvlint;

B.typedefv2=int

C.typedefintv3;

D.typedefv4:int

42.有以下程序:#include<stdio.h>main(){unsignedinta;intb=-1;a=b;printf("%u",a);程序運行后的輸出結果是()。

A.-1B.65535C.32767D.-32768

43.已定義下列函數:intfun(int*p){return*p;)fun函數返回值是()。

A.不確定的值B.一個整數C.形參p中存放的值D.形參p的地址值

44.有以下程序main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若運行時從鍵盤上輸入:6,5,65,66<回車>。則輸出結果是

A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6

45.有以下程序

#inGlude<stdlib.h>

structNODE{

intnum;

structNODE*next;

}

main()

{structNODE*p,*q,*r;

intsum=0;

p=(structNODE*)malloc(sizeof(structNODE));

q=(structNODE*)malloc(sizeof(structNODE));

r=(stnlctNODE*)malloc(sizeof(structNODE));

p->num=1;q->num=2;r->num=3;

p->next=q;q->next;r;r->next=NULL;

sum+=q->next->Num,sum+=p->num;

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

}

執行后輸出結果是

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

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

A.程序設計過程中的主要工作是編制程序

B.程序設計的主要目標是編制出運行結果正確的程序

C.不良的程序設計風格會增加程序的復雜性

D.上述三種說法都不對

47.如果要限制一個變量,命名其只能為本文件所用,必須通過()來實現。

A.外部變量說明B.靜態內部變量C.靜態外部變量D.局部變量說明

48.在下列#include命令中,正確的一條是()

A.#include[string.h]

B.#include{math.h}

C.#include(stdio.h)

D.#include<stdio.h>

49.關于結構化程序設計原則和方法描述錯誤的是()。

A.選用的結構只準許有一個入口和一個出口

B.復雜結構應該用嵌套的基本控制結構進行組合嵌套來實現

C.不允許使用GOTO語句

D.語言中所沒有的控制結構,應該采用前后一致的方法來模擬

50.下列描述中正確的是()。

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產品的生產率問題

C.軟件工程的主要思想是強調在軟件開發過程中需要應用工程化原則

D.軟件工程只是解決軟件開發中的技術問題

51.若有以下函數首部intfun(doublex[10],int*n)則下面針對此函數的函數聲明語句中正確的是______。A.intfun(doublex,int*n);

B.intfun(double,int);

C.intfun(double*x,intn);

D.intfun(double*,int*);

52.有以下程序:#include<stdio.h>main(){inti,s=0;for(i=1;i<10;i+=2)s+=i+1;printf("%d\n",s);}程序執行后的輸出結果是()。

A.正整數1~9的累加和B.正整數1~10的累加和C.正整數1~9中奇數之和D.正整數1~10中偶數之和

53.下列程序的輸出結果是______。#include<stdio.h>main(){inti,j,k,a=3,b=2;i=(--a==b++)?--a;++b;j=a++;k=b;printf("i=%d,j=%d,k=%d\n",i,j,k);}

A.i=2,j=1,k=3B.i=1,j=1,k=2C.i=4,j=2,k=4D.i=1,j=1,k=3

54.數據庫系統的核心是()。

A.數據模型B.數據庫管理系統C.數據庫D.數據庫管理員

55.以下程序的輸出結果是_______。#include<string.h>main(){char*a="abcdefghi";intk;fun(a);puts(a);}fun(char*s){intx,y;charc;for(x=0,y=strlen(s)-1;x<y;x++,y--){c=s[y];s[y]=s[x];s[x]=c;}}

A.ihgfedcbaB.abcdefghiC.abcdedcbaD.ihgfefghi

56.若有以下定義和語句:char*s1="12345",*s2="1234";printf("%d\n",strlen(strcpy(s1,s2)));則輸出結果是______。

A.4B.5C.9D.10

57.已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是

A.acbedB.decabC.deabcD.cedba

58.若a為int類型,且其值為3,則執行完表達式a+=a-=a*a后,a的值是()。

A.-3B.9C.-12D.6

59.下述關于數據庫系統的敘述中正確的是______。

A.數據庫系統減少了數據冗余

B.數據庫系統避免了一切冗余

C.數據庫系統中數據的一致性是指數據類型的一致

D.數據庫系統比文件系統能管理更多的數據

60.有以下程序main(){unsignedchara,b;a=4|3;b=4&3;printf("%d%d\n",a,b);}執行后輸出結果是

A.70B.7C.11D.430

四、選擇題(20題)61.在C程序中有如下語句:char*func(intx,inty);它是()。

A.對函數func的定義。B.對函數func的調用。C.對函數func的原型說明。D.不合法的

62.以下語句的執行結果是()。

intm=0,s=1;

do{

s+=m++;

}while(m<6);

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

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

63.

64.

65.有以下程序:

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

A.0B.一1C.1D.7

66.設intx=7,則~x的值是()。

A.-8B.7C.-1D.1

67.

68.

69.“商品”與“顧客”兩個實體集之間的聯系一般是()。

A.一對一B.多對一C.一對多D.多對多

70.C語言可執行程序的開始執行點是()。

A.包含文件中的第一個函數B.程序中第一個函數C.程序中的main()函數D.程序中第一條語句

71.有下列二叉樹.對此二叉樹前序遍歷的結果為()。

A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXY7D.ABDYECFXZ

72.

73.

74.下列判斷正確的是()。

A.chara="ABCD":等價于char*a;*a="ABCD":

B.charstr[10]={"ABCD"}:等價于charstr[10];str[]={"ABCD"};

C.char*s="ABCD":等價于chars;*s="ABCD";

D.charc[5]="ABCD",d[5]="ABCD":等價于charc[5]-d[5]="ABCD";

75.若有以下語句:typedefstructS{int9;charh;}T;以下敘述中正確的是()。

A.可用s定義結構體變量B.可用T定義結構體變量C.S是struct類型的變量D.T是structS類型的變量

76.

77.有以下程序:

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

A.2,4,3,9,12,12,11,11,18,9,

B.3,4,2,7,9,8,6,5,11,10,

C.2,3,1,6,8,7,5,4,10,9,

D.1,2,3,6,8,7,5,4,10,9,

78.

79.

80.有以下程序

五、程序改錯題(1題)81.給定程序MODll.C中,函數fun的功能是:在有n名學生,2門課成績的結構體數組std中,計算出第l門課程的平均分,作為函數值返回。例如,主函數中給出了4名學生的數據,則程序運行的結果為:第l門課程的平均分是:76.125000請改正函數fun中指定部位的錯誤,使它能得出正確的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.請編寫一個函數proc(),它的功能是:將str所指字符串中所有下標為奇數位置的字母轉換為大寫(若該位置上不是字母,則不轉換)。例如,若輸入abcdel23,則應輸出aBcDe123。注意:部分源程序給出如下。請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.A“--k”是先自減再使用,所以第1次判斷條件即while(4),條件為真輸出k的值,k=4-3,結果為1;第2次判斷條件即while(0),條件為假,結束循環,輸出回車換行符。故本題答案為A選項。

2.B解析:指針變量p指向數組a的第5個元素,p[3]在原指向基礎上移3個單位,指針變量p將指向第8個元素(下標為7的元素),值為7。

3.C結構化程序設計的原則和方法之一是限制使用GOT0語句,但不是絕對不允許使用GOT0語句。其他三項為結構化程序設計的原則。

4.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252化成二進制為0000001010101010,兩者相與得0000001000101000。

5.C數據的邏輯結構是描述數據之間的關系,分兩大類:線性結構和非線性結構。線性結構是n個數據元素的有序(次序)集合,指的是數據元素之間存在著“一對一”的線性關系的數據結構。常用的線性結構有:線性表,棧,隊列,雙隊列,數組,串。非線性結構的邏輯特征是一個結點元素可能對應多個直接前驅和多個后驅。常見的非線性結構有:樹(二叉樹等),圖(網等),廣義表。

6.B

7.D繼承是面向對象的方法的一個主要特征,是使用已有的類的定義作為基礎建立新類的定義技術。廣義的說,繼承是指能夠直接獲得已有的性質和特征,而不必重復定義它們,所以說繼承是指類之間共享屬性和操作的機制。

8.C本題考查了兩層for循環。外層循環增量i的值作為內層循環執行次數的值使用。

9.D

10.D本題考查數組元素的地址的引用。A中,p+5引用的是a[5]的地址,而數組a只有5個元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用錯誤(注:數組元素下標從0開始);B中,*a+1指的是將數組a的第一個元素加1;選項C中,不存在這種引用方式;D中,&a[0]引用的是數組的首地址。

11.C解析:每個C程序有且只有一個主函數main(),且程序必須從main函數開始執行,并在main()函數中結束。

12.A要寫入字符數據,需要使用格式字符%c,選項D錯誤;換行符需要使用‘\\n’,而不是‘\\r\\n’,選項B錯誤;選項C中未使用換行符,不滿足題意。故本題答案為A選項。

13.C

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

15.A宏替換是在編譯階段前的預處理階段,對程序中的宏完成文本替換,因此宏替換不占用運行時間,選項A正確;預處理命令行無須在源文件的開頭,它可以出現在程序的任何一行的開始部位,其作用一直持續到源文件的末尾,選項B錯誤;在源文件的一行上至多只能有一條預處理命令,選項C錯誤;宏名通常使用大寫字母表示,這并不是語法規定,只是一種習慣,選項D錯誤。本題答案為A選項。

16.B解析:本題涉及字符串的兩個最基本的概念。①字符串的長度是指字符串中字符的個數,但不包含字符串結束符;②以反斜線“\\”開頭的特殊字符序列,意思是把反斜線后面的字符序列轉換成特定的含義,而不是原來的含義,不包含在字符串長度之內,“\\”連同后面的字符為一個長度。

17.C

18.Cscanf函數要求為:輸入的變量為地址形式。4個選項中,C選項符合要求。故本題答案為C選項。

19.B對于標識符的長度(即一個標識符允許的字符個數),C語言編譯系統是有規定的,即標識符的前若干個字符有效,超過的字符將不被識別。不同的C語言編譯系統所規定的標識符有效長度是不同的。故本題答案為B選項。

20.A參數r的傳遞是地址傳遞,函數調用會改變其值。函數f的功能是:判斷n是否為3或5的倍數,如果是,則將指針r所指的內存空間賦值為n除以3或5的商;否則n遞減,直到它可以被3或5整除。初始時調用函數f(7,&r);n=7,執行else子句,調用f(6,&r1);后n=6,執行語句if(n%3==0)r1=n/3;,此后執行語句*r=rl;。所以r=6/3=2。

21.10111011解析:賦值表達式m=011中的常數011為八進制,++m后以十進制數格式“%d”輸出為10。

22.O(nlog2n)

23.可行性研究可行性研究解析:軟件生命周期一般包括可行性研究與需求分析、設計、實現、測試、交付使用及維護等,還可以將軟件生命周期分為三個階段:①軟件定義階段:可行性研究和需求分析;②軟件開發階段:設計、實現和測試;③軟件運行維護階段:交付使用和維護。

24.數據的邏輯結構數據的邏輯結構解析:數據的邏輯結構是對數據元素之間的邏輯關系的描述,它可以用一個數據元素的集合和定義在此集合中的若干關系來表示。

25.8181解析:將S(i+j)展開來有:S(i+j)=S(6+8)=4×6+8×6+8+1=81。

26.800800解析:一個16x16點陣的字形碼需要16x16/8=32字節的存儲空間,所以300個漢字信息需要9600個字節。

27.文檔文檔解析:計算機軟件是計算機系統中與硬件相互依存的另一部分,是包括程序、數據以及相關文檔的完整集合。

28.!knahT!knahT解析:此程序是一道次序顛倒題,即輸入'Thank!',則輸出'!knahT'。

29.1919解析:根據二叉樹的性質:在任意一棵二叉樹中,度為。的結點(即葉子結點)總是比度為2的結點多一個。本題中度為2的結點數為18,故葉子結點數為18+1=19個。

30.00解析:在函數fun()中,while((*n)-)是先引用*n的值,再做(*n)--運算,所以循環結束時

溫馨提示

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

評論

0/150

提交評論