2021-2022年吉林省長春市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2021-2022年吉林省長春市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2021-2022年吉林省長春市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2021-2022年吉林省長春市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2021-2022年吉林省長春市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.設單鏈表中結點的結構為非空的循環(huán)單鏈表first的尾結點(由p所指向)滿足:______A.p->link==NULL;B.p==NULL;C.p->link==first;D.p==first;

2.有以下語句:intb;charc[10];,則正確的輸入語句是______。

A.scanf("%d%s",&b,&c);

B.scanf("%d%s",&b,c);

C.scanf("%d%s",b,c);

D.scanf("%d%s",b,&c);

3.在目標串T[0,n-1]=”xwxxyxy”中,對模式串p[0,m-1]=”xy”進行子串定位操作的結果_______

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

4.若有定義語句:intX=10;,則表達式x-=x+X的值為A.-20B.-10C.0D.10

5.算法的時間復雜度取決于()

A.問題的規(guī)模B.待處理數(shù)據(jù)的初態(tài)C.A和B

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

B.1111110100011001

C.0000001011100010

D.1100000000101000

7.數(shù)據(jù)庫管理系統(tǒng)是()。

A.操作系統(tǒng)的一部分B.在操作系統(tǒng)支持下的系統(tǒng)軟件C.一種編譯系統(tǒng)D.一種操作系統(tǒng)

8.有如下程序main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}該程序的輸出結果是

A.69825B.63825C.6385D.693825

9.設有宏定義:#defineIsDIV(k,n)((k%n==1)?1:0)且變量m已正確定義并賦值,則宏調用:IsDIV(m,5)&&IsDIV(m,7)為真時所要表達的是A.判斷m是否能被5或者7整除

B.判斷m是否能被5和7整除

C.判斷m被5或者7整除是否余1

D.判斷m被5和7整除是否都余1

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

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

11.C語言中,組成數(shù)據(jù)文件的成分是()。A.A.記錄

B.數(shù)據(jù)行

C.數(shù)據(jù)塊

D.字符(字節(jié))序列

12.設有以下說明,則不正確的敘述是()。

A.A.arr所占的內存長度等于成員c的長度

B.arr的地址和它的各成員的地址都是同一地址

C.arr可以作為函數(shù)參數(shù)

D.不能在定義arr時對它初始化

13.有以下程序:#include<stdio.h>main(){charb[]=“happynewyear”,k;for(k=0;b[k];k++) printf(“%c”,b[k]-‘a’+‘A’);}程序運行后的輸出結果是()。

A.hAppynewyeArB.HappynewyearC.HAPPYNEWYEARD.HaPPYNEWYEaR

14.有以下程序:#include<stdio.h>main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf(“%d\n”,c);}程序的運行結果是()。

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

15.二維數(shù)組M的元素是4個字符(每個字符占一個存儲單元)組成的串,行下標i的范圍從0到4,列下標j的范圍從0到5,M按行存儲時元素M[3][5]的起始地址與M按列存儲時元素()的起始地址相同。

A.M[2][4]B.M[3][4]C.M[3][5]D.M[4][4]

16.以下敘述中錯誤的是()。

A.C語言編寫的函數(shù)源程序,其文件名后綴可以是C

B.C語言編寫的函數(shù)都可以作為一個獨立的源程序文件

C.C語言編寫的每個函數(shù)都可以進行獨立的編譯并執(zhí)行

D.一個C語言程序只能有一個主函數(shù)

17.有以下程序:#include<stdio.h>voidfun(char*C,intd){*c=*c+1,d=d+1;printf(%"c%,c",*c,d);}main(){charb=aa=A;fun(&b,a);printf(%"c,%c\n",b,a);)程序運行后的輸出結果是()。A.b,B,b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

18.s1和s2已正確定義并分別指向兩個字符串。若要求:當s1所指串大于s2所指串時,執(zhí)行語句s;則以下選項中正確的是()。

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,sl)>O)S;

D.if(stremp(s1,s2)>O)S;

19.語句int(*ptr)的含義是()。

A.ptr是一個返回值為int的函數(shù)

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針

20.十六進制數(shù)FF.1轉換成十進制數(shù)是()

A.255.0625B.255.125C.127.0625D.127.125

二、2.填空題(20題)21.數(shù)據(jù)元素之間______的整體稱為邏輯結構。

22.以下函數(shù)把b字符串連接到a字符串的后面,并返回a中新字符串的長度。請?zhí)羁铡?/p>

strcen(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;}

return(num);

}

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

main()

{inta=2,b=4,c=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

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

}

24.子程序通常分為兩類:【】和函數(shù),前者是命令的抽象,后者是為了求值。

25.數(shù)據(jù)庫的邏輯模型設計階段的任務是將______轉換成關系模式。

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

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

28.下面invert函數(shù)的功能是將一個字符串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;

}

}

29.條件“20<x<30或x<-100”的C語言表達式是【】。

30.以下程序的功能是找出三個字符串中的最大串。

【】

#include<stdio.h>

main()

