2021-2022年遼寧省鞍山市全國計算機(jī)等級考試C語言程序設(shè)計_第1頁
2021-2022年遼寧省鞍山市全國計算機(jī)等級考試C語言程序設(shè)計_第2頁
2021-2022年遼寧省鞍山市全國計算機(jī)等級考試C語言程序設(shè)計_第3頁
2021-2022年遼寧省鞍山市全國計算機(jī)等級考試C語言程序設(shè)計_第4頁
2021-2022年遼寧省鞍山市全國計算機(jī)等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩115頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年遼寧省鞍山市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下敘述中錯誤的是()。

A.C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令

B.C程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進(jìn)制機(jī)器指令文件

C.用C語言編寫的程序稱為源程序,它以ASCII形式存放在一個文本文件中

D.C語言源程序經(jīng)編譯后生成擴(kuò)展名為.obj的目標(biāo)文件

2.當(dāng)接受用戶輸入的含有空格的字符串時,應(yīng)使用()函數(shù)。

A.gets()B.getchar()C.scanf()D.printf()

3.若程序中有宏定義行“#defineN100”,則下列敘述中正確的是()。

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

B.在編譯程序?qū)語言源程序進(jìn)行預(yù)處理時用100替換標(biāo)識符N

C.上述宏定義行實現(xiàn)將100賦給標(biāo)識符N

D.在運行時用100替換標(biāo)識符N

4.第

17

若有條件表達(dá)式(exp)?a++:b--,則以下表達(dá)式中能完全等價于表達(dá)式(exp)的是

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

5.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“THIS\0”,*b=“OK\0\0”;printf(“%d,%d,%d,%d”,strlen(a),sizeof(a),strlen(b),sizeof(b));}程序運行后的輸出結(jié)果是()。

A.4,6,2,4B.4,4,4,1C.6,5,2,1D.6,4,2,4

6.

7.在圖采用鄰接表存儲時,求最小生成樹的Prim算法的時間復(fù)雜度為()。

A.O(n)B.O(n+e)C.O(n2)D.O(n3)

8.判斷字符串s1是否大于字符串s2,應(yīng)該使用()。

A.if(strcmp(s1,s2)<0)

B.if(s1>s2)

C.if(strcmp(s2,s1)<0)

D.if(strcmp(s1,s2))

9.有以下程序:#include<stdio.h>,main(){intS;scanf("%d",&s);while(s>O){switch(s){casel:printf("%d",s+5);case2:printf("%d",s+4);break;case3:printf("%d",s+3);default:("%d",s+1);break;}scanf("%d",&s);}}運行時,若輸入123450<回車>,由輸出結(jié)果是()。A.6566456B.66656C.66666D.6666656

10.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}

A.20B.31C.321D.210

11.以下程序執(zhí)行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不確定D.0

12.如果一個函數(shù)位于C程序文件的上部,在該函數(shù)體內(nèi)說明語句后的復(fù)合語句中定義了一個變量,則該變量().

A.為全局變量,在本程序文件范圍內(nèi)有效

B.為局部變量,只在該函數(shù)內(nèi)有效

C.為局部變量,只在該復(fù)合語句中有效

D.定義無效,為非法變量

13.若有說明charc[7]={'s','t','r','i','n','g'};則對元素的非法引用是()。

A.c[0]B.c[9-6]C.c[4*2]D.c[2*3]

14.

15.有如下程序段

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

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

}

程序運行后輸出的結(jié)果是A.A.63

B.36

C.編譯出錯

D.00

16.若有定義int(*pt)[3];,則下列說法正確的是A.定義了基類型為int的三個指針變量

B.定義了基類型為int的具有三個元素的指針數(shù)組pt

C.定義了一個名為*pt、具有三個元素的整型數(shù)組

D.定義了一個名為pt的指針變量,它可以指向每行有三個整數(shù)元素的二維數(shù)組

17.可以判斷一個有向圖中是否含有回路的方法為()。

A.廣度優(yōu)先遍歷B.深度優(yōu)先遍歷C.拓?fù)渑判駾.求最短路徑

18.以下程序的輸出結(jié)果是()。main{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;for(k=1;k<3;k++)printf("%s\n",w[k]);A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL

19.設(shè)串s1='ABCDEFG',s2='PQRST',函數(shù)StrCat(x,y)返回x和y串的連接串,StrSub(s,i,j)返回串s的從序號i的字符開始的j個字符組成的子串,StrLen(s)返回串s長度,則StrCat(StrSub(s1,2,StrLen(s2)),StrSub(s1,StrLen(s2),2))的結(jié)果串()。

A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF

20.設(shè)有定義:structcomplex{intreal,unreal;}data1={1,8},data2;則下列賦值語句中錯誤的是()。

A.data2=(2,6);

B.data2=data1;

C.data2.real=data1.real;

D.data2.real=data1.unreal;

二、2.填空題(20題)21.下面invert函數(shù)的功能是將一個字符串str的內(nèi)容顛倒過來,請?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;

}

}

22.以下程序中函數(shù)fun()的功能是構(gòu)成一個如圖所示的帶頭結(jié)點的單向鏈表,在結(jié)點的數(shù)據(jù)域中放入了具有兩個字符的字符串。函數(shù)disp的功能是顯示輸出該單向鏈表中所有結(jié)點中的字符串。請?zhí)羁胀瓿珊瘮?shù)disp。

#include<atdio.h>

typedefstructnode/*鏈表結(jié)點結(jié)構(gòu)*/

{charsub[3];

structnode*next;

}Node

Node~un(chars)/*建立鏈表*/

{......}

voiddisp(Node*h)

{Node*Ps

p=h->next;

while(【】)

{printf("%s\n",p->suh);p=【】;}

}

main()

{Node*hd;

hd=fun();disp(hd);prinff("\n");

23.若有如下程序:

voidsub()

{staticintx=6;

x/=2;printf("%d",x);}

main()

{intm;

for(m=0;m<=2;m++)sub();}

則程序運行后的輸出結(jié)果是【】。

24.fun函數(shù)的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大的數(shù),再求這N個最大值中的最小的那個數(shù)作為函數(shù)值返回。請?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;

}

25.關(guān)系表達(dá)式x<y<z,用C語言的表達(dá)式為【】。

26.開發(fā)軟件所需要的高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象被人們稱之為【】。

27.當(dāng)先后輸入1、3、4、12、23時,屏幕上出現(xiàn)【】;再輸入12時,則屏幕上出現(xiàn)【】。

#include<stdio.h>

#defineN5

main()

{inti,j,number,top,bott,min,loca,a[N],flag;

charc;

printf("Pleaseinput5numbers(a[i]>a[i-1])\n");

scanf("%d",&a[0]);

i=1;

while(i<N)

{scanf("%d",&a[i]);

if(a[i]>=a[i-1))i++;

}

printf("\n");

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

printf("\n");

flag=1;

while(flag)

{scanf("%d",&number);

loca=0;

top=0;

bott=N-1;

if((number<a[0])||(number>a[N-1]))loca=-1;

while((loca==0)&&(top<=bott))

{min=(bott+top)/2;

if(number==a[min])

{loca=min;

printf("%disthe%dthnumber\n",number,loca+1);

}

elseif(number<a[min])bott=min-1;

elsetop=min+1;

}

if(loca==0||loca==-1)printf("%disnotinthelist.\n",number);

c=getchar();

if(c=='N'||c=='n')flag=0;

}

}

28.strcat函數(shù)的作用是【】。

29.以下程序的輸出結(jié)果為【】。

#defineJFT(x)x*x

main()

{inta,k=3;

a=++JFT(k+1);

printf("%d",a);

}

30.數(shù)據(jù)庫保護(hù)分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。

31.若a是int型變量,則下列表達(dá)式的值為______。

(a=2*3,a*2),a+4

32.下列語句的輸出結(jié)果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

33.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>

main()

{inti,j,k;

k=0;i=j=【】;

k+=-(i+j);printf("%d\n",k);

}

34.以下程序調(diào)用隨機(jī)函數(shù)得到N個20以內(nèi)的整數(shù)放在s數(shù)組中。函數(shù)fun的功能是找出s數(shù)組中的最大數(shù)(不止一個)所在下標(biāo)傳回主函數(shù)進(jìn)行輸出,并把最大值作為函數(shù)值返回,請?zhí)羁铡?/p>

#defineN30

man()

{ints[N],d[N],i,k,m;

for(i=0,i<N;i++){s[i]=rand()%20;printf("%3d",s[i]);}

m=fun(【】);

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

printf(”Theindex;\n");

for(i=0;i<k;i++)printf("%4d",d[i]);

printf("\n\n");

}

fun(int*w,int*d,int*k)

{inti,j,m=0,v;

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

if(w[i]>w[m])【】;

v=w[m];

for(i=0,j=0;i<N;i++)

if(w[i]==v)【】;

*k=【】;

return【】;

}

35.有以下程序

#include<stdio.h>

main()

{charch1,ch2;intn1,n2;

ch1=getchar();ch2=getchar(

n1=ch1-'0';n2-n1*10+(ch2-'0');

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

}

程序運行時輸入:12<回車>,執(zhí)行后輸出結(jié)果是______。

36.下面程序的輸出結(jié)果是【】。

main()

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

for(i=0;i<10;i++)arr[i]=i;

for(i=0;i<4;i++)k+=arr[i]=i;

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

}

37.數(shù)據(jù)元素之間______的整體稱為邏輯結(jié)構(gòu)。

38.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。

39.用樹形結(jié)構(gòu)表示實體之間聯(lián)系的模型是()。

40.以下程序的運行結(jié)果為【】。

main()

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

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

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

b[j][i]=a[i][j];

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

{for(j=0;j<3;j++)

printf("%-3d",b[i][j]);

printf("\n");

}

}

三、1.選擇題(20題)41.若有以下定義的語句

structstudent

{intage;

intnum;};

structstudentstu[3]={{1001,20},{1002,19},{1003,21}};

main()

{structstudent*p;

p=stu;

…}

則以下不正確的引用是

A.(p++)->numB.p++C.(*p).numD.P=&stu.age.

42.設(shè)x和y均為int型變量,且x=10,y=3,則以下語句的輸出結(jié)果是()printf("%d,%d\n",x--,--y);

A.10,3B.9,3C.9,2D.10,2

43.下列說法不正確的是()。

A.C程序是以函數(shù)為基本單位的,整個程序由函數(shù)組成

B.C語言程序的一條語句可以寫在不同的行上

C.C程序的注釋行對程序的運行功能不起任何作用,所以注釋應(yīng)該盡可能少寫

D.C程序的每個語句都以分號結(jié)束

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

A.一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)

B.數(shù)據(jù)的邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)

C.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理的效率

D.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理的效率

45.在調(diào)用函數(shù)時,如果實參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是_______。

A.地址傳遞B.單向值傳遞C.由實參傳給形,再由形參傳回實參D.傳遞方式由用戶指定

46.以下程序的輸出結(jié)果是#include<stdio.h>in[fun(intn,int*s){intn,f2;if(n==0‖n==1)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2;}}voidmain(){intx;fun(6,&x);pfintf("\n%d",x);}

A.7B.13C.9D.10

47.若有下列語句:chara[]="xyz";charb[]=}'x','y','z'};則下列敘述正確的是______。

A.數(shù)組a和數(shù)組b不等價

B.數(shù)組a和數(shù)組b的長度相同

C.數(shù)組a占用空間大小等于數(shù)組b占用空間大小

D.數(shù)組a占用空間大小大于數(shù)組b占用空間大小

48.下列不是合法的C語言語句是()。

A.a=5B.{inti;i++;}C.;D.{;}

49.下列敘述中錯誤的是()。

A.一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)

B.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率無關(guān)

C.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率密切相關(guān)

D.數(shù)據(jù)的存儲結(jié)構(gòu)在計算機(jī)中所占的空間不一定是連續(xù)的

50.如下程序的輸出結(jié)果是

#include<stdio.h>

main()

{charch[2][5]={"6937","8254"},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)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

51.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實體與實體間的聯(lián)系可以表示成()。

A.屬性B.關(guān)系C.鍵D.域

52.以下程序的輸出結(jié)果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}

A.20B.21C.22D.23

53.有以下程序:main(){intk=5,n=0;while(k>0);{switch(k){default;break;case1:n+=k;case2;case3:n+=k;}k--;}printf("%d\n",n);}程序運行后的輸出結(jié)果是______。

A.0B.4C.6D.7

54.若已定義x和y為double類型,則表達(dá)式x=1,y=x+5/2的值是______。

A.3B.4C.3D.3.5

55.有以下程序:main(){inta[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,)},i,j,k,t;for(i=0;i<4;i++)for(j=0;j<3;j++)for(k=j+1;k<4;k++)if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/for(i=0;i<4;i++)printf("%d,",a[i][i]);}程序運行后的輸出結(jié)果是()。

A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,

56.有以下程序#include<stdio.h>main(){FILE*fp;inti=20,j=30,k,n;fp=fopen("D1v.dat","w");fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序運行后的輸出結(jié)果是()。

A.2030B.2050C.3050D.3020

57.數(shù)據(jù)管理技術(shù)隨著計算機(jī)技術(shù)的發(fā)展而發(fā)展。數(shù)據(jù)庫階段具有許多特點,但下面列出的特點中,______不是數(shù)據(jù)庫階段的特點。

A.數(shù)據(jù)結(jié)構(gòu)化B.數(shù)據(jù)面向應(yīng)用程序C.數(shù)據(jù)共享性高D.數(shù)據(jù)具有較高的獨立性

58.若有如下程序:sub(int*t,inta[3][4]){intm,n;for(m=0;m<3;m++)for(n=0;n<4;n++){*t=a[m][n];t++;}}main(){int*t,s[3][4)={{1,2,3),{4,5,6),{7,8,9}};t=(int*)malloc(50);sub(t,s);printf("%d,%d\n",t[4],t[7]);}則程序運行后的輸出結(jié)果是()。

A.4,7B.4,0C.5,8D.程序錯誤

59.以下數(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};

60.以下關(guān)于函數(shù)的敘述中正確的是______。A.每個函數(shù)都可以被其他函數(shù)調(diào)用(包括main函數(shù))

B.每個函數(shù)都可以被單獨編譯

C.每個函數(shù)都可以單獨運行

D.在一個函數(shù)內(nèi)部可以定義另一個函數(shù)

四、選擇題(20題)61.

下面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次

62.

63.

有以下程序

#include<stdio.h>

intfun(chars[])

{intn=0;

while(*s<=9&&*s>=0){n=10*n+*s-o;s++;)

return(n);

}

main

{chars[10]={6,1,*,4,*,9,*,0,*);

printf("%d",fun(s));

}

程序運行的結(jié)果是()。

A.9B.61490C.61D.5

64.下列關(guān)于數(shù)據(jù)庫設(shè)計的敘述中,正確的是()。

A.在需求分析階段建立數(shù)據(jù)字典

B.在概念設(shè)計階段建立數(shù)據(jù)字典

C.在邏輯設(shè)計階段建立數(shù)據(jù)字典

D.在物理設(shè)計階段建立數(shù)據(jù)字典

65.有以下程序:

程序執(zhí)行后的輸出結(jié)果是()。

A.5B.24C.32D.40

66.下列關(guān)于C語言文件的敘述中正確的是()。

A.文件由一系列數(shù)據(jù)依次排列組成,只能構(gòu)成二進(jìn)制文件

B.文件由結(jié)構(gòu)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件

C.文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件

D.文件由字符序列組成,其類型只能是文本文件

67.

68.若有以下定義和語句:

chars[10]="abcd!",*s2="\nl23\\";

Drintf("%d%d\n",strlen(sl),strlen(s2));

則輸出結(jié)果是()。

A.55B.105C.107D.58

69.有以下程序

#defineN15

fun(inta[],intn,intm)

{inti,j;

for(i=m;i>=n;i--)

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

}

main()

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

fun(a,3,7);

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

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

}

程序的運行結(jié)果是A.A.45678

B.44567

C.45567

D.45677

70.下面四個選項中,均是不合法的用戶標(biāo)識符的選項是()。

A.

B.

C.

D.

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

A.在C語言程序中,main函數(shù)必須放在其他函數(shù)的最前面

B.每個后綴為C的C語言源程序都可以單獨進(jìn)行編譯

C.在C語言程序中,只有main函數(shù)才可單獨進(jìn)行編譯

D.每個后綴為.C的C語言源程序都應(yīng)該包含一個main函數(shù)

72.

73.若有定義語句:inta[21[3],*P[3];則以下語句中正確的是()。

A.p:a;B.p[0]=a;C.p[O]=&a[1][2];D.1a[1]=&a;

74.

75.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.沒有任何關(guān)系

76.以下選項中,能用做用戶標(biāo)識符的是()。

A.voidB.8_8C._0_D.unsigned

77.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}輸出結(jié)果是()。A.28B.27C.42D.4l

78.有以下程序

A.357B.753C.369D.751

79.有以下函數(shù):

函數(shù)的功能是()。

A.將Y所指字符串賦給x所指存儲空間

B.查找x和y所指字符串中是否有

C.統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)

D.統(tǒng)計x和Y所指字符串中相同的字符個數(shù)

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:對M名學(xué)生的學(xué)習(xí)成績,按從低到高的順序找出前m(m≤10)名學(xué)生來,并將這些學(xué)生數(shù)據(jù)存放在一個動態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首地址作為函數(shù)值返回。

請修改程序中的錯誤,使它能得到正確結(jié)果。

注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

六、程序設(shè)計題(1題)82.編寫函數(shù)fun(),其功能是:求出1~1000中能被7或11整除,但不能同時被7和ll整除的所有整數(shù),并將其放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.AC語言中的非執(zhí)行語句不會被編譯,不會被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令,所以A選項錯誤。由C語言構(gòu)成的指令序列稱為C語言源程序,C語言源程序經(jīng)過C語言編譯程序編譯之后,生成一個擴(kuò)展名為.obj的二進(jìn)制文件(稱為目標(biāo)文件);最后要由“連接程序”把此目標(biāo)文件與C語言提供的各種庫函數(shù)連接起來生成一個擴(kuò)展名為.exe的可執(zhí)行文件。故本題答案為A選項。

2.A

3.B宏定義在編譯程序時做了一個簡單的替換,所以B選項正確。故本題答案為B選項。

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

5.Astrlen函數(shù)求得參數(shù)中字符串的長度(不包括字符串結(jié)束標(biāo)識“\\0”)sizeof函數(shù)求得特定類型參數(shù)所占存儲空間的長度。題干中a是數(shù)組名,由于定義時省略維數(shù)大小,因此數(shù)組大小是初始化的字符個數(shù),即a的數(shù)組大小為6。綜上,strlen(a)只計算字符“T”“H”“I”“S”,結(jié)果為4;sizeof(a)求得數(shù)組a的大小,結(jié)果為6;指針b指向一個字符串“OK\\0\\0”,所以strlen(b)只計算字符“O”“K”,結(jié)果為2;sizeof(b)求得指針占用存儲空間的大小,結(jié)果為4。故本題答案為A選項。

6.D

7.B

8.C解析:本題考查字符串比較函數(shù)strcmp()。調(diào)用形式:strcmp(s1,s2),其中s1、s2分別是字符串存儲區(qū)的首地址。函數(shù)功能:比較字符串str1和str2,當(dāng)str1<str2時,返回值為負(fù)數(shù);當(dāng)str1=str2時,返回0;當(dāng)str1>str2,返回值為正數(shù)(注意:不能使用關(guān)系運算符比較兩個字符串的大小)。

9.A根據(jù)題意,當(dāng)s=1時,輸出65;當(dāng)s=2時,輸出6;當(dāng)S=3時,則輸出64;當(dāng)S=4時,輸出5;當(dāng)s=5時,輸出6;當(dāng)s=0時,程序直接退出。所以最后答案為6566456,A選項正確。

10.A解析:n--是先使用后自減,--n是先自減后使用。n=4時,執(zhí)行n--后,n變?yōu)?,執(zhí)行--n后,n變?yōu)?,所以,第一次輸出時,n為2;同上過程,第二次輸出時,n為0。

11.Csum+=i等價于sun+i,在本題中sum沒有賦初值,而題中只輸出sum的值,因此整個結(jié)果為不確定值。

12.C

13.C

14.B

15.B在本題中,程序首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個整型的指針形參變量,在函數(shù)體中,首先定義一個整型指針變量k,然后試圖利用k來交換a和b的結(jié)果。但處理語句k=a;很明顯是對地址進(jìn)行賦值操作。在C語言中,指針變量作為函數(shù)參數(shù)時,可以改變被指向的變量的值,但不能改變指針變量本身的值,即我們可以改變實參指向的變量的值,不能使實參指向其他的變量。因此,本函數(shù)并不能交換形參所指向變量的結(jié)果。

在主函數(shù)中,首先定義了兩個整型變量a和b,并分別被初始化為3和6,然后定義兩個指針變量x和y,分別指向a和b,接著調(diào)用fun函數(shù),傳遞的實參為指針變量x和y,根據(jù)前面對fun函數(shù)的分析可知,調(diào)用該函數(shù)后并不能實現(xiàn)a和b數(shù)組的交換,因此,執(zhí)行輸出語句后,輸出的結(jié)果是36。本題正確答案選B。

16.D解析:定義了一個指向一維數(shù)組的指針,該一維數(shù)組具有三個int型元素,按照C語言中二維數(shù)組的定義知,二維數(shù)組先按照行排列,再按照列排列,故選D。

17.C

18.D當(dāng)k=1時,循環(huán)成立,輸出w[l]的數(shù)組即EFGH,接著執(zhí)行k++后k為2;當(dāng)k=2時,循環(huán)成立,輸出w[2]的數(shù)組即IJKL,接著執(zhí)行k++后,k為3;當(dāng)k=3時,循環(huán)不成立,退出。

19.D

20.AA選項中的語句可以在聲明變量的同時為data2賦值,賦值語句應(yīng)寫作“data2={2,6};”。故本題答案為A選項。

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

22.p!=NULL或P或p!=0或p!='0'p->next或(*p).nextp!=NULL或P或p!=0或p!='0'\r\np->next或(*p).next解析:程序中定義了一個結(jié)構(gòu)體類型名Node,其中定義了一個指向結(jié)點類型的指針next。接下來用Node定義了頭結(jié)點指針變量h和指向第一個結(jié)點的指針變量p,在滿足p未指向最后一個結(jié)點的空指針時(即為NULL),輸出p所指向結(jié)點的字符串,所以第一處應(yīng)填p!=NULL,然后將p指向下一個非空結(jié)點,所以第二處應(yīng)填P->next或與其等效的形式,反復(fù)執(zhí)行直到所有的結(jié)點都輸出。

23.310

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

25.(x<y)&&(y<z)(x<y)&&(y<z)解析:x<y<z的意思是y大于x并且y小于z。在C語言中,表達(dá)“并且”用邏輯與運算符“&&”。

26.軟件危機(jī)軟件危機(jī)

27.134122312isthe4thnumber.

28.連接兩個字符數(shù)組中的字符連接兩個字符數(shù)組中的字符解析:strcat函數(shù)的作用是連接兩個字符數(shù)組中的字符串。

29.99解析:本題中首先將宏替換掉,則表達(dá)式為a=++k+1*k+1=4+1*4+1=9,故最后輸出a的值為9。

30.完整性控制完整性控制

31.1010解析:此題考查逗號表達(dá)式。逗號表達(dá)式的值是最后一個表達(dá)式的值,所以本題的返回值是a+4。前面已經(jīng)給a賦值6,所以追回值a+4=6+4=10。

32.aaaaAAAAAaaaaAAAAA解析:函數(shù)strcat(sp,'AAAAA')的作用是將字符中“AAAAA”連接到字符串sp的末尾,并自動覆蓋字符數(shù)組sp末尾的\'\\0\'。

33.-2-2解析:題目中定義并初始化了變量k為0,最后輸出k的值,要求為4,而在此期間只有k+=-(i+j);這條語句改變了k的值,即要求表達(dá)式-(i+j)的值為4。所以,答案應(yīng)該為-2,因為只有i=j=-2時,表達(dá)式-(i+j)的值才為4。

34.sd&km=id[j++]=ijv

35.1212解析:本題考核的知識點是字符類型數(shù)據(jù)的表示方法和存儲形式。字符類型的數(shù)據(jù)在內(nèi)存中以相應(yīng)的ASCII碼存放,在C語言中,字符數(shù)據(jù)可以等價為與其相應(yīng)的ASCII碼的整數(shù),還可以作為整數(shù)參加運算。在本題中,n1=ch1-'0'='1'-'0'=49-48=1n2=n1*10+(ch2-'0')=1*10+('2'-'0')=10+2=12,所以,最后輸出為12。

36.66解析:本題第1個for循環(huán)是為數(shù)組arr元素賦初值。第2個for循環(huán)是分別用i=0,1,2,3給數(shù)組元素arr[0]、arr[1]、arr[2]、arr[3]賦值,再累加到變量k中,k=0+1+2+3=6。

37.邏輯關(guān)系邏輯關(guān)系

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

39.層次模型層次模型解析:層次模型是最早發(fā)展起來的數(shù)據(jù)庫模型。層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu)。

40.159261037114812159\r\n2610\r\n3711\r\n4812解析:程序的功能是將一個二維數(shù)組的行和列元素互換,存到另一個二維數(shù)組中。

41.D解析:考查對結(jié)構(gòu)體成員的引用方法。結(jié)構(gòu)體成員的引用可以用'結(jié)構(gòu)體變量名.成員名'或者'結(jié)構(gòu)體變量指針->成員名'兩種方式來引用。

42.D

43.C解析:本題涉及C語言基本的3個知識點:①C語言的源程序是由函數(shù)構(gòu)成的,函數(shù)是其基本單位,每一個函數(shù)完成相對獨立的功能,其中只能包括一個主函數(shù);②C語言規(guī)定每個語句以分號結(jié)束,其書寫格式是自由的,一條語句可以寫在不同的行上,或者一行也可以寫多條語句;③注釋行雖然對程序的運行不起作用,但是它可以方便程序員閱讀,提高程序的可讀性和可移植性,所以書寫注釋行還是很有必要的。

44.D解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是對數(shù)據(jù)元素之間的邏輯關(guān)系的描述,它可以用一個數(shù)據(jù)元素的集合和在此集合中定義的若干關(guān)系來表示。數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)(也稱數(shù)據(jù)的物理結(jié)構(gòu))。一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲結(jié)構(gòu),常用的存儲結(jié)構(gòu)有順序、鏈接等存儲結(jié)構(gòu)。但是不同的存儲結(jié)構(gòu)的數(shù)據(jù)的處理效率不同。

45.B解析:C語言函數(shù)中的參數(shù)傳遞方式有傳值與傳址兩種方式,傳值方式是指將實參的值復(fù)制一份傳遞給形參,而傳址方式是指將實參的變量地址傳遞給形參,也就是實參的引用。

46.B

47.D解析:數(shù)組a的存儲空間占4個字節(jié)(結(jié)束符'\\0'占一字節(jié)),數(shù)組a的存儲空間占3個字節(jié)。

48.A解析:選項A)是一個表達(dá)式,它后面沒有分號結(jié)尾(C語言中規(guī)定語句必須以分號結(jié)束),所以它不是語句;選項B)用一個花括號把幾條語句括起來了,這是一個復(fù)合語句;選項C)中只有一個分號,是一個空語句;選項D)是個復(fù)合語句,也是一個空語句。

49.BB?!窘馕觥繑?shù)據(jù)的存儲結(jié)構(gòu)分為順序結(jié)構(gòu)和鏈?zhǔn)浇Y(jié)構(gòu),一個數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)。順序結(jié)構(gòu)中數(shù)據(jù)元素所占的存儲空間是連續(xù)的,而鏈?zhǔn)酱鎯Y(jié)構(gòu)中,數(shù)據(jù)元素所占的存儲空間不一定是連續(xù)的。數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率密切相關(guān)。

50.C解析:考查通過指針引用字符串?dāng)?shù)組中的元素。通過行指針p來實現(xiàn)數(shù)組元素的引用。用格式說明符%s進(jìn)行整串輸入與輸出。

51.B解析:將E-R圖轉(zhuǎn)換成指定RDBMS中的關(guān)系模式是數(shù)據(jù)庫邏輯設(shè)計的主要工作。從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實體和聯(lián)系都可以表示成關(guān)系。

52.B解析:第1個循環(huán)對數(shù)組a進(jìn)行賦值:第2個循環(huán)對數(shù)組p進(jìn)行賦值;第3個循環(huán)對k進(jìn)行累加,k的初值等于5,第1次循環(huán),k=k+p[0]*2=5+0*2=5,第2次循環(huán),k=k+p[1]*2=5+2*2=9,第3次循環(huán),k=k+p[2]*2=9+6*2=21并輸出。

53.D解析:在switch語句中,若case語句后沒有break語句,則執(zhí)行完本層case后會繼續(xù)執(zhí)行后面case中的操作。k的初值為5,while條件成立,進(jìn)入switch(5),執(zhí)行default語句,退出switch,執(zhí)行k--后得4,再進(jìn)入while循環(huán),執(zhí)行switch(4),退出switch,再執(zhí)行k--后得3,繼續(xù)while循環(huán),執(zhí)行switch(3),n=n+k=3,再執(zhí)行k--后得2,進(jìn)入while循環(huán),執(zhí)行case2,再執(zhí)行n=n+k=5,然后執(zhí)行k--后得1,最后一次進(jìn)入while循環(huán),執(zhí)行case1,n=n+k=6,然后繼續(xù)執(zhí)行case2和case3后的語句,n=n+k=7,且執(zhí)行k--后得0,此時while條件不滿足,退出循環(huán),輸出n的值為7。

54.C解析:本題注意數(shù)據(jù)類型的轉(zhuǎn)換以及“/”的使用方法。

55.A解析:本題首先定義了一個4行4列的二維數(shù)組,并用了三層for循環(huán)來進(jìn)行由小到大的排序。外層循環(huán)變量i表示數(shù)組的列.第二層循環(huán)變量j表示數(shù)組的行,第三層循環(huán)用于求第i列第j行的最小值,其中通過if語句對相關(guān)數(shù)值進(jìn)行比較和交換。最后通過for循環(huán)對排序后數(shù)組對角線上的元素輸出。

56.A

57.B解析:數(shù)據(jù)的結(jié)構(gòu)化是數(shù)據(jù)庫階段的重要特征之一。在數(shù)據(jù)庫階段,數(shù)據(jù)不再面向應(yīng)用,而是面向整個系統(tǒng),數(shù)據(jù)的共享性高、冗余小、易于擴(kuò)展。由于數(shù)據(jù)庫三級模式間的兩級映像,所以數(shù)據(jù)具有較高的獨立性。

58.B解析:本題定義了一個sub()函數(shù),其作用為將一個二維數(shù)組按行復(fù)制到t所指的連續(xù)內(nèi)存空間內(nèi)。主程序中首先使用malloc()函數(shù)為t申請了50個字節(jié)的內(nèi)存空間,然后調(diào)用sub()函數(shù),將二維數(shù)組s的內(nèi)容復(fù)制到t申請的內(nèi)存空間內(nèi),最后輸出t的第5個元素(t[4])和第8個元素(t[7]),即為3行4列二維數(shù)組中的s[1][0]和s[1][3]。s[1][0]是初始化列表中第二個大括號中的第一個值4,而s[1][3]應(yīng)該是初始化列表中第二個大括號中的第4個值,但沒有這么多初始值,C語言在這種情況下會自動將該元素設(shè)置為0,即s[3][4]={{1,2,3},{4,5,6},{7,8,9}}等價于s[3][4]={{1,2,3,0},{4,5,6,0),{7,8,9,0}}。所以最后輸出結(jié)果是4,0,應(yīng)該選擇B。

59.B解析:選項B的第1維長度為2,而初始化列表外花括號中包含了3個內(nèi)花括號,所以該選項的定義錯誤,故應(yīng)該選擇B。

60.B解析:本題考查函數(shù)的一些概念.main()函數(shù)是一個程序的主函數(shù),它由系統(tǒng)調(diào)用,所以選項A不正確。一個C語言源程序文件可以只包含一個函數(shù),每個源文件都可以被單獨編譯成。obj文件,最后鏈接成可執(zhí)行文件。因此每個函數(shù)都可以被單獨編譯,選項B正確。一個C程序必須從主函數(shù)main()開始運行,其他函數(shù)只能是直接或間接被main()函數(shù)調(diào)用才能得以運行,因此選項C錯誤。C語言不支持函數(shù)的嵌套定義,所有函數(shù)只能是全局函數(shù),所以選項D錯誤。故應(yīng)該選擇B。

61.D

\n本題考查for循環(huán)的使用。根據(jù)條件考慮x的取值變化,x從1取到5,可以循環(huán)5次,但并不知道y是如何變化的,有可能出現(xiàn)y=19提前跳出循環(huán)的情況,所以是最多執(zhí)行5次。

\n

62.C

63.C

\n在fun函數(shù)中,while循環(huán)的功能是逐個取字符數(shù)組s的字符判斷其是否是數(shù)字。若是則將這些數(shù)字組成一個數(shù)保存到變量n中,并返回變量n的值。

\n

64.A數(shù)據(jù)字典是在需求分析階段建立,在數(shù)據(jù)庫設(shè)計過程中不斷修改、充實和完善的。故答案為A選項。

65.C本題的含義是在1—40的蔓敦的范圍中,只有當(dāng)i的值能被5整除,且i+2的值能被3薹纛時,打印i的值,滿跫這個條件的只有32,選擇c選項。

66.C文件由數(shù)據(jù)序列組成,可以構(gòu)成二進(jìn)制文件或文本文件。故本題答案為C選項。

67.A

68.A\n\\n和\\\\分別為轉(zhuǎn)義字符,各占據(jù)一個字符的位置。

\n

69.B題目中的程序包括主程序main和fun函數(shù)。主程序中定義了一個數(shù)組a,并賦給了初值。通過調(diào)用fun函數(shù),對數(shù)組a中的值進(jìn)行更改操作,最后要求的結(jié)果是輸出數(shù)組a中a[3]~a[7]的值。解決本題的關(guān)鍵在于清楚地理解fun函數(shù)的功能。fun函數(shù)有3個形參,包括1個整型數(shù)組a[],2個整型變量n和m。fun函數(shù)的功能是將數(shù)組a[i+1]的值等于a[i]的值,i的初始值大小為m,依次減1,直到數(shù)值等于n。主函數(shù)調(diào)用fun函數(shù)時,輸入的實參為(a,3,7),即fun函數(shù)要將數(shù)組a[i+1]的值等于a[i]的值,i的取值范圍從7到3,如a[8]=a[7]。fun函數(shù)執(zhí)行完畢,數(shù)組a中的值變?yōu)?,2,3,4,4,5,6,7,9,10。輸出a[3]~a[7]的值為4,4,5,6,7。

70.AC語言規(guī)定的標(biāo)識符只能由字母、數(shù)字和下劃線3種字符組成,第一個字符必須為字母或下劃線,并且不能使用C語言中的關(guān)鍵字作為標(biāo)識符。選項A)中g(shù)ot0和

71.BC語言是一種成功的系統(tǒng)描述語言,具有良好的移植性,每個后綴為.C的C語言源程序都可以單獨進(jìn)行編譯。

72.A

73.CA選項錯誤,因為P是指向一個指針數(shù)組,作為數(shù)組名,不能指向別的地方。B選項錯誤,因為P[0]是一個int指針,也就是int-;而a是一個指向指針的指針in‘}}。c選項正確,因為p[O]是一個int},a[1][2]是int,&a[1][2]是int+,類型吻合。D選項錯誤,因為a作為數(shù)組名,不能取地址。即使能取,P[1]是int·,&a是int+t;,類型不對。因此C選項正確。

74.C

75.C(10)C)解析:DB即數(shù)據(jù)庫(Database),是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合;DBMS即數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem),是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪問DB的方法;DBS即數(shù)據(jù)庫系統(tǒng)(DatabaseSystem)由如下5部分組成,數(shù)據(jù)庫(數(shù)據(jù))、數(shù)據(jù)庫管理系統(tǒng)(軟件)、數(shù)據(jù)庫管理員(人員)、系統(tǒng)平臺之一——硬件平臺(硬件)、系統(tǒng)平臺之二——軟件平臺(軟件)。

76.C標(biāo)識符由字母、數(shù)字和下劃線組成。開頭必須是字母或下劃線且區(qū)分大小寫。在C語言中,預(yù)先定義了一些標(biāo)識符,以作專門用途,稱為關(guān)鍵字,標(biāo)識符不能與關(guān)鍵字相同。選項A和D是關(guān)鍵字,選項B是數(shù)字開頭的,所以都不正確。

77.C只有當(dāng)3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數(shù)只有42,故選擇C選項。

78.A二維數(shù)組定義行數(shù)可以省略,列數(shù)不能省略,所以答案選擇A)。

79.C本題中由循環(huán)條件可知遇到‘\0’或x與y所指的字符的值不等中的一個條件時就結(jié)束,所以功能是統(tǒng)計x和Y所指字符串中最前面連續(xù)相同的字符個數(shù)。

80.C81.(1)錯誤:*t=calloe(m,sizeof(STU));

正確:(structss*)calloc(m,sizeof(STU));

(2)錯誤:for(i=j=0;i<M;j++)

正確:for(i=j=0;i<M;i++)

(3)錯誤:t[k].s=b[j].s;

正確:t[k]=b[j];

【解析】由函數(shù)proc()可知,變量t是指向動態(tài)存儲空間的變量,因此不能間接訪問運算符,而函數(shù)calloc的返回值類型為void*,要進(jìn)行顯式類型轉(zhuǎn)換,因此“*t=calloc(m,si-zeof(STU));”應(yīng)改為“(structss*)calloc(m,sizeof(STU));”。

由程序可知,變量i為控制學(xué)生個數(shù)的變量,因此“for(i=j=

82.

【解析】根據(jù)題意,所寫函數(shù)要用for循環(huán)實現(xiàn)對整數(shù)1~1000的遍歷;通過if語句找出能被7或11整除,但不能同時被7和11整除的所有整數(shù),因為同時被7和11整除的整數(shù)一定能被77整除,且不能被77整除的數(shù)不一定就是能被7或11整除,可得出表達(dá)式“(i%7==0||i%11==O)&&i%77!=0”;再按題目要求,將找出來的整數(shù)放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)即可。

2021-2022年遼寧省鞍山市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下敘述中錯誤的是()。

A.C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令

B.C程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進(jìn)制機(jī)器指令文件

C.用C語言編寫的程序稱為源程序,它以ASCII形式存放在一個文本文件中

D.C語言源程序經(jīng)編譯后生成擴(kuò)展名為.obj的目標(biāo)文件

2.當(dāng)接受用戶輸入的含有空格的字符串時,應(yīng)使用()函數(shù)。

A.gets()B.getchar()C.scanf()D.printf()

3.若程序中有宏定義行“#defineN100”,則下列敘述中正確的是()。

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

B.在編譯程序?qū)語言源程序進(jìn)行預(yù)處理時用100替換標(biāo)識符N

C.上述宏定義行實現(xiàn)將100賦給標(biāo)識符N

D.在運行時用100替換標(biāo)識符N

4.第

17

若有條件表達(dá)式(exp)?a++:b--,則以下表達(dá)式中能完全等價于表達(dá)式(exp)的是

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

5.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“THIS\0”,*b=“OK\0\0”;printf(“%d,%d,%d,%d”,strlen(a),sizeof(a),strlen(b),sizeof(b));}程序運行后的輸出結(jié)果是()。

A.4,6,2,4B.4,4,4,1C.6,5,2,1D.6,4,2,4

6.

7.在圖采用鄰接表存儲時,求最小生成樹的Prim算法的時間復(fù)雜度為()。

A.O(n)B.O(n+e)C.O(n2)D.O(n3)

8.判斷字符串s1是否大于字符串s2,應(yīng)該使用()。

A.if(strcmp(s1,s2)<0)

B.if(s1>s2)

C.if(strcmp(s2,s1)<0)

D.if(strcmp(s1,s2))

9.有以下程序:#include<stdio.h>,main(){intS;scanf("%d",&s);while(s>O){switch(s){casel:printf("%d",s+5);case2:printf("%d",s+4);break;case3:printf("%d",s+3);default:("%d",s+1);break;}scanf("%d",&s);}}運行時,若輸入123450<回車>,由輸出結(jié)果是()。A.6566456B.66656C.66666D.6666656

10.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}

A.20B.31C.321D.210

11.以下程序執(zhí)行后sum的值是()。main{inti,sum;for(i=1;i<6;i++)sum+=i:printf("1%d\n",sum):}A.15B.14C.不確定D.0

12.如果一個函數(shù)位于C程序文件的上部,在該函數(shù)體內(nèi)說明語句后的復(fù)合語句中定義了一個變量,則該變量().

A.為全局變量,在本程序文件范圍內(nèi)有效

B.為局部變量,只在該函數(shù)內(nèi)有效

C.為局部變量,只在該復(fù)合語句中有效

D.定義無效,為非法變量

13.若有說明charc[7]={'s','t','r','i','n','g'};則對元素的非法引用是()。

A.c[0]B.c[9-6]C.c[4*2]D.c[2*3]

14.

15.有如下程序段

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

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

}

程序運行后輸出的結(jié)果是A.A.63

B.36

C.編譯出錯

D.00

16.若有定義int(*pt)[3];,則下列說法正確的是A.定義了基類型為int的三個指針變量

B.定義了基類型為int的具有三個元素的指針數(shù)組pt

C.定義了一個名為*pt、具有三個元素的整型數(shù)組

D.定義了一個名為pt的指針變量,它可以指向每行有三個整數(shù)元素的二維數(shù)組

17.可以判斷一個有向圖中是否含有回路的方法為()。

A.廣度優(yōu)先遍歷B.深度優(yōu)先遍歷C.拓?fù)渑判駾.求最短路徑

18.以下程序的輸出結(jié)果是()。main{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;for(k=1;k<3;k++)printf("%s\n",w[k]);A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL

19.設(shè)串s1='ABCDEFG',s2='PQRST',函數(shù)StrCat(x,y)返回x和y串的連接串,StrSub(s,i,j)返回串s的從序號i的字符開始的j個字符組成的子串,StrLen(s)返回串s長度,則StrCat(StrSub(s1,2,StrLen(s2)),StrSub(s1,StrLen(s2),2))的結(jié)果串()。

A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF

20.設(shè)有定義:structcomplex{intreal,unreal;}data1={1,8},data2;則下列賦值語句中錯誤的是()。

A.data2=(2,6);

B.data2=data1;

C.data2.real=data1.real;

D.data2.real=data1.unreal;

二、2.填空題(20題)21.下面invert函數(shù)的功能是將一個字符串str的內(nèi)容顛倒過來,請?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;

}

}

22.以下程序中函數(shù)fun()的功能是構(gòu)成一個如圖所示的帶頭結(jié)點的單向鏈表,在結(jié)點的數(shù)據(jù)域中放入了具有兩個字符的字符串。函數(shù)disp的功能是顯示輸出該單向鏈表中所有結(jié)點中的字符串。請?zhí)羁胀瓿珊瘮?shù)disp。

#include<atdio.h>

typedefstructnode/*鏈表結(jié)點結(jié)構(gòu)*/

{charsub[3];

structnode*next;

}Node

Node~un(chars)/*建立鏈表*/

{......}

voiddisp(Node*h)

{Node*Ps

p=h->next;

while(【】)

{printf("%s\n",p->suh);p=【】;}

}

main()

{Node*hd;

hd=fun();disp(hd);prinff("\n");

23.若有如下程序:

voidsub()

{staticintx=6;

x/=2;printf("%d",x);}

main()

{intm;

for(m=0;m<=2;m++)sub();}

則程序運行后的輸出結(jié)果是【】。

24.fun函數(shù)的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大的數(shù),再求這N個最大值中的最小的那個數(shù)作為函數(shù)值返回。請?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;

}

25.關(guān)系表達(dá)式x<y<z,用C語言的表達(dá)式為【】。

26.開發(fā)軟件所需要的高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象被人們稱之為【】。

27.當(dāng)先后輸入1、3、4、12、23時,屏幕上出現(xiàn)【】;再輸入12時,則屏幕上出現(xiàn)【】。

#include<stdio.h>

#defineN5

main()

{inti,j,number,top,bott,min,loca,a[N],flag;

charc;

printf("Pleaseinput5numbers(a[i]>a[i-1])\n");

scanf("%d",&a[0]);

i=1;

while(i<N)

{scanf("%d",&a[i]);

if(a[i]>=a[i-1))i++;

}

printf("\n");

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

printf("\n");

flag=1;

while(flag)

{scanf("%d",&number);

loca=0;

top=0;

bott=N-1;

if((number<a[0])||(number>a[N-1]))loca=-1;

while((loca==0)&&(top<=bott))

{min=(bott+top)/2;

if(number==a[min])

{loca=min;

printf("%disthe%dthnumber\n",number,loca+1);

}

elseif(number<a[min])bott=min-1;

elsetop=min+1;

}

if(loca==0||loca==-1)printf("%disnotinthelist.\n",number);

c=getchar();

if(c=='N'||c=='n')flag=0;

}

}

28.strcat函數(shù)的作用是【】。

29.以下程序的輸出結(jié)果為【】。

#defineJFT(x)x*x

main()

{inta,k=3;

a=++JFT(k+1);

printf("%d",a);

}

30.數(shù)據(jù)庫保護(hù)分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。

31.若a是int型變量,則下列表達(dá)式的值為______。

(a=2*3,a*2),a+4

32.下列語句的輸出結(jié)果是______。

chars[20]="aaaa",*sp=s;

puts(strcat(sp,"AAAAA"));

33.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>

main()

{inti,j,k;

k=0;i=j=【】;

k+=-(i+j);printf("%d\n",k);

}

34.以下程序調(diào)用隨機(jī)函數(shù)得到N個20以內(nèi)的整數(shù)放在s數(shù)組中。函數(shù)fun的功能是找出s數(shù)組中的最大數(shù)(不止一個)所在下標(biāo)傳回主函數(shù)進(jìn)行輸出,并把最大值作為函數(shù)值返回,請?zhí)羁铡?/p>

#defineN30

man()

{ints[N],d[N],i,k,m;

for(i=0,i<N;i++){s[i]=rand()%20;printf("%3d",s[i]);}

m=fun(【】);

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

printf(”Theindex;\n");

for(i=0;i<k;i++)printf("%4d",d[i]);

printf("\n\n");

}

fun(int*w,int*d,int*k)

{inti,j,m=0,v;

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

if(w[i]>w[m])【】;

v=w[m];

for(i=0,j=0;i<N;i++)

if(w[i]==v)【】;

*k=【】;

return【】;

}

35.有以下程序

#include<stdio.h>

main()

{charch1,ch2;intn1,n2;

ch1=getchar();ch2=getchar(

n1=ch1-'0';n2-n1*10+(ch2-'0');

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

}

程序運行時輸入:12<回車>,執(zhí)行后輸出結(jié)果是______。

36.下面程序的輸出結(jié)果是【】。

main()

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

for(i=0;i<10;i++)arr[i]=i;

for(i=0;i<4;i++)k+=arr[i]=i;

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

}

37.數(shù)據(jù)元素之間______的整體稱為邏輯結(jié)構(gòu)。

38.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。

39.用樹形結(jié)構(gòu)表示實體之間聯(lián)系的模型是()。

40.以下程序的運行結(jié)果為【】。

main()

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

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

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

b[j][i]=a[i][j];

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

{for(j=0;j<3;j++)

printf("%-3d",b[i][j]);

printf("\n");

}

}

三、1.選擇題(20題)41.若有以下定義的語句

structstudent

{intage;

intnum;};

structstudentstu[3]={{1001,20},{1002,19},{1003,21}};

main()

{structstudent*p;

p=stu;

…}

則以下不正確的引用是

A.(p++)->numB.p++C.(*p).numD.P=&stu.age.

42.設(shè)x和y均為int型變量,且x=10,y=3,則以下語句的輸出結(jié)果是()printf("%d,%d\n",x--,--y);

A.10,3B.9,3C.9,2D.10,2

43.下列說法不正確的是()。

A.C程序是以函數(shù)為基本單位的,整個程序由函數(shù)組成

B.C語言程序的一條語句可以寫在不同的行上

C.C程序的注釋行對程序的運行功能不起任何作用,所以注釋應(yīng)該盡可能少寫

D.C程序的每個語句都以分號結(jié)束

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

A.一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)

B.數(shù)據(jù)的邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)

C.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理的效率

D.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理的效率

45.在調(diào)用函數(shù)時,如果實參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是_______。

A.地址傳遞B.單向值傳遞C.由實參傳給形,再由形參傳回實參D.傳遞方式由用戶指定

46.以下程序的輸出結(jié)果是#include<stdio.h>in[fun(intn,int*s){intn,f2;if(n==0‖n==1)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2;}}voidmain(){intx;fun(6,&x);pfintf("\n%d",x);}

A.7B.13C.9D.10

47.若有下列語句:chara[]="xyz";charb[]=}'x','y','z'};則下列敘述正確的是______。

A.數(shù)組a和數(shù)組b不等價

B.數(shù)組a和數(shù)組b的長度相同

C.數(shù)組a占用空間大小等于數(shù)組b占用空間大小

D.數(shù)組a占用空間大小大于數(shù)組b占用空間大小

48.下列不是合法的C語言語句是()。

A.a=5B.{inti;i++;}C.;D.{;}

49.下列敘述中錯誤的是()。

A.一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲結(jié)構(gòu)

B.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率無關(guān)

C.數(shù)據(jù)的存儲結(jié)構(gòu)與數(shù)據(jù)的處理效率密切相關(guān)

D.數(shù)據(jù)的存儲結(jié)構(gòu)在計算機(jī)中所占的空間不一定是連續(xù)的

50.如下程序的輸出結(jié)果是

#include<stdio.h>

main()

{charch[2][5]={"6937","8254"},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)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

51.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實體與實體間的聯(lián)系可以表示成()。

A.屬性B.關(guān)系C.鍵D.域

52.以下程序的輸出結(jié)果是______。main(){inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k+=p[i]*2;printf("%d\n",k);}

A.20B.21C.22D.23

53.有以下程序:main(){intk=5,n=0;while(k>0);{switch(k){default;break;case1:n+=k;case2;case3:n+=k;}k--;}printf("%d\n",n);}程序運行后的輸出結(jié)果是____

溫馨提示

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

最新文檔

評論

0/150

提交評論