2021-2022年河北省承德市全國計算機等級考試C語言程序設計真題二卷(含答案)_第1頁
2021-2022年河北省承德市全國計算機等級考試C語言程序設計真題二卷(含答案)_第2頁
2021-2022年河北省承德市全國計算機等級考試C語言程序設計真題二卷(含答案)_第3頁
2021-2022年河北省承德市全國計算機等級考試C語言程序設計真題二卷(含答案)_第4頁
2021-2022年河北省承德市全國計算機等級考試C語言程序設計真題二卷(含答案)_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年河北省承德市全國計算機等級考試C語言程序設計真題二卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.則以下函數(shù)調(diào)用語句錯誤的是()。#include<stdio.h>intadd(inta,intb){return(a+b)}main(){intk,(*f)(),a=5,b=10;f=add;...}A.k=f(a,b);B.k=add(a,b);C.k=(*f(a,b);D.k=*f(a,b);

2.第

24

下面程序段的運行結果是

char*p="abcdefgh";

p+=3;

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

A.8B.12C.4D.7

3.若有定義“intb[8],*p=b;”,則p+6表示()。

A.數(shù)組元素b[6]的值B.數(shù)組元素b[6]的地址C.數(shù)組元素b[7]的地址D.數(shù)組元素b[0]的值加上6

4.健壯的算法不會因非法的輸入數(shù)據(jù)而出現(xiàn)莫名其妙的狀態(tài)()

A.對B.錯

5.在長度為n的有序線性表中進行二分查找,最壞情況下需要比較的次數(shù)是A.O(n)

B.O(n2)

C.O(log2n)

D.O(nlog2n)

6.若執(zhí)行下述程序時,若從鍵盤輸入6和8,結果為()。main(){inta,b,s;scanf("%d%dt",&a,&B);s=a:if(s=B)s*=s;printf("%d",s);}

A.36B.64C.48D.以上都不對

7.有以下程序段當執(zhí)行上述程序段,從鍵盤上輸A,555667777123后,y的值為()。

A.566.0B.55566.0C.7777.0D.566777.0

8.設棧S和隊列Q的初始狀態(tài)為空,元素e1,e2,e3,e4,e5和e6依次通過棧S,一個元素出棧后即進隊列Q,若6個元素出隊的序列是e2,e4,e3,e6,e5,e1,則棧S的容量至少應該是()。

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

9.在軟件設計中,不屬于過程設計工具的是()。

A.PDLB.DFD圖C.PAD圖D.N—S圖

10.在深度為5的滿二叉樹葉中,葉子結點的個數(shù)為()。

A.32B.31C.16D.15

11.下列數(shù)據(jù)結構中,能用二分法進行查找的是()。

A.順序存儲的有序線性表B.結性鏈表C.二叉鏈表D.有序線性鏈表

12.運行下列程序時,若輸入的數(shù)據(jù)為“1,2,3”,則輸出結果是()。main{floata,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a<b){t=a;a=b.b=t;)if(a<c){t=a;a=c;c=t;)it(b<c){t=b;b=C;c—=;)printf("%f\n%f\n%f\n",a,b,c);}A.1.002.003.00B.1.003.002.00C.132D.3.000002.000001.00000

13.

14.

15.有以下程序:int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf("%d,%d,%d\n",*p,*q,*r);}程序運行后輸出結果是______。

A.7,8,8B.7,8,7C.8,7,7D.8,7,8

16.#define能作簡單的替代,用宏來替代計算多項式5*x*x+5*x+5的值的函數(shù)f,正確的宏定義語句為()。

A.#definef(x)5*x*x+5*x+5

B.#definef5*X*x+5*x+5

C.#definef(a)(5*a*a+5*a+5)

D.#define(5*x*x+5*x+5)f(x)

17.若果要求一個線性表既能較快查找,又能適應動態(tài)變化的要求,可以采用()查找方法。

A.分塊B.順序C.二分D.散列

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

A.構成C程序的基本單位是函數(shù)

B.可以在一個函數(shù)中定義另一個函數(shù)

C.main函數(shù)必須放在其他函數(shù)之前

D.C函數(shù)定義的格式是K&R格式

19.有以下程序:#includedstdi0.h>#definef(x)X*x*xmain(){inta=3,S,t;s=f(a+1);t=f((a+1));printf("%d,%d\n",S,t);}程序運行后的輸出結果是()。A.10,64B.10,10C.64,10D.64,64

20.下列程序的運行結果是()。#include<stdio.h>voidfun(int*S,int*p){staticintt=3:*p=s[t];t--;}voidmain{inta[]={2,3,4,5),k;intx;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}}A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5

二、2.填空題(20題)21.下列程序的運行結果是______。

main()

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

printf("%d,",x<y?y:x);

printf("%d,",z<y?x++:y++);

printf("%d,%d",x,y);

}

22.按數(shù)據(jù)流的類型,結構化設計方法有兩種設計策略,它們是變換分析設計和______。

23.如下語句printf("%c\n",'B'+40);在執(zhí)行后的輸出結果是【】。

24.下面程序的功能是:計算1~20之間的奇數(shù)之和與偶數(shù)之和,請?zhí)羁帐钩绦蚬δ芡暾?/p>

#include<stdio.h>

main()

{inta=0,b=0,c=0,i;

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

{a+=i;

();

c+=b;

}

printf("偶數(shù)之和=%d\n",A);

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

}

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

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%5ld\n",k);}

26.有以下語句段

intn1=10,n2=20;

printf("【】",n1,n2);

要求按以下格式輸出n1和n2的值,每個輸出行從第一列開始,請?zhí)羁铡?/p>

n1=10

n2=20

27.下述函數(shù)統(tǒng)計一個字符串中的單詞個數(shù),單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】='')flag=0;

elseif(【】){flag=1;num++}

}

return【】}

28.以下程序的運行結果是【】。

#defineMAL(a,b)(a>b?a:b)+1

main()

{inti=6,j=8;

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

}

29.算法的復雜度主要包括【】復雜度和空間復雜度。

30.下列程序的功能是把從終端讀入的文本(用@作為文本結束標志)輸出到一個名為bi.dat的新文件中。請?zhí)羁铡?/p>

#include"stdio.h"

FILE*fp;

{charch;

if((fp=fopen("bi.dat","w"))==NULL)exit(0);

while(______)fputc(ch,fp);

______;

}

31.一個模塊直接調(diào)用的其他模塊的模塊個數(shù)稱為______。

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

main()

{inta[]={31,27,20,12,6,1},*p=a;

p++;

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

}

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

#include<stdio.h>

main()

{inta=2,b=1,c=2;

if(a<b)

if(b<0)c=0;

elsec++;

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

}

34.以下程序的定義語句中,x[1]的初值是(),程序運行后輸出的內(nèi)容是()。#include<stdio.h>main(){intx[]={1,2,3,4,5,6,7,8,9,10,1l,12,13,14,15,16},*p[4],i;for(i=0;i<4;i++){p[i]=&x[2*i+1],printf("q%d”,p[i][0]);}printf("\n");}

35.已知字符A的ASCII代碼值為65,以下程序運行時若從鍵盤輸入:B33<回車>,則輸出結果是【】。

#include

main()

{chara,b;

a=getchar();scanf("%d",&b);

a=a-'A'+'0';b=b*2;

printf("%c%c\n",a,b);

}

36.一個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。

37.以下條件表達式可計算:1+|a|的值,請?zhí)羁铡?/p>

a>=0?【】:【】

38.mysulen函數(shù)的功能是計算str所指字符串的長度,并作為函數(shù)值返回。請?zhí)羁铡?/p>

intmystrlen(Char*str)

{inti;

for{i=0;!='\0';i++);

return(______);

}

39.以下程序是求矩陣a、b的和,結果存入矩陣c中,請?zhí)羁铡?include<stdio.h>main(){inta[4][4]={1,2,6,7},{0,4,2,-8},{1,4,5,2},{2,4,6,8}};intb[4][4]={{-4,0,7,9},{2,-7,7,4),{6,9,0,1),{8,8,6,5)};inti,j,c[4][4];for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=();for(i=0;i<4;i++)for(j=0;j<4;j++)printf("%d",c[i][j]);}

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

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

{for(j=0;j<3;j++)printf("%d",a[i][j]);

printf("\n");

}

}

三、1.選擇題(20題)41.以下程序運行后的輸出結果是______。intd=1;fun(intp){staticintd=d;d+=p;printf("%d",d);returnd;}main(){inta=3;printf("%d\n",fun(a+fun(d)));}

A.699B.669C.61515D.6615

42.視圖設計一般有3種設計次序,下列不屬于視圖設計的是______。

A.自頂向下B.由外向內(nèi)C.由內(nèi)向外D.自底向上

43.有下面程序段

#include"stdio.h"

#include"string.h"

main()

{chara[3][20]={{"china"},{"isa"},{"bigcountry!"}};

chark[100]={0},*p=k;

inti;

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

{p=strcat(p,a[i]);}

i=strlen(p);

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

則程序段的輸出結果是

A.18B.19C.20D.21

44.以下敘述中不正確的是

A.預處理命令行都必須以#號開始

B.在程序中凡是以#號開始的語句行都是預處理命令行

C.宏替換不占用運行時間,只占編譯時間

D.在以下定義是正確的:#definePI3.1415926;

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

A.在C程序中,逗號運算符的優(yōu)先級最低

B.在C程序中,APH和aph是兩個不同的變量

C.若變量a和b類型相同,執(zhí)行了賦值表達式a=b后b中的值將放入a中,而b中的值不變

D.當從鍵盤輸入數(shù)據(jù)時,對于整型變量只能輸入整型數(shù)值,而實型變量只能輸入實型數(shù)值

46.有以下程序main(){inti=0,s=0;for(;;){if(i==3‖i==5)continue;if(i==6)break;i++;s+=i;};printf("%d\n",s);}程序運行后的輸出結果是

A.10B.13C.24D.程序進入死循環(huán)

47.

A.if(x>0)y=1;elseif(x==0)y=0;elsey=-1;

B.y=0;if(x>0)y=1;elseif(x<0)y=-1;

C.y=0;if(x>=0)if(x>0)y=1;e1sey=-1;

D.if(x>=0)if(x>0)y=1;elsey=0:elsey=-1;

48.設有表示學生選課的三張表,學生s(學號,姓名,性別,年齡,身份證號),課程c(課號,課名),選課SC(學號,課號,成績),則表sc的關鍵字(鍵或碼)為()。

A.課號,成績B.學號,成績C.學號,課號D.學號,姓名,成績

49.以下數(shù)組定義中錯誤的是()。

A.intx[][3]={0};

B.intx[2][3]={{1,2},{3,4},{5,6}};

C.intx[][3]={{1,2,3},{4,5,6}};

D.intx[2][3]={1,2,3,4,5,6};

50.下面是對宏定義的描述,不正確的是______。

A.宏不存在類型問題,宏名無類型,它的參數(shù)也無類型

B.宏替換不占用運行時間

C.宏替換時先求出實參表達式的值,然后代入形參運算求值

D.宏替換只不過是字符替代而已

51.有以下程序:main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q,a,b);}程序運行后的輸出結果是()。

A.8,7,8,7B.7,8,7,8C.8,7,7,8D.7,8,8,7

52.下列程序的功能:給r輸入數(shù)據(jù)后計算半徑為r的圓面積s。程序在編譯時出錯。

main()

/*Beginning*/

{intr;floats;

scanf("%d",£r);

star*r*r;

printf("s=%f\n",s);

}

出錯的原因是()。

A.注釋語句書寫位置錯誤

B.存放圓半徑的變量r不應定義為整型

C.輸出語句中格式描述符非法

D.計算圓面積的賦值語句使用非法變量

53.下述對C語言字符數(shù)組的描述中錯誤的是()

A.字符數(shù)組可以存放字符串

B.字符數(shù)組中的字符串可以整體輸入、輸出

C.可以在賦值語句中通過賦值運算符“=”對字符數(shù)組整體賦值

D.不可以用關系運算符對字符數(shù)組中的字符串進行比較

54.有下列程序:

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

55.若有如下程序:main(){intn;for(n=0;n<9;n++){if(n<1){printf("%d",n);continue;}if(n==4)break;printf("%d",n);}}則循環(huán)體執(zhí)行的次數(shù)是()。

A.1B.5C.9D.死循環(huán)

56.有以下程序:#include<string.h>main(intargc,char*argv[]){inti,len=0;for(i=1;i<argc;i+=2)len+=strlen(argv[i]);printf("%d\n",len);}經(jīng)編譯鏈接后生成的可執(zhí)行文件是ex.exe,若運行時輸入以下帶參數(shù)的命令行exabcdefgh3k44執(zhí)行后輸出的結果是()。

A.14B.12C.8D.6

57.有以下函數(shù)fun(char*a,char*b){while((*a!='\0')&&(*b!='\0')&&(*a==*b)){a++;b++;}return(*a-*b);}該函數(shù)的功能是______。

A.計算a和b所指字符串的長度之差

B.將b所指字符串連接到a所指字符串中

C.將b所指字符串連接到a所指字符串后面

D.比較a和b所指字符串的大小

58.對下述程序的判斷中,正確的是

#include<stdio.h>

voidmain()

{char*p,s[128];

p=s;

while(strcmp(s,"End"))

{printf("Inputastring:");gets(s);

while(*p)

putchar(*p++);}}

A.此程序循環(huán)接收字符串并輸出,直到接收字符串"End"為止

B.此程序循環(huán)接收字符串,接收到字符串"End"則輸出,否則程序終止

C.此程序循環(huán)接收字符串并輸出,直到接收字符串"End"為止,但因為代碼有錯誤,程序不能正常工作

D.此程序循環(huán)接收字符串并將其連接在一起,直到接收字符串"End"為止,輸出連接在一起的字符串

59.有以下程序:main(){chars[]="ABCD",*p;for(p=s+1;p<s+4;p++)printf("%s\n",p);}程序運行后的輸出結果是()。

A.ABCDBCDCDDB.ABCDC.BCDD.BCDCDD

60.下列關于關系運算的敘述中正確的是()。

A.投影、選擇、連接是從二維表的行的方向來進行運算

B.并、交、差是從二維表的列的方向來進行運算

C.投影、選擇、連接是從二維表的列的方向來進行運算

D.以上三種說法都不對

四、選擇題(20題)61.

62.有三個關系R、S和T如下:

由關系R和S通過運算得到關系T,則所使用的運算為()。

A.笛卡爾積B.交C.并D.自然連接

63.有以下程序執(zhí)行后的輸出結果是()。

A.5,11B.5,5C.11,11D.11,5

64.“年齡在18~25之間”這種約束是屬于數(shù)據(jù)庫當中的()。A.A.原子性措施B.一致性措施C.完整性措施D.安全性措施

65.有以下程序執(zhí)行程序時,給變量X輸入l0,程序的輸出結果是()。

A.55B.54C.65D.45

66.第

11

若有定義: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;strcpy(p=&a[1],st+2);

67.

下面for語句的循環(huán)次數(shù)為()。

for(x=1,y=0;(y!=19)&&(x<6);x++);

A.是無限循環(huán)B.循環(huán)次數(shù)小定C.最多執(zhí)行6次D.最多執(zhí)行5次

68.設有如下定義:intx=10,y=3,z;則語句printf("%d\n",z=(x%y,x/y));的輸出結果是()。

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

69.以下程序的輸出結果為

main()

{

char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};

char**p;

inti;

p=alpha;

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

printf("%s",p[i]);

printf("\n");

}

A.ABCDEFGHIJKLB.ABCD

C.ABCDEFGHIJKLMNOPD.AEIM

70.

71.以下選項中正確的語句組是()。

A.char*s;8={1.BOOK!”}i

B.char*s;8=”BOOK!”;

C.charS[10];S=”BOOK!”;

D.charS[];S=”BOOK!”;

72.下列定義數(shù)組的語句中,正確的是()。

A.intN=10;intx[N]:

B.#defineNl0;intx[N];

C.intx[0..10];

D.intx[];

73.

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

#include<stdio.h>

main

{inta=0,i;

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

{switch(i)

{case0:

case3:a+=1;

case1;

case2:a+=2;

default:a+=3;

}

}

printf("%d",a);

}

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

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

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

75.已知數(shù)據(jù)表A中每個元素距其最終位置不遠,為節(jié)省時間,應采用的算法是()

A.堆排序B.直接插入排序C.快速排序D.直接選擇排序

76.在軟件開發(fā)中,需求分析階段可以使用的工具是()。A.N—s圖B.DFD圖C.PAD圖D.程序流程圖

77.

78.有三個關系R、S和T如下:

則由關系R和S得到關系T的操作是()。

A.自然連接B.交C.投影D.并

79.對字符數(shù)組s賦值,不合法的一個是()。

A.chars[]="Beijing"

B.chars[20]={"Beijing"}

C.chars[20];s="Beijing"

D.chars[20]={’B,’e’,’i’,’j’,’i’,’n’,’g’}

80.以下關于宏的敘述中正確的是()。

A.宏替換沒有數(shù)據(jù)類型限制

B.宏定義必須位于源程序中所有語句之前

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

D.宏調(diào)用比函數(shù)調(diào)用耗費時間

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:計算S=f(-n)+(-n+1)+…+f(O)+f(1)+(2)+…+f(n)的值。例如,當n為l0時,函數(shù)值應為22.550361。f(x)函數(shù)定義如下:請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.請編寫函數(shù)proc,其功能是:計算并輸出下列多項式值。

S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)

例如,若主函數(shù)從鍵盤給n輸入20后,則輸出為S=0.680803。

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

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

試題程序:

#includet:stdio.h>

doubleproc(intn)

{

}

voidmain

{

intn;

doubleslim;

printf("\nInputn:");

scanf("%d",&n);

sum=proc(n)。

printf("\ns=%f\n",sum);

}

參考答案

1.DD選項中*f(a,b)表示調(diào)用后返回一個指向整型數(shù)據(jù)的地址指針,即該函數(shù)的返回值為指針類型,所以不能將其賦值給整形變量k。

2.C在本題中,程序段首先定義了字符型指針變量p,并使其指向一個字符串,然后將指針變量p加3,即使其指向字符串的第四個元素。然后執(zhí)行輸出語句,通過輸出語句的輸出格式我們可以知道,最后輸出的是一個十進制數(shù)的整型數(shù)值,其輸出列表為strlen(strcpy(P,″ABCD″))。這就要求我們了解strlen函數(shù)和strcpy函數(shù)的作用。

strcpy的調(diào)用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串復制到目的地址中,這種復制將覆蓋原來的字符串。strcat函數(shù)的功能是將源地址的字符串復制到目的地址字符串的后面。

strlen的調(diào)用格式是:strlen(字符串地址),其功能是返回字符串中字符的個數(shù)。

那么程序中執(zhí)行strcpy(P,″ABCD″)后指針變量p所指向的字符串為“ABCD”,該字符串中字符的個數(shù)為4,那么執(zhí)行strlen后,程序最終輸出的結果是4。因此本題正確的答案是C。

3.B指針中存放的是變量的地址,指針也可以進行增減運算,這時指針移動的最小單位是一個存儲單元,而不是一個字節(jié)。所以題中“P+6”指的是將指針向后移動了6個存儲單元,即指向uE63,存放的是b[6]的地址。

4.A

5.C解析:二分查找法也稱為折半查找法。它的基本思想是:將n個元素分成個數(shù)大致相同的兩半,取a[n/2]與欲查找的x作比較,如果x=a[n/2],則找到x,算法終止;如果x<a[n/2],則只要在數(shù)組a的左半部繼續(xù)搜索x(這里假設數(shù)組元素呈升序排列);如果x>a[n/2],則只要在數(shù)組a的右半部繼續(xù)搜索x。每次余下n/(2i)個元素待比較,當最后剩下一個時,即n/(2i)=1。故n=2i;所以i=log2n。

6.B

7.A本題考查的是格式輸)ki$i數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中,其中的格式命令可以說明最大域寬。在百分號(%)與格式碼之間的整數(shù)用于限制從對應域讀入的最大字符數(shù)。因此j的值為55,y的值為566.0,字符數(shù)組nanle的值為7777123。故本題答案為A)。

8.C

9.B常見的過程設計工具有圖形土具(程序流程圖、N—S圖、PAD圖、HIP0圖)、表格工具(判定表)和語言工具(PDL)。DFD是數(shù)據(jù)流圖,是描述數(shù)據(jù)處理過程的工具。

10.C根據(jù)二叉樹的性質及定義,一棵深度為k且有2k-1個結點的二叉樹為滿二叉樹。滿二叉樹的葉子結點為最后一層的結點數(shù),又根據(jù)滿二叉樹的性質,在滿二叉樹的第i層上至多有2i-1個結點。因此深度為5的滿二叉樹的葉子結點數(shù)為25-1=16個。

11.A\nA。【解析】二分法查找只適用于順序存儲的有序線性表,對于順序存儲的非有序線性表和線性鏈表,都只能采用順序查找。

\n

12.D本題考查if語句。第1個if語句,如果a<b,則a與b交換;第2個if語句,如果a<c,則a與c交換;第3個if語句,如果b<2t,則b與c交換。3個if語句結合起來實現(xiàn)的功能就是將a、b、C按從大到小排序。

13.B

14.D

15.B解析:f函數(shù)的功能是返回地址為x,y的兩個數(shù)中值鉸的數(shù)的地址,本題輸出結果是7,8,7。

16.C解析:帶參數(shù)宏的格式為:#define標識符(形參表)形參表達式。其功能是:在預處理程序中將程序中出現(xiàn)的所有帶實參的宏名,展開成由實參組成的表達式。

17.A

18.A解析:本題考查C語言的綜合基礎知識。構成C程序的基本單位是函數(shù),一個C程序總是從main函數(shù)開始執(zhí)行,而不論main函數(shù)在整個程序中的位置如何。C語言的函數(shù)定義都是互相平行、獨立的,在定義函數(shù)時,一個函數(shù)內(nèi)不能定義另一個函數(shù)。C函數(shù)定義的一般格式有兩種:傳統(tǒng)格式和現(xiàn)代格式。傳統(tǒng)格式也稱K&R格式,是早期編譯系統(tǒng)使用的格式;現(xiàn)代格式又稱ANSI格式,是現(xiàn)代編譯系統(tǒng)使用的格式。

19.A本題考查帶參數(shù)的宏定義。第一次函數(shù)調(diào)用求S的值,x=a+1,所以X*X*X應寫成a+1*a+1*a+1,沒有括號優(yōu)先級,結果為l0,第二次函數(shù)調(diào)用x*X*X可寫成(a+1)*(a+1)*(a+1),所以結果為43=64。

20.A依據(jù)fun函數(shù),可知其要實現(xiàn)的功能是將S中第(t+1)個元素以前的元素逆置賦給數(shù)組P。由于fun中函數(shù)定義了靜態(tài)變量t=3,因此,main函數(shù)中調(diào)用函數(shù)fun(a,&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)x,最后輸出x數(shù)組。

21.22132,2,1,3解析:本題考查++,--運算符和條件運算符的使用。

“表達式1?表達式2:表達式3”的功能是:表達式1的值若非0,則計算表達式2的值,且表達式2的值為最終結果;若表達式1的值為0,則計算表達式3的值,且為最終結果。

本題中,x=1,y=2時,x<y成立,輸出y的值2;y=2,z=3時,z<y不成立,執(zhí)行y++,輸出2后y值增1,所以最后一個輸出x的值不變?yōu)?,y的值為增加后的3。

22.事務分析設計事務分析設計解析:典型的數(shù)據(jù)流圖有兩種,即變換型和事務型。按照這兩種類型把設計方法分為兩類,即變換分析設計和事務分析設計。

23.jj解析:在C程序中的字符量可參與任何整數(shù)運算。

24.b=i+1b=i+1解析:分析for循環(huán)條件,i=0說明循環(huán)從0開始判斷,i+=2是間隔為2的數(shù),i<=20就是控制數(shù)是20之內(nèi)的a+=i,就是所有偶數(shù)的和,如果從1開始(b=i+1)間隔為2的數(shù)(1,3,5,7,9,11,13,15,17,19)相加就是所有奇數(shù)的和。

25.k=5k=5解析:本題主要考查了函數(shù)的遞歸調(diào)用方法。g=0或\ue008g=1\ue009或g=2是遞歸的終止條件,然后用回代的方法從一個已知值推出下一個值,直到計算出最終結果。

26.n1=%d\nn2=%d\n或n1=%d\nn2=%d或n1=%2d\nn2=%2d\n或n1=%2d\nn2=%2dn1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2d\\n或n1=%2d\\nn2=%2d解析:printf函數(shù)有兩種參數(shù):格式控制參數(shù)和輸出項參數(shù),其中格式控制參數(shù)由兩種成分組成:格式說明和普通字符,普通字符將被簡單地復制顯示,格式說明項將引起一個輸出參數(shù)項的轉換與顯示,它是由“%”引出并以一個類型描述符結束的字符串。本題中,n1=和n2=就是普通字符,可以直接顯示,又因為n1,n2為整數(shù),所以格式說明項為%d,也可以在%與d之間加上域寬,另外還要在每行輸出結束時加轉義字符\\n進行換行。所以,應填寫n1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2dn或n1=%2d\\nn2=%2d。

27.*s++flag=0或*(s-1)=''num*s++\r\nflag=0或*(s-1)=''\r\nnum解析:在統(tǒng)計字符串單詞個數(shù)的算法中,本題的flag是為了記錄一個單詞是否結束。第13空應填*s++;如果某個字符不是空格,則必須判斷它是否是單詞,如是,則使得flag的標志為1,num的值加1。本題判斷方法是:先判斷s所指向的字符是否為空格,如果是則使得flag=0,否則判斷前一個字符是否是空格,如果是則說明這個字符是一個單詞的開始,將flag標志為1,num的值加1,如果不是,則不必記錄。故第14空應填flag=0或*(s-1)='';最后一個空格需填寫的是返回的單詞的個數(shù),即num。

28.99解析:用i和j替換宏MAL(a,b)小的參數(shù)a和b,(a>b?a:b)+1等價于(i>j?i:j)+1。因為6>8為假,則關系表達式i>j?i:j的值就是j的值,j=8,8+1=9,最后輸出9。

29.時間時間解析:算法的復雜度主要指時間復雜度和空間復雜度。所謂算法的時間復雜度,是指執(zhí)行算法所需要的計算工作量;算法的空間復雜度,一般是指執(zhí)行這個算法所需要的內(nèi)存空間。

30.(ch=getchar())!='@'fclose(fp)。(ch=getchar())!='@',fclose(fp)。解析:表達式z-=x<y?x++:++y相當于先執(zhí)行++y,再執(zhí)行z-=x<y?x:y,最后執(zhí)行x++,其中z-=x<y?x:y等價于z=z-(x<y?x:y),由于x值為3,y值為3,x<y不成立,返回y的值,z-y的值為-2,賦給z。

31.扇出扇出解析:在結構圖中,調(diào)用一個給定模塊的模塊個數(shù)稱為扇入,一個模塊直接調(diào)用的其他模塊個數(shù)稱為扇出。

32.1212解析:本題簽考查如何用指針引用數(shù)組元素。分析程序,首先定義了一個指向數(shù)組a的指針p,p指向數(shù)組的首地址,通過p++,將p指向a[1],p+2是將指針后移2位指向a[3],*(p+2)即是取a[3)的值12。

33.22解析:分析程序,a=2,b=-1,c=2時,if語句的表達式a<b不成立,不再柱下判斷,直接退出if語句,執(zhí)行后面的輸出語句,程序結束。在這個程序中a、b、c的值沒做任何改變。

34.2246822468解析:p為指向數(shù)組的指針變量,數(shù)組x[1]為數(shù)組x[]的第二個元素,值為2;進入for循環(huán)i=0時,p[0]=&x[1]…直到循環(huán)完畢,指針分別指向數(shù)組x[]中的第2、4、6、8個元素,所以第二個空白處應填2468。

35.1B1B解析:從鍵盤輸入后,有a=B,b=33。a=a-'A'+'0'='B'-'A'+'0'='1',b=b*2=66,在輸出時均需要把a,b轉化為字符型,因此輸出為1B。

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

37.1+a1-a1+a\r\n1-a解析:因為題目中求的是1+|a|的值,即1和a的絕對值之和。所以根據(jù)數(shù)學中求絕對值的規(guī)則,當a>=0時,絕對值取本身,當a<0時,絕對值取相反數(shù),再結合條件運算符的計算規(guī)則可得到本題的答案為a>=0。注意:逗號表達式的求值規(guī)則。

38.*(srt+i)或str[i]i*(srt+i)或str[i]\r\ni解析:求str指向的字符串長度的算法是:用一個變量i表示字符串中字符的位置,一開始賦值為0,取出i位置的字符,判斷是否為'\\0',若不是則i的值加1,如此循環(huán)直到取出的字符是'\\0'為止,此時i的值就是字符串的長度。由此可知,第一個空處應填第i位置上的字符*(str+i);第二個空格應該填字符串的長度i。

39.a[i][j]+b[i][j]a[i][j]+b[i][j]解析:求兩個矩陣的和只要將對應元素相加即可。

40.123056009123\r\n056\r\n009解析:數(shù)組a中元素的初值為:a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[12][0]=7、a[2][1]=8、a[2][2]=9。執(zhí)行第1個for循環(huán)后a[1][0]=0、a[2][0]=0、a[2][1)=0;第2個for循環(huán)的功能是將數(shù)組元素按照3行3列的格式輸出。

41.C解析:靜態(tài)局部變量在編譯時賦初值,即只賦韌值一次,在程序運行時它已有初值。以后每次調(diào)用時不再重新賦初值而只是保留上次函數(shù)調(diào)用結束時的值,而對自動變量賦初值,不是在編譯時進行的,而在函數(shù)調(diào)用時進行,每調(diào)用一次函數(shù)重新給一次初值,相當于執(zhí)行一次賦值語句。本題在程序開頭定義了全局變量d并賦初值1,在被調(diào)函數(shù)fun()中,定義了靜態(tài)局部變量d,初值為5。在第一次調(diào)用函數(shù)fun時,d初值為5,p由主函數(shù)傳遞過來的值為1,則d=d+p=5+1=6,由于d是靜態(tài)局部變量,在函數(shù)調(diào)用結束后,它仍保留d=6。再次調(diào)用fun函數(shù),d的初值為6,而由主函數(shù)傳遞的p的值為9,則此時d=d+p=6+9=15,最后打印輸出d的值并返回主函數(shù)。

42.B解析:視圖設汁一般有3種設計次序,它們分別是自頂向下、自底向上和由內(nèi)

向外,它們又為視圖設計提供了具體的操作方法,設計者可根據(jù)實際情況靈活掌握,可以

單獨使用也可混合使用。

注意:數(shù)據(jù)庫概念設計的過程:首先選擇局部應用,再進行局部視圖設計,最后

對局部視圖進行集成得到概念模式。

43.B解析:字符串連接函數(shù)streat的調(diào)用形式如下:strcat(s1,s2)。此函數(shù)將s2所指字符串的內(nèi)容連接到s1所指的字符串后面,并自動覆蓋s1串末尾的尾標,函數(shù)返回s1的地址值。

44.D解析:帶參數(shù)的宏定義如下:#define宏名(參數(shù))字符串。本題中,宏定義的作用是指定用標識符PI來代替“3.1415926”這個字符串,但宏定義不是C語句,不必在行末加分號。

45.D解析:在C語言的所有運算符中,逗號運算符的優(yōu)先級最低;C語言中的字母區(qū)分大小寫,所以APH和aph是兩個不同的變量;賦值表達式a=b表示將b的值賦給a,而b本身的值保持不變;當從鍵盤輸入數(shù)據(jù)時,對于整型變量可以輸入整型數(shù)值和字符,對于實型變量可以輸入實型數(shù)和整型數(shù)值等,選項D)錯。

46.D解析:程序中for循環(huán)中省略了判斷退出循環(huán)的表達式,for循環(huán)將由里面的break語句控制是否結束循環(huán),第一次循環(huán),第一條if語句后面括號里的表達式的值為假,所以該if語句不被執(zhí)行,執(zhí)行下面的第二條語句,此時該if語句表達式的值為假,所以該if語句也不執(zhí)行,執(zhí)行下面的語句,i++、s+=i,執(zhí)行完畢后i的值為1,s的值為1,如此循環(huán),直到第三次之后i,s的值都為3,繼續(xù)第四次循環(huán),顯然這時滿足第一條if語句的,執(zhí)行后面的continue該次循環(huán)結束從頭開始下次循環(huán),而i的值為3一直沒有改變,所以第一條語句始終要執(zhí)行,因此for循環(huán)將一直循環(huán)下去。

47.C解析:選項A的意思是:在x>O情況下,y為1,否則,在x=O時,y為0,剩下x<O時,y為-1,滿足本題中函數(shù)的要求。選項B描述的意思是:初始化y的值為0,在x>O時,給y重新賦值為1,否則,在x<O時,給y重新賦值為-1,滿足本題中函數(shù)的要求。選項C描述的意思是:在x>=0情況下,如果x>O,則y為1,否則,即x==0時,y為-1;剩下的x<O時,y為0。可見答案C實現(xiàn)的結果不是給定的表達式。選項D中描述的意思是:在x>=0的情況下,如果x>O,就給y賦值為1,否則即x==0時給y賦值為0,在不是x>=0的其他情況下,就給y賦值為-1,滿足本題中函數(shù)的要求。所以4個選項中C為所選。

48.C學號是學生表S的主鍵,課號是課程表C的主鍵,所以選課表SC的關鍵字就應該是與前兩個表能夠直接聯(lián)系且能唯一定義的學號和課號,所以選擇C項。

49.B解析:二維數(shù)組的初始化有以下幾種形式:①分行進行初始化;②不分行進行初始化;③部分數(shù)組元素進行初始化;④省略第一維的定義,不省略第二維的定義。選頃B)等號右邊分了3行,大于等號左邊數(shù)組的行數(shù)2。

50.C解析:宏替換實質上就是字符替代,它不可能進行計算,故C錯誤。帶參數(shù)的宏與函數(shù)相比,宏在程序編譯之前已經(jīng)將代碼替換到程序內(nèi),執(zhí)行時不會產(chǎn)生類似于函數(shù)調(diào)用的問題,可以說不占用運行時間。

51.C解析:程序中定義了兩個變量a和b,并分別賦初值為7和8,定義了3個指針變量p、q、r,并讓指針p指向變量a,讓q指向變量b,然后通過一個中間指針變量r,使指針變量p和q互換,互換后p指向b,q指向a,因此最后輸出的*p、*q的值為8、7、a、b的值沒有改變?nèi)詾?、8。所以,4個選項中選項C符合題意。

52.D解析:在C語言程序中,可以用一個符號名宋代表一個常量,稱為符號常量。這個符號名必須在程序中進行特別的“指定”,并符合標識符的命令規(guī)則。在本題中圓周率冗是一個符號常量,但在程序中并沒有指定其值,所以編譯器找不到其值就會報錯。所以選項D)正確。

53.C

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

55.B解析:因為在循環(huán)中存在一條這樣的語句“if(n=4)break;”,所以循環(huán)變量n遞增到4的時候循環(huán)會被強行結束。故一共循環(huán)了5次,每次n的值分別為0、1、2、3、4。應該選擇B。

56.D解析:主函數(shù)的第一個參數(shù)argc為整形參數(shù),記下從命令行輸入的參數(shù)的個數(shù);第二個參數(shù)argv是一個字符型的指針數(shù)組,它的每一個元素指向命令行輸入的參數(shù)字符數(shù)。在本例中argc的值為5,argv[0]指向字符串“ex”,argv[l]指向參數(shù)字符串“abcd”,argv[2]指向字符串“efg”,argv[3]指向參數(shù)字符串“h3”,argv[4]指向參數(shù)字符串“k44”。在main()函數(shù)中,for循環(huán)執(zhí)行了兩次,當i=1時,len=O+strlen(argv[1]),而其中argv[l]=“abcd”,故此時len的值為4;當i=3時,len=4+strlen(argv[3]),而其中argv[3]=“h3”,故此時len的值為6;當i=5時,退出循環(huán),故最后輸出的len值為6。所以,4個選項中選項D符合題意。

57.D解析:本題的函數(shù)fun的最后一個語句是“return(*a-*b);”,也就是返回指針a所指單元的值與指針b所指單元的值的差。顯然這不可能是計算a和b所指字符串的長度之差,因此選項A的說法是錯誤的。由于函數(shù)中并沒有出現(xiàn)。a=*b的賦值操作,所以選項B的連接字符串的說法也是錯誤的。同理,由于沒有*a現(xiàn)*a=*b的賦值操作,所以選項C的復制字符串的說法也是錯誤的。排除了三個選項后,就可以斷定正確選項是D。

58.B解析:此題考查了字符串輸入函數(shù)gets和字符串比較函數(shù)strcmp,另外還有字符輸出函數(shù)putchar。gets從標準輸入設備中讀入全部字符,包括空格,直到遇到回車符為止。strcmp是字符串比較函數(shù),即strcmp(字符串1,字符串2),如果字符串1=字符串2,則函數(shù)值為0;如果字符串1>字符串2,則函數(shù)值為一正整數(shù);如果字符串1<字符串2,則函數(shù)值為一負整數(shù)。putchar(c)函數(shù)將字符c輸出到標準輸出設備上。

59.D解析:本題中首先定義一個字符數(shù)組s,并將字符串'ABCD'存到數(shù)組s中,定義了一個字符指針變量p,在接下來for循環(huán)中,循環(huán)體共執(zhí)行了三次,第一次p指向s[1],所以此時輸出的p所指字符串的值為BCD,第二次循環(huán)p指向s[2],此時輸出p所指的字符串的值為CD,第三次循環(huán)p指向s[3],此時輸出的p所指的字符串的值為D。所以,4個選項中選項D符合題意。

60.C解析:在關系模型的數(shù)據(jù)語言中,一般除了運用常規(guī)的集合運算(并、交、差、笛卡爾積等)外,還定義了一些專門的關系運算,如投影、選擇、連接等運算。前者是將關系(即二維表)看成是元組的集合,這些運算主要是從二維表的行的方向來進行的;后者主要是從二維表的列的方向來進行運算。因此,選項A與B中的說法都是錯誤的,而選項C中的說法是正確的。

61.C

62.D解析:笛卡爾積:設關系R和S的元數(shù)分別是r和s,定義R和S的笛卡爾積是一個(r+s)元元組的集合,每一個元組的前r個分量來自R的一個元組,后s個分量來自S的一個元組。若R有k1個元組,s有k2個元組,則關系R和關系S的廣義笛卡爾積有k1×k2個元組。交:設關系R和關系S具有相同的目n,且相應的屬性取自同一個域,則關系R與關系S的交由屬于R又屬于S的所有元組組成。并:設關系R和關系S具有相同的目n(即兩個關系都有n個屬性),且相應的屬性取自同一個域,則關系R與關系S的并由屬于R或屬于S的元組組成。自然連接:是一種特殊的等值連接,它要求兩個關系中進行比較的分量必須有相同的屬性組,并且要將結果中重復的屬性去掉。

63.A聲明靜態(tài)局部變量:函數(shù)調(diào)用結束后,其占用的存儲單元不釋放:在下次該函數(shù)調(diào)用時,該變量保留上一次函數(shù)調(diào)用結束時的值。本題子函數(shù)fun中的變量i和m均為靜態(tài)局部變量。因此第一次調(diào)用fun函數(shù),返回m的值為5,第二次再調(diào)用fun函數(shù)時,i的值為3,m的值已經(jīng)是5了,所以執(zhí)行i+=m+1,i的值變?yōu)?,m=i+x+y=9+l+l=11。故本題答案為A)。

64.C關系完整性是為保證數(shù)據(jù)庫中數(shù)據(jù)的正確性和相容性,對關系模型提出的某種約束條件或規(guī)則。完整性通常包括域完整性,實體完整性、參照完整性和用戶定義完整性,“年齡在18~25之間”屬于用戶定義完整性約束

65.A本題考查的是遞歸算法的分析。一個直接或間接地調(diào)用自身的算法稱為遞歸算法。在一個遞歸算法中,至少要包含一個初始值和一個遞歸關系。本題的fun()函數(shù)在n等于l時返回1,而在其余情況下返[fi]n+fun(n一1),所以本題的遞歸算法可以這樣來表示:fun(n)=1(n=1)(初始值)fun(n)=n+fun(n一1)(n≠1)(遞歸關系)此時不難看出,該遞歸算法實現(xiàn)的是計算l+2+3+…+n,而且n必須大于0,否則會陷入死循環(huán)。故題目輸出的結果是l+2+3+..+10=55.應該選擇A)。

66.A本題綜合考查字符數(shù)組的賦值和strcpy函數(shù)的用法。C語言不允許用賦值表達式對字符數(shù)組賦值,如下面的語句就是非法的:str1='China',如果想把“China”這5個字符放到數(shù)組str1中,除了逐個輸入外,還能使用strcpy函數(shù),該函數(shù)的功能是將一個字符串復制到一字符數(shù)組中。例如,strcpy(str1,'China');或strcpy(str1,str2);注意,不能企圖用以下語句來實行賦值(將str2的值傳給str1):str1=str2;不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。

strcpy函數(shù)的結構是:strcpy(字符數(shù)組1,字符串2)

其中,需要注意的是,字符數(shù)組1的長度不應小于字符串2的長度,“字符數(shù)組1”必須寫成數(shù)組名形式,如(str1),“字符串2”可以是字符數(shù)組名,也可以是字符串常量,不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。

67.D

\n本題考查for循環(huán)的使用

溫馨提示

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

評論

0/150

提交評論