{inti;

charstring[20],str[3][20];

(i=0;i<3;i++)gets(【】);

if(strcmp(str,str[0],str[1]>0)strcpy(string,str[0]);

elsestrcpy(string,str[1]);

if(strcmp(str[2],string)>【】)srtcpy(string,str[2]);

printf("Thelargeststringis\n%s\n",string);

}

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

main()

{intx=0;

sub(&x,8,1);

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

}

sub(int*a,intn,intk)

{if(k<=n)sub(a,n/2,2*k);

*a+=k;

}

32.在關系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個______。

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

voidreverse(inta[],intn)

{inti,t;

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

{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

}

main()

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

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

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

}

34.以下程序用于判斷a,b,c能否構成三角形,若能,輸出YES,否則輸出NO。當給a,b,c輸入三角形三條邊長時,確定a,b,c能構成三角形的條件是需同時滿足三個條件:a+b>c,a+c>b,b+c>a。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{floata,b,c;

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

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

elseprinff("NO\n");/*a.b.c不能構成三解形*/

}

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

main()

{inta=1,b=2;

a=a+b;b=a-b,a=a-b;

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

}

36.通常,將軟件產品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為【】。

37.執(zhí)行以下程序后的輸出結果是【】。

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

38.有以下程序:

#include<stclio.h>

main()

{charc;

while((c=getchar())!='?')putchar(--c);

}

程序運行時,如果從鍵盤輸入:Y?N?<回車>,則輸出結果為【】。

39.在關系運算中,【】運算是對兩個具有公共屬性的關系所進行的運算。

40.若有定義:doubleW[10],則W數(shù)組元素下標的上限為【】,下限為【】。

三、1.選擇題(20題)41.當運行以下程序時,從鍵盤輸入AhaMA(空格)Aha

#include

main()

{chars[80],c='a';

inti=0;

scanf("%s",s);

while(s[i]!='\n')

{if(s[i]==c)s[i]-32;

elseif(s[i]==c-32)s[i]=s[i]+32;

i++;}

puts(s);}

A.ahaMaB.AbAMaC.AhAMa[空格]ahAD.ahAMa[空格]ahA

42.實體一聯(lián)系模型中,實體與實體之間的聯(lián)系不可能是

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

43.下列工具中為需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

44.設i是int型變量,f是float型變量,用下面的語句給這2個變量輸入值。為了將,100和765.12分別賦給i和f,則正確的輸入為______。scanf("i=%d,f=%f”,&i,&f);

A.100<空格>765.12<回車>

B.i=100,f=765.12<回車>

C.100<回車>765.12<回車>

D.x=100<回車>y=765.12<回車>

45.若輸入1,2,下列程序的運行結果為______。#defineSWAP(a,b)t=b;b=a;a=tmain(){inta,b,t;scanf("%d,%d",&a,&b);SWAP(a,b);printf("a=%d,b=%d\n",a,b);}

A.a=1,b=2B.a=2,b=1C.a=1,b=1D.a=2,b=2

46.在數(shù)據(jù)管理技術發(fā)展過程中,文件系統(tǒng)與數(shù)據(jù)庫系統(tǒng)的主要區(qū)別是數(shù)據(jù)庫系統(tǒng)具有

A.特定的數(shù)據(jù)模型B.數(shù)據(jù)無冗余C.數(shù)據(jù)可共享D.專門的數(shù)據(jù)管理軟件

47.已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。下列不能將變量c中的大寫字母轉換為對應小寫字母的語句是()。

A.c=(c-'A')%26+'a'

B.c=c+32

C.c=C-'A'+'a'

D.c=('A'+C)%26-'a'

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

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

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

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

49.在一個C源程序文件中所定義的全局變量,其作用域為A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

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

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

51.設有定義:intn=0,*p=&n,**q=&p;則以下選項中,正確的賦值語句是()A.p=1;B.*q=2;C.q=p;D.*p=5;

52.有以下程序

#include<stdio.h>

main()

{ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;

for(i=0;i<12;i++)c[s[i]]++;

for(i=1;i<5;i++)printf("%d",c[i]);

printf("\n");

}

程序的運行結果是

A.1234B.2344C.4332D.1123

53.若已建立如下圖所示的單向鏈表結構:在該鏈表結構中,指針p、s分別指向圖中所示結點,則不能將s所指的結點插入到鏈表末尾仍構成單向鏈表的語句組是______。

A.p=p->next;s->next=p;p->next=s;

B.p=p->next;s->next=p->next;p->next=s;

C.s->next=NULL;p=p->next;p->next=s;

D.p=(*p).next;(*s).next=(*p).next;(*p).next=s;

54.下列程序的輸出結果是______。#include<stdio.h>main(){inta,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}

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

55.已定義以下函數(shù);intfun(int*p){return*p;}fun函數(shù)返回值是()。

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

56.若有下列說明和語句,則對結構體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;

A.st.iB.*p.iC.(*p).iD.p->i

57.設p1和p2是指向一個int型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語句是

A.k=*p1+*p2B.p2=k;C.p1=p2;D.k=*p1*(*p2);

58.若程序有宏定義:#defineN100則以下敘述中正確的是______。

A.宏定義中定義了標識符N的值為整數(shù)100

B.在編譯程序對C源程序進行預處理時用100替換標識符N

C.對C源程序進行編譯時用100替換標識符N

D.在運行時用100替換標識符N

59.在說明語句:int*f();中,標識符f代表的是

A.一個用于指向整型數(shù)據(jù)的指針變量

B.一個用于指向一維數(shù)組的行指針

C.一個用于指向函數(shù)的指針變量

D.一個返回值為指針型的函數(shù)名

60.有下列函數(shù)定義:intfun(doublea,doubleb){returna*b;}若下列選項中所用變量都已正確定義并賦值,錯誤的函數(shù)調用是()。

A.if(fun(x,y)){……}

B.z=fun(fun(x,y),fun(x,y));

C.z=fun(fun(x,y)x,y);

D.fun(x,y);

四、選擇題(20題)61.設有定義:charp[]={1,2,3),*q=p;,以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達式是()。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

62.在最壞情況下,堆排序的時間復雜度是()。

A.0(1902n)B.O(n1092n)C.o(n2)D.0(n1.5)

63.

64.

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

main

{inti;

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

switch(i){case0:printf("%d",i);

case2:printf("%d",i);

default:printf("%d",i);

}

}

A.000102B.000020C.000122D.000111

65.

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

main

{charst[20]="hello\0\t\\\";

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

}

A.99B.520C.1320D.2020

66.

67.

68.有以下程序:

fun(intx)

{intP;

if(x==0||x==l)return(3);

p=x-fun(x-2);

returnp;

}

main

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

程序執(zhí)行后的輸出結果是()。A.A.7B.3C.2D.0

69.若有條件表達式

則以下表達式中能完全等價于表達式(exp.的是()。

A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)

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

A.字符型數(shù)組中可能存放字符串。

B.可以對字符型數(shù)組進行整體輸入、輸出。

C.可以對整型數(shù)組進行整體輸入、輸出。

D.不能在賦值語句中通過賦值運算符“=”對字符型數(shù)組進行整體賦值。

71.

72.在下述程序中,判斷條件“i>j”共執(zhí)行的次數(shù)是

main()

{inti=0,j=10,k=2,s=0;

for(;;)

{i+=k;

if(i>j)

{printf("%d",s);

break;

}s+=i;

}

}

A.4B.7

C.5D.6

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

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

74.以下選項中不能作為C語言合法常量的是

A.’Fab’B.0.7e+9C."\b"D.’\01211’

75.

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

main

{charstr[]1-10]={"china","beijing"),*p=str;

printf("%s\n",p+10);

}

A.ChinaB.BeijingC.ngD.ing

76.三種基本結構中,能簡化大量程序代碼的是()。

A.順序結構B.分支結構C.選擇結構D.重復結構

77.

78.

79.

80.有以下程序:

voidmain()

{intk=0,n=0;

while(k<5)

{switch(k)

{default:break;

case1:n+=k;

case2:

case3:n+=k;

}

k++;

}

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

}

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

A)0B)4

C)6D)7

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:計算并輸出m以內最大的6個能被7或11整除的自然數(shù)之和。m的值由主函數(shù)傳人。例如,若m的值為600,則函數(shù)的值為3515。請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。例如,若二維數(shù)組中的值為13579299946999813570則函數(shù)值為61。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include2#include3#include4#defineM45#defineN56intfun(inta[m][n])7{89}10voidmain()11{12FILE*wf;13intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};14inti,j,y;15system("CLS");16printf("Theoriginaldatais:\n");17for(i=0;i<m;i++)18{for(j=0;j<n;j++)19printf("%6d",aa[i][j]);20printf("\n");21}22y=fun(aa);23printf("\nThesum:%d\nM,y);24printf("\n");25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%d",y);28fclose(wf)29/******************/30}

參考答案

1.C

2.B解析:b是整型數(shù),在輸人語句中要加取地址符,而c是數(shù)組名,本身就是數(shù)組的首地址,因此不用加取地址符。

3.C

4.B解析:x-=x+x可化為:x=x-(x+x),由于x初始值為10,所以計算后,x=10-20=-10,因此選B)。

5.C

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

7.B數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的機構,它是一種系統(tǒng)軟件,負責數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務等,是一種在操作系統(tǒng)支持下的系統(tǒng)軟件,因此本題答案為B)。

8.C解析:該題稍微難一點。主要要搞清楚以下幾點:①定義了一個指針數(shù)組char*p[2]后,程序中第一個循環(huán)for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指針數(shù)組的p[0]元素(它本身是一個指針)指向了二維數(shù)組ch的第一行字符串,并使指針數(shù)組的p[1]元素指向二維數(shù)組ch的第二行字符串,這樣,就使指針數(shù)組p和二維數(shù)組ch建立起了一種對應關系,以后對二維數(shù)組ch的某個元素的引用就有兩種等價的形式:ch[i][j]或p[i][j]。②對二維數(shù)組ch的初始化,使其第一行ch[0]中存入了字符串“693

9.D

10.C

11.D解析:C語言中的文件是流式文件。流式文件是一種無結構文件,即整個文件是一串字符流或二進制流。文件的存取以字符或字節(jié)為單位。

12.C本題主要考查聯(lián)合體的內存使用:聯(lián)合體所占用的內存空間為最長的成員所占用的空間,int占2個字節(jié),char占1個字節(jié),float占4個字節(jié),所以arr所占的內存長度等于成員c的長度:arr的地址和它的各成員的地址都是同一地址;不能直接對arr賦值,即不能在定義arr時對它初始化:arr也不可以作為函數(shù)參數(shù)。

13.C程序定義一個字符數(shù)組b,并使用字符串“happynewyeai”進行初始化。然后通過for循環(huán),遍歷字符數(shù)組b中的每個字符,再將b中的字符元素修改為大寫字母。程序輸出:HAPPYNEWYEAR。故本題答案為C選項。

14.C該程序中“int*p1=&a,*p2=&b,*p=&c;”定義了3個指針變量,并賦值。指針變量p1指向a,p2指向b,p指向c。執(zhí)行“*p=*p1*(*p2);”語句,給p所指的存儲單元c賦值。p1所指的存儲單元的值,與p2所指的存儲單元b的值相乘,也就是c=a*b,等價于c=1*3=3。故本題答案為C選項。

15.B

16.C函數(shù)是指預先定義功能塊,其目的是提高程序的重用性。在C語言中函數(shù)的源程序,后綴名可以為C。C語言所編寫的函數(shù)都可以是一個獨立的源文件。一個C語言程序只能有一個主函數(shù)。C語言中編寫的函數(shù)不是每個都可以獨立地編譯和執(zhí)行的,因為C語言中程序的開始為主函數(shù),如果程序中沒有主函數(shù)則無法進行編譯和執(zhí)行。

17.A本題考查了函數(shù)的調用。首先主函數(shù)定義了兩個字符型數(shù)據(jù)b和a,給b賦值為字母a.a賦值為字母A,調用fun(&.b,a)函數(shù),*C=*c十1,a的ASCIl碼值加1后為b,A的ASCIl碼值加1后為B。輸出第一組值,排除C、D選項。B選項的值此時為小b,排除B選項,所以本題答案為A。

18.D在C語言中,不能直接比較兩個字符串的大小,必須用特定的函數(shù)來完成,選項A錯誤;選項B不管大于還是小于都執(zhí)行S,不符合題意;選項C正好相反,當s2大于s1時,執(zhí)行語句S,可知選項D正確。

19.C本題考查的是指向函數(shù)的指針。函數(shù)指針定義的基本格式為:類型標識符(*指針變量名)()。“類型標識符”為函數(shù)返回值的類型。

20.A

21.邏輯關系邏輯關系

22.0'或0或NULLn++或++n或n=n+1或n+=10'或0或NULL\r\nn++或++n或n=n+1或n+=1

23.88解析:本程序定義了3個指針變量p1、p2、p,并且將,、b的地址分別賦給P1、p2,則*p1=a=2,*p2=b=4,所以表達式*p1*(*p2)的值是8。在賦值語句的左邊是*(p=&c),即使指針p指向了變量c,因而*(p)代表了c的存儲單元,賦值語句“*(p=&c)=*p1*(*p2);”是把整數(shù)8賦給了變量c。

24.過程過程

25.E-R圖E-R圖解析:數(shù)據(jù)庫邏輯設計的任務是將概念模型進一步轉化成相應的數(shù)據(jù)模型。而E-R圖是主要的概念模型,因此數(shù)據(jù)庫的邏輯設計的主要工作是將E-R圖轉換成關系模式。

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

27.log2n

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

29.(20<x)&&(x<30)||(x<-100)或20<x&&x<30||x<-100(20<x)&&(x<30)||(x<-100)或20<x&&x<30||x<-100

30.#include<string.h>str[i]0

31.77解析:在主函數(shù)中定義了一個變量x并賦初值0,然后執(zhí)行函數(shù)調用語句,該語句的執(zhí)行過程為sub(&x,8,1)調用sub(&a,4,2),sub(&a,4,2)調用sub(&a,2,4),sub(&a,2,4)中由于2<4,所以if后面括號里的判斷為假,遞歸結束,執(zhí)行其后的*a+=k;語句此時x=x+k=0+4=4,回推到上一層調用函數(shù)sub(&x,4,2)中,執(zhí)行后面的語句,x=x+k=4+2=6,在回推到最上一層調用函數(shù)sub(&x,8,1)執(zhí)行后面的語句,x=x+k=6+1=7,所以最后輸出7。

32.關系關系解析:關系模型用;維表表示,則每個;維表代表一種關系。

33.2222解析:在main函數(shù)中,調用reverse函數(shù)將b數(shù)組中的前8個成員進行互置,執(zhí)行完畢后,b數(shù)組中的成員為{8,7,6,5,4,3,2,1,9,10},然后再執(zhí)行for循環(huán)結構,將b[6],b[7]...b[9]的值相加,結果為22。

34.(a+b>c)&&(a+c>b)&&(b+c>a)(a+b>c)&&(a+c>b)&&(b+c>a)解析:根據(jù)構成三角形的條件:兩邊之和大于第三邊,得出空格應該填(a+b>c)&&(a+c>b)&&(b+c>a)或與其等價的形式。

35.21

36.軟件生命周期軟件生命周期解析:軟件產品從考慮其概念開始,到該軟件產品不能使用為止的整個時期都屬于軟件生命周期。一般包括可行性研究與需求分析、設計、實現(xiàn)、測試、交付使用以及維護等活動。

37.a=14a=14解析:逗號表達式的值是以逗號分隔的最后一個表達式的值。所以題目中的語句a=(3*5,a+4);就等價于a=a+4;。故本題輸出結果是a=14。

38.XX解析:主函數(shù)中首先定義了一個字符型變量c,接著執(zhí)行下面while語句,在while循環(huán)中,首先從鍵盤上讀入一個字符Y并給賦給字符變量c,賦值表達式的值不為'?',執(zhí)行輸出語句,輸出字符X。接著判斷while中的循環(huán)條件,讀入一個字符'?'并賦值給c,賦值表達式的值為'?'循環(huán)條件不再滿足,退出循環(huán)。

39.自然連接自然連接解析:在關系運算中,自然連接運算是對兩個具有公共屬性的關系所進行的運算。

40.90

41.A解析:本題主要考查的知識點是大寫字母比它對應的小寫字母ASCII碼值小32,并且字符可以看作整數(shù)進行算術運算等操作。

42.D解析:實體聯(lián)系模型中實體與實體之間的聯(lián)系有一對一(1:1),一對多或多對一(1:m或m:1),多對多(m:n)其中一對一是最常用的關系。

43.D解析:需求分析常用的工具有數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判定樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N-S(盒式圖)都是詳細設計的常用工具,不是需求分析的工具。

44.B

45.B

46.A解析:在文件系統(tǒng)中,記錄是相互獨立的,其內部結構的最簡單形式是等長同格式記錄的集合,易造成存儲空間大量浪費,不方便使用。而在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)是結構化的,這種結構化要求在描述數(shù)據(jù)時不僅描述數(shù)據(jù)本身,還要描述數(shù)據(jù)間的關系,這正是通過采用特定的數(shù)據(jù)模型來實現(xiàn)的。

47.D解析:由題意可知,小寫字符a和大寫字符A的ASCII代碼相差為32,所以選項C)能將大寫字符c的ASCII代碼轉換為小寫字符c的ASCⅡ代碼;選項A)和C)左側的表達式都是大寫字符c與大寫字符A的差與'a'的ASCII代碼的和就是小寫字符c的ASCII代碼。而選項D)中應該是加上'a',而不是減去'a'。

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

49.D解析:全局變量的有效范圍是從定義變量的位置開始到本源文件結束。如果需要在其他源文件中使用該全局變量,則可以在其他源文件中使用extern關鍵字來聲明該全局變量,這樣該全局變量的作用域就被擴展到以extern聲明了該全局變量的位置開始到此源文件結束。故本題的正確答案為D。

50.A\nA?!窘馕觥慷址ú檎抑贿m用于順序存儲的有序線性表,對于順序存儲的非有序線性表和線性鏈表,都只能采用順序查找。

\n

51.D解析:本題考核的知識點是指針變量定義和賦值語句的基本應用。在使用一個指針變量之前,先要用聲明語句對其進行定義,在定義了一個指針變量之后,系統(tǒng)就為這個指針變量分配了一個存儲單元,用它來存放地址。在C語言中有兩個有關指針的運算符:&運算符,為取地址運算符,*運算符是指針運算符,*p代表p所指向的變量。本題中首先定義了整型變量n,其初值為0,接著定義一個指針變量p并讓它指向n,然后定義了一個指向指針的指針變量q并讓它指向p,選項A中將常量1賦給指針p不正確;選項B也是將常量2賦給*p,故選項B不正確;選項C中P不是指向指針的指針變量,而將他賦值給一個指向指針的指針變量小顯然不正確,所以,4個選項中選項D符合題意。

52.C解析:在for(i=0;i<12;i++)c[s[i]]++中,數(shù)組元素s[i]的值作為數(shù)組c的下標,當退出循環(huán)時,數(shù)組c的4個元素的值分別為4、3、3、2。

53.A解析:在答案A中:p=p->next;s->next=p;p->next=s;s的確已插到了鏈表的末尾,但它的next卻并沒有為NULL,而是指向了它的直接前趨p,這樣它就不是一個單向鏈表(單向鏈表最后一個結點的next指針一定是一個NULL)。

54.A

55.B解析:題目中fun()函數(shù)的返回表達式是*p,所以選項C、D不為所選,而應該是形參p所指內容的值,因為p為int型指針,所以該值是一個整數(shù)。故應該選擇B。

56.B解析:本題主要考查結構指針:p=&st,訪問結構體的成員,可以通過結構變量訪問,即st.i,也可以用等價的指針形式,即(*p).i和p->i。

57.B解析:本題主要考查了一維數(shù)組指針的賦值和用指針引用數(shù)組元素進行運算。選項B)中p2為指向int型變量的指針。而k為int型變量,不能將int型變量直接賦值給指向int型變量的指針,所以選項B)錯誤。

58.B解析:本題考查的重點是宏定義。#define指令定義一個標識符和一個串,編譯程序在對C源程序處理時,發(fā)現(xiàn)該標識符就都用該串替換,因此選項B是正確的。

59.D解析:帶回指針值的函數(shù),其一般定義形式為:

類型標識符*函數(shù)名(參數(shù)表);

例如;int*f(x,y);

其中,f是函數(shù)名,調用它以后能得到一個指向整型數(shù)據(jù)的指針(地址),x,y是函數(shù)f的形參。在f的兩側分別為*運算符和()運算符,而()優(yōu)先級高于*,因此f先與()結合,顯然是函數(shù)形式。這個函數(shù)前面有一個*,表示此函數(shù)是指針型函數(shù)(函數(shù)值是指針)。前面的int表示返回的指針指向整型變量。

60.C解析:本題考查函數(shù)調用時的參數(shù)傳遞。選項C)中第一個參數(shù)的表達式不正確,因此不能得到正確的結果。

61.A選項A計算的是p口字符數(shù)組首地址所占的內存字節(jié)數(shù)。選項8、C和D都能計算出一個字符型數(shù)據(jù)所占的字節(jié)數(shù)。

62.B若有n個元素的序列,將元素接腰序組成一棵完全二叉樹,當且僅當滿足下列條件時稱為堆。大根堆是指所有結點的值大于或等于左右子結點的值;小掇堆是指所有結點的值小于或等于左右子結點的值。在調整建堆的過程中,總是將根結點值與左、右子樹的根結點進行比較,若不滿足堆的條件,則將左、右子樹根結點值中的大者與根結點值進行交換。堆排序最壞情況需要0(nl092n)次比較,所以時間復雜度是0(nl092n),B選項正確。

63.D

64.C

\n當i=0時,執(zhí)行switch語句,對應的執(zhí)行case0,輸出0,因為沒有break,接著執(zhí)行case2的語句,又輸出一個0,接著執(zhí)行default語句,再輸出一個0,返回i++;i=1時,沒有case語句,執(zhí)行default語句,輸出一個1,接著又返回i++;當i=2時執(zhí)行case2和default語句分別輸出一個2,此時又返回i++,i變?yōu)?,for循環(huán)不成立,終止,最后輸出000122。

\n

65.B

\n從題目中可知,\0、\t、\\分別為一個字符,而sizeof是裝字節(jié)個數(shù)的函數(shù),其中包括\O占的字節(jié),strlen函數(shù)是求數(shù)組長度的函數(shù);其以\0結束,因此

\nstrlen的值為5,sizeof的值為20。

\n

66.C

67.A

68.C在函數(shù)fun(intx)中,有個if語句判斷,如果參數(shù)x等于0或1時,返回值,否則進入下面的p=x-fun(x-2)遞歸函數(shù)。當在主函勢中調用fun(7)時,其過程為:“fun(7)=7-fun(5)=7-(5一fun(3))=7-(5-(3-fun(1)))=7-(5-(3—3))=7-5=2”,所以最后的輸出結果為2。

69.B條件運算符要求有3個操作對象,稱三目(元)運算符,它是C語言中惟一的一個三目運算符。條件表達式的一般形式為:表達式1?表達式2:表達式3,其求解順序是:先求解表達式l,若為非0(真)則求解表達式2,此時表達式2的值就作為整個條件表達式的值。若表達式1的值為O(假),則求解表達式3,表達式3的值就是整個條件表達式的值,注意++、一一的用法。

70.C

71.D

72.D本題主要要求我們求判斷條件“i>j”執(zhí)行的次數(shù)。在本題的程序中,首先定義了四個整型變量,并分別賦初值,然后執(zhí)行for循環(huán)結構,該循環(huán)結構中都是缺省語句,那么如果循環(huán)體中沒有break語句,程序將面臨死循環(huán),從后面的程序中我們可以看出,程序中存在一條break語句。

第一次循環(huán)時,變量k的值為2,變量i的值被改變?yōu)?,而此時變量j的值為10,執(zhí)行if(i>j)語句,結果為假,不執(zhí)行break語句,然后改變變量s的值,一次循環(huán)結束。

通過對這次循環(huán)的分析,我們發(fā)現(xiàn)變量k的值一直沒被改變,而變量i值的改變與變量k有關,且每循環(huán)一次增加2,那么變量i的改變軌跡應該為0,2,4,6,8,10,12,當i等于12時,其值大于j,條件判斷語句結果為真,執(zhí)行break語句,結束循環(huán)。從這里我們可以推斷出循環(huán)執(zhí)行的次數(shù)為6,因此,判斷條件“i>j”執(zhí)行的次數(shù)也為6次,本題的正確答案選D。

73.C解析:C語言規(guī)定,每個語句和數(shù)據(jù)定義以分號結束,則說明選項A是兩條語句,前—條是對變量a作雙精度型定義的語句,而后一個“b;”是一個缺少類型的不正確的定義形式,如果是定義多個變量,則應用逗號隔開;當定義多個變量賦同—個值時,不能用等式連寫的方式,如選項B的“double\u3000a=b=7;”應寫成“double\u3000a=7,b=7;”所以選項B錯誤,選項C正確;在定義語句時,類型與變量名之間應用空格分隔,而不是逗號,所以選項D錯誤。

74.A本題考查C語言中常量的定義。常量是指程序在運行過程中,其值不能被改變的量。C語言中常見的常量主要有整型常量、實型常量、字符型常量。整型常量包括十進制整數(shù),如456;八進制整數(shù),以0開頭,如0456;十六進制整數(shù),以0x開頭,如0x456。實型變量包括十進制小數(shù)形式,如.456;指數(shù)形式,如456e0,字母e前面必須有數(shù)字,e后面的數(shù)字必須為整數(shù),如456e-4。字符型常量是用單撇號括起來的一個字符。如,’a’,’A’等?!痑’不等于’A’。字符型常量還包括一種轉義字符,以’\\’開頭,表示將’\\’后面的字符轉換成另外的意義。字符串也可以作為常量,用雙撇號括起來,如'abc'。本題A選項中單撇號括起來的不是一個字符,而是三個字符,故不是合法常量。B選項是實型變量的指數(shù)表示形式。C選項是字符串常量,用雙撇號引起來。D選項是字符’\\0’,因為在碰到’\\0’后,字符串結束,因此只讀取到’\\0’,所以D選項是合法常量。

75.B

\n本題考查指針,由*p=str可知,指針P指向字符串數(shù)組的首地劃。二維數(shù)組str為每個字符串分配的存儲空間是10個字節(jié),因此p+10指向str[1][0],輸出的字符串就是數(shù)組中的第2個字符串。

\n

76.D重復結構也稱為循環(huán)結構,它根據(jù)給定的條件,判斷是否需要重復執(zhí)行某一相同或類似的程序段,這種可以簡化大量的程序行。

77.B

78.D

79.D

80.D首先k=0,執(zhí)行default,退出switch,k++,執(zhí)行case1,2,3后,n=2,k++,執(zhí)行case2,3,n=4,k++,執(zhí)行case3,n=7.執(zhí)行k++,執(zhí)行default,k++,退出循環(huán)。

81.

82.1intfun(inta[M][N])2{3inti,j,sum=0;4for(i=0;i<m;i++)5for(j=0;j<n;j++)6if(i==o||i==M-1||j==0||j==N-1)/*只要下標中有一個為?;騇-1或N-1,則它一定是周邊元素*/7sum=sum+a[i][j];/*將周邊元素相加*/8returnsum;9}本題采用逐一判斷的方式求數(shù)組周邊元素和。二維數(shù)組周邊元素的規(guī)律是,其兩個下標中一定有一個是0或M-1或N-1。程序中循環(huán)語句用來控制數(shù)組的行和列,條件語句用來判斷數(shù)組元素是否為周邊元素。</n;j++)</m;i++)</n;j++)</m;i++)2021-2022年吉林省長春市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.設單鏈表中結點的結構為非空的循環(huán)單鏈表first的尾結點(由p所指向)滿足:______A.p->link==NULL;B.p==NULL;C.p->link==first;D.p==first;

2.有以下語句:intb;charc[10];,則正確的輸入語句是______。

A.scanf("%d%s",&b,&c);

B.scanf("%d%s",&b,c);

C.scanf("%d%s",b,c);

D.scanf("%d%s",b,&c);

3.在目標串T[0,n-1]=”xwxxyxy”中,對模式串p[0,m-1]=”xy”進行子串定位操作的結果_______

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

4.若有定義語句:intX=10;,則表達式x-=x+X的值為A.-20B.-10C.0D.10

5.算法的時間復雜度取決于()

A.問題的規(guī)模B.待處理數(shù)據(jù)的初態(tài)C.A和B

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

B.1111110100011001

C.0000001011100010

D.1100000000101000

7.數(shù)據(jù)庫管理系統(tǒng)是()。

A.操作系統(tǒng)的一部分B.在操作系統(tǒng)支持下的系統(tǒng)軟件C.一種編譯系統(tǒng)D.一種操作系統(tǒng)

8.有如下程序main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}該程序的輸出結果是

A.69825B.63825C.6385D.693825

9.設有宏定義:#defineIsDIV(k,n)((k%n==1)?1:0)且變量m已正確定義并賦值,則宏調用:IsDIV(m,5)&&IsDIV(m,7)為真時所要表達的是A.判斷m是否能被5或者7整除

B.判斷m是否能被5和7整除

C.判斷m被5或者7整除是否余1

D.判斷m被5和7整除是否都余1

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

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

11.C語言中,組成數(shù)據(jù)文件的成分是()。A.A.記錄

B.數(shù)據(jù)行

C.數(shù)據(jù)塊

D.字符(字節(jié))序列

12.設有以下說明,則不正確的敘述是()。

A.A.arr所占的內存長度等于成員c的長度

B.arr的地址和它的各成員的地址都是同一地址

C.arr可以作為函數(shù)參數(shù)

D.不能在定義arr時對它初始化

13.有以下程序:#include<stdio.h>main(){charb[]=“happynewyear”,k;for(k=0;b[k];k++) printf(“%c”,b[k]-‘a’+‘A’);}程序運行后的輸出結果是()。

A.hAppynewyeArB.HappynewyearC.HAPPYNEWYEARD.HaPPYNEWYEaR

14.有以下程序:#include<stdio.h>main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf(“%d\n”,c);}程序的運行結果是()。

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

15.二維數(shù)組M的元素是4個字符(每個字符占一個存儲單元)組成的串,行下標i的范圍從0到4,列下標j的范圍從0到5,M按行存儲時元素M[3][5]的起始地址與M按列存儲時元素()的起始地址相同。

A.M[2][4]B.M[3][4]C.M[3][5]D.M[4][4]

16.以下敘述中錯誤的是()。

A.C語言編寫的函數(shù)源程序,其文件名后綴可以是C

B.C語言編寫的函數(shù)都可以作為一個獨立的源程序文件

C.C語言編寫的每個函數(shù)都可以進行獨立的編譯并執(zhí)行

D.一個C語言程序只能有一個主函數(shù)

17.有以下程序:#include<stdio.h>voidfun(char*C,intd){*c=*c+1,d=d+1;printf(%"c%,c",*c,d);}main(){charb=aa=A;fun(&b,a);printf(%"c,%c\n",b,a);)程序運行后的輸出結果是()。A.b,B,b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

18.s1和s2已正確定義并分別指向兩個字符串。若要求:當s1所指串大于s2所指串時,執(zhí)行語句s;則以下選項中正確的是()。

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,sl)>O)S;

D.if(stremp(s1,s2)>O)S;

19.語句int(*ptr)的含義是()。

A.ptr是一個返回值為int的函數(shù)

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針

20.十六進制數(shù)FF.1轉換成十進制數(shù)是()

A.255.0625B.255.125C.127.0625D.127.125

二、2.填空題(20題)21.數(shù)據(jù)元素之間______的整體稱為邏輯結構。

22.以下函數(shù)把b字符串連接到a字符串的后面,并返回a中新字符串的長度。請?zhí)羁铡?/p>

strcen(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;}

return(num);

}

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

main()

{inta=2,b=4,c=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

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

}

24.子程序通常分為兩類:【】和函數(shù),前者是命令的抽象,后者是為了求值。

25.數(shù)據(jù)庫的邏輯模型設計階段的任務是將______轉換成關系模式。

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

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

28.下面invert函數(shù)的功能是將一個字符串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;

}

}

29.條件“20<x<30或x<-100”的C語言表達式是【】。

30.以下程序的功能是找出三個字符串中的最大串。

【】

#include<stdio.h>

main()

{inti;

charstring[20],str[3][20];

(i=0;i<3;i++)gets(【】);

if(strcmp(str,str[0],str[1]>0)strcpy(string,str[0]);

elsestrcpy(string,str[1]);

if(strcmp(str[2],string)>【】)srtcpy(string,str[2]);

printf("Thelargeststringis\n%s\n",string);

}

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

main()

{intx=0;

sub(&x,8,1);

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

}

sub(int*a,intn,intk)

{if(k<=n)sub(a,n/2,2*k);

*a+=k;

}

32.在關系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個______。

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

voidreverse(inta[],intn)

{inti,t;

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

{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

}

main()

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

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

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

}

34.以下程序用于判斷a,b,c能否構成三角形,若能,輸出YES,否則輸出NO。當給a,b,c輸入三角形三條邊長時,確定a,b,c能構成三角形的條件是需同時滿足三個條件:a+b>c,a+c>b,b+c>a。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{floata,b,c;

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

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

elseprinff("NO\n");/*a.b.c不能構成三解形*/

}

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

main()

{inta=1,b=2;

a=a+b;b=a-b,a=a-b;

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

}

36.通常,將軟件產品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為【】。

37.執(zhí)行以下程序后的輸出結果是【】。

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

38.有以下程序:

#include<stclio.h>

main()

{charc;

while((c=getchar())!='?')putchar(--c);

}

程序運行時,如果從鍵盤輸入:Y?N?<回車>,則輸出結果為【】。

39.在關系運算中,【】運算是對兩個具有公共屬性的關系所進行的運算。

40.若有定義:doubleW[10],則W數(shù)組元素下標的上限為【】,下限為【】。

三、1.選擇題(20題)41.當運行以下程序時,從鍵盤輸入AhaMA(空格)Aha

#include

main()

{chars[80],c='a';

inti=0;

scanf("%s",s);

while(s[i]!='\n')

{if(s[i]==c)s[i]-32;

elseif(s[i]==c-32)s[i]=s[i]+32;

i++;}

puts(s);}

A.ahaMaB.AbAMaC.AhAMa[空格]ahAD.ahAMa[空格]ahA

42.實體一聯(lián)系模型中,實體與實體之間的聯(lián)系不可能是

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

43.下列工具中為需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

44.設i是int型變量,f是float型變量,用下面的語句給這2個變量輸入值。為了將,100和765.12分別賦給i和f,則正確的輸入為______。scanf("i=%d,f=%f”,&i,&f);

A.100<空格>765.12<回車>

B.i=100,f=765.12<回車>

C.100<回車>765.12<回車>

D.x=100<回車>y=765.12<回車>

45.若輸入1,2,下列程序的運行結果為______。#defineSWAP(a,b)t=b;b=a;a=tmain(){inta,b,t;scanf("%d,%d",&a,&b);SWAP(a,b);printf("a=%d,b=%d\n",a,b);}

A.a=1,b=2B.a=2,b=1C.a=1,b=1D.a=2,b=2

46.在數(shù)據(jù)管理技術發(fā)展過程中,文件系統(tǒng)與數(shù)據(jù)庫系統(tǒng)的主要區(qū)別是數(shù)據(jù)庫系統(tǒng)具有

A.特定的數(shù)據(jù)模型B.數(shù)據(jù)無冗余C.數(shù)據(jù)可共享D.專門的數(shù)據(jù)管理軟件

47.已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97。下列不能將變量c中的大寫字母轉換為對應小寫字母的語句是()。

A.c=(c-'A')%26+'a'

B.c=c+32

C.c=C-'A'+'a'

D.c=('A'+C)%26-'a'

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

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

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

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

49.在一個C源程序文件中所定義的全局變量,其作用域為A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

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

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

51.設有定義:intn=0,*p=&n,**q=&p;則以下選項中,正確的賦值語句是()A.p=1;B.*q=2;C.q=p;D.*p=5;

52.有以下程序

#include<stdio.h>

main()

{ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;

for(i=0;i<12;i++)c[s[i]]++;

for(i=1;i<5;i++)printf("%d",c[i]);

printf("\n");

}

程序的運行結果是

A.1234B.2344C.4332D.1123

53.若已建立如下圖所示的單向鏈表結構:在該鏈表結構中,指針p、s分別指向圖中所示結點,則不能將s所指的結點插入到鏈表末尾仍構成單向鏈表的語句組是______。

A.p=p->next;s->next=p;p->next=s;

B.p=p->next;s->next=p->next;p->next=s;

C.s->next=NULL;p=p->next;p->next=s;

D.p=(*p).next;(*s).next=(*p).next;(*p).next=s;

54.下列程序的輸出結果是______。#include<stdio.h>main(){inta,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}

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

55.已定義以下函數(shù);intfun(int*p){return*p;}fun函數(shù)返回值是()。

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

56.若有下列說明和語句,則對結構體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;

A.st.iB.*p.iC.(*p).iD.p->i

57.設p1和p2是指向一個int型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語句是

A.k=*p1+*p2B.p2=k;C.p1=p2;D.k=*p1*(*p2);

58.若程序有宏定義:#defineN100則以下敘述中正確的是______。

A.宏定義中定義了標識符N的值為整數(shù)100

B.在編譯程序對C源程序進行預處理時用100替換標識符N

C.對C源程序進行編譯時用100替換標識符N

D.在運行時用100替換標識符N

59.在說明語句:int*f();中,標識符f代表的是

A.一個用于指向整型數(shù)據(jù)的指針變量

B.一個用于指向一維數(shù)組的行指針

C.一個用于指向函數(shù)的指針變量

D.一個返回值為指針型的函數(shù)名

60.有下列函數(shù)定義:intfun(doublea,doubleb){returna*b;}若下列選項中所用變量都已正確定義并賦值,錯誤的函數(shù)調用是()。

A.if(fun(x,y)){……}

B.z=fun(fun(x,y),fun(x,y));

C.z=fun(fun(x,y)x,y);

D.fun(x,y);

四、選擇題(20題)61.設有定義:charp[]={1,2,3),*q=p;,以下不能計算出一個char型數(shù)據(jù)所占字節(jié)數(shù)的表達式是()。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

62.在最壞情況下,堆排序的時間復雜度是()。

A.0(1902n)B.O(n1092n)C.o(n2)D.0(n1.5)

63.

64.

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

main

{inti;

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

switch(i){case0:printf("%d",i);

case2:printf("%d",i);

default:printf("%d",i);

}

}

A.000102B.000020C.000122D.000111

65.

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

main

{charst[20]="hello\0\t\\\";

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

}

A.99B.520C.1320D.2020

66.

67.

68.有以下程序:

fun(intx)

{intP;

if(x==0||x==l)return(3);

p=x-fun(x-2);

returnp;

}

main

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

程序執(zhí)行后的輸出結果是()。A.A.7B.3C.2D.0

69.若有條件表達式

則以下表達式中能完全等價于表達式(exp.的是()。

A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)

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

A.字符型數(shù)組中可能存放字符串。

B.可以對字符型數(shù)組進行整體輸入、輸出。

C.可以對整型數(shù)組進行整體輸入、輸出。

D.不能在賦值語句中通過賦值運算符“=”對字符型數(shù)組進行整體賦值。

71.

72.在下述程序中,判斷條件“i>j”共執(zhí)行的次數(shù)是

main()

{inti=0,j=10,k=2,s=0;

for(;;)

{i+=k;

if(i>j)

{printf("%d",s);

break;

}s+=i;

}

}

A.4B.7

C.5D.6

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

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

74.以下選項中不能作為C語言合法常量的是

A.’Fab’B.0.7e+9C."\b"D.’\01211’

75.

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

main

{charstr[]1-10]={"china","beijing"),*p=str;

printf("%s\n",p+10);

}

A.ChinaB.BeijingC.ngD.ing

76.三種基本結構中,能簡化大量程序代碼的是()。

A.順序結構B.分支結構C.選擇結構D.重復結構

77.

78.

79.

80.有以下程序:

voidmain()

{intk=0,n=0;

while(k<5)

{switch(k)

{default:break;

case1:n+=k;

case2:

case3:n+=k;

}

k++;

}

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

}

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

A)0B)4

C)6D)7

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:計算并輸出m以內最大的6個能被7或11整除的自然數(shù)之和。m的值由主函數(shù)傳人。例如,若m的值為600,則函數(shù)的值為3515。請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。例如,若二維數(shù)組中的值為13579299946999813570則函數(shù)值為61。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include2#include3#include4#defineM45#defineN56intfun(inta[m][n])7{89}10voidmain()11{12FILE*wf;13intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}};14inti,j,y;15system("CLS");16printf("Theoriginaldatais:\n");17for(i=0;i<m;i++)18{for(j=0;j<n;j++)19printf("%6d",aa[i][j]);20printf("\n");21}22y=fun

溫馨提示

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

評論

0/150

提交評論