2022年陜西省咸陽市全國計算機等級考試C語言程序設(shè)計_第1頁
2022年陜西省咸陽市全國計算機等級考試C語言程序設(shè)計_第2頁
2022年陜西省咸陽市全國計算機等級考試C語言程序設(shè)計_第3頁
2022年陜西省咸陽市全國計算機等級考試C語言程序設(shè)計_第4頁
2022年陜西省咸陽市全國計算機等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩104頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022年陜西省咸陽市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.判斷有向圖是否存在回路,利用()方法最佳。

A.求關(guān)鍵路徑B.求最短路徑C.拓撲排序D.廣度優(yōu)先遍歷

2.

3.執(zhí)行下述程序后,輸出的結(jié)果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/s(k+m);printf("%d",a);}A.1B.4C.9D.0

4.有以下程序:#includc<stdio.h>voidfun(int*p){printf("%d\n",p[5]);}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};fun(&a[3]);}程序運行后的輸出結(jié)果是()。A.5B.6C.8D.9

5.

有以下程序:

main()

{intk=5,n=0;

do

{switch(k)

{case1:

case3:n+=l;k--;break;

defalut:n=0;k--;

case2:

case4:n+=2;k--;break:

}

printf("%d",n);

}while(k>0&&n<5);

}

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

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

6.設(shè)有下列二叉樹:

對此二叉樹先序遍歷的結(jié)果為

A.ABCDEFB.DBEAFCC.ABDECPD.DEBFCA

7.是哈希查找的沖突處理方法()。

A.求余法B.平均取中法C.二分法D.開放地址法

8.有以下程序:#include<stdio.h>intshow(char*str){while(*str){putchar(*str+1);str++;}return*str+1;}main(){printf(“%d\n”,show(“ABCD”));}程序運行后的輸出結(jié)果是()。

A.ABCD0B.BCDE0C.BCDE1D.ABCD1

9.有以下程序:main(){intx[8]={8,7,6,5,O,0},*s;s=x+3;printf("%d\n",s[2]);}執(zhí)行后輸出結(jié)果是()。

A.隨機值B.0C.5D.6

10.

11.

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

13.判定一個順序棧st(最多元素為MaxSize)為滿的條件是()。A.st->top!B.st->top!C.top==-1D.top==MaxSize

14.下列選項中,不是一個算法的基本特征的是()。

A.完整性B.可行性C.有窮性D.擁有足夠的情報

15.有下列程序:main{inti,j,x=0;for(i=0,i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++:}x++:}printf("x=%d\n",x);}程序執(zhí)行后的輸出結(jié)果是()。A.x=4B.x=8C.x=6D.x=12

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

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

17.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

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

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

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

A.算法的執(zhí)行效率與數(shù)據(jù)存儲結(jié)構(gòu)無關(guān)

B.算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)

C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止

D.以上3種描述都不對

19.設(shè)有以下定義uniondata{intd1;floatd2;)demo;則下面敘述中錯誤的是()。A.變量demo與成員d2所占的內(nèi)存字節(jié)數(shù)相同

B.變量demo中各成員的地址相同

C.變量demo和各成員的地址相同

D.若給demo.d1賦99后,demo.d2中的值是99.0

20.

二、2.填空題(20題)21.以下程序的功能是輸出字符串。請?zhí)羁铡?/p>

main()

{char*a[]={"Pascal","Clanguage","dbase","Cobol"};

char【】;

intj=0;

p=a;

for(;j<4;j++)

print{("%s\n",*【】);

}

22.下列程序的輸出結(jié)果是______。

#defineLEN5

inta[LEN],k;

main()

{fun1();

fun2();

}

fun1()

{for(k=0;k<LEN;k++)

a[k]=k;

}

fun2()

{intk;

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

printf("%d",*(a+k));

}

23.在軟件生命周期中,【】階段是花費最多、持續(xù)時間最長的階段。

24.有以下程序:

intf(intn)

{if(n==1)retum1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

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

}

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

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

26.以下程序輸出的結(jié)果是#include<stdio.h>#include<string.h>main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"}1,k;for(k=1;k<3;k++)printf("%s\n",&w[k][k]);}

27.以下程序的功能是:從低位開始取出長整型變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。請?zhí)羁铡?include<stdio.h>main(){longs,t,s1=10;pfintf("\n.Pleaseenters:");scanf("%1d",&s);t=s%10;while(s>0){s=s/100;t=();s1=s1*10;}printf("Theresultis:%1d\n",t);}

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

a>=0?【】:【】

29.若想通過以下輸入語句使a=5.0,b=4,c=3,則輸入數(shù)據(jù)的形式應(yīng)該是【】。

intb,c;floata;

scanf("%f,%d,c=%d",&a,&b,&c)

30.結(jié)構(gòu)化分析方法是面向______進行分析的方法。

31.下列程序的循環(huán)次數(shù)是______。

x=2;

do

{x=x*x;}

while(!x);

32.現(xiàn)有兩個C程序文件T18.c和myfun.c同在TC系統(tǒng)目錄(文件夾)下,其中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!,則輸出結(jié)果是【】。

33.閱讀下列程序,則程序的輸出結(jié)果為______。

#include"stdio.h"

struetty

{intdata;

charc;};

main()

{streettya={30,'x'};

fun(a);

printf("%d%c",a.data,a.c);}

fun(structtyb)

{b.data=20;

b.c='y';}

34.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

35.下列程序運行后的輸出結(jié)果是______。

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

運行程序,輸入HOWAREYOU。

36.在關(guān)系模型中,二維表的行稱為______。

37.在對文件進行操作的過程中,若要求文件的位置回到文件的開頭,應(yīng)當調(diào)用的函數(shù)是【】函數(shù)。

38.數(shù)據(jù)流圖的類型有【】和事務(wù)型。

39.有以下程序段,且變量已正確定義和賦值

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

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

請?zhí)羁?使下面程序段的功能與之完全相同

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

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

40.以下程序的功能是將字符串s中的數(shù)字字符放人d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串a(chǎn)bc123edf456gh,執(zhí)行程序后輸出123456。請?zhí)羁铡?/p>

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

}

三、1.選擇題(20題)41.“商品”與“顧客”兩個實體集之間的聯(lián)系一般是

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

42.請選出以下程序段的輸出結(jié)果______。#include<stdio.h>#defineMIN(x,y)(x)<(y)?(x):(y)main(){inti,j,k;i=10;j=15;k=10*MIN(i,j);printf("%d\n",k);}

A.15B.100C.10D.150

43.請選出可用作C語言用戶標識符的一組()。

A.voiddefineWORD

B.a3_b3_123IF

C.For_abccase

D.2aDOsizeof

44.有以下程序,其中函數(shù)的功能是將多個字符串按字典順序排序:#include<string.h>voidf(char*p[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])>0){t=p[i];p[i]=p[j]p[j]=t;}}main(){char*p[5]={"abc","aabdfg","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[1]));}程序運行后的輸出結(jié)果是______。

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

45.計算機病毒不能破壞()中的軟件。

A.ROMB.RAMC.軟盤D.硬盤

46.以理程序的輸出結(jié)果______。main(){charst[20]="he11\O\t\\";printf("%d%d\n",str1en(st),sizeof(st));}

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

47.有以下程序main(){chars[]="159",*p;p=s;printf("%c",*p++);printf("%c",*p++);}程序運行后的輸出結(jié)果是______。

A.15B.16C.12D.59

48.在C語言中,引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型允許是()。

A.整型表達式B.整型常量C.整型常量或整型表達式D.任何類型的表達式

49.有下列程序:main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4;n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5);}程序運行后的輸出結(jié)果是()。

A.235B.235C.2356D.2356

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

A.數(shù)據(jù)庫包括數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)

B.數(shù)據(jù)庫系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)

C.數(shù)據(jù)庫管理系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫系統(tǒng)

D.三者沒有明顯的包含關(guān)系

51.下列程序執(zhí)行輸出的結(jié)果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}

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

52.當用戶要求輸入的字符串中含有空格時,應(yīng)使用的輸入函數(shù)是()。

A.scanfB.getcharC.getsD.getc

53.按照“先進后出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

54.數(shù)據(jù)庫系統(tǒng)可分為三級模式,下列選項中不屬于數(shù)據(jù)庫三級模式的是

A.抽象模式B.外模式C.概念模式D.內(nèi)模式

55.若有說明intm[3][4]={3,9,7,8.5},(*q)[4];和賦值語句q=m;,則對數(shù)組元素m[i][j](其中0<=i<3,0<=j<4)值的正確引用為()。

A.(q+i)[j]B.*q[i][j]C.*(*q[i]+j)D.*(*(q+i)+j)

56.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}

A.6,2B.6,4C.8,4D.8,6

57.以下程序的輸出結(jié)果是main(){intc=35;printf("%d\n",c&c);}

A.0B.70C.35D.1

58.有定義語句: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);

59.以下合法的賦值語句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

60.C語言中用于結(jié)構(gòu)化程序設(shè)計的3種基本結(jié)構(gòu)是()。

A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

B.if、switch、break

C.for、while、do-while

D.if、for、continue

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

fun(inta,intb)

{a++;b++;

if(a>b)return(a);

elsereturn(b);

}

void

main()

{intx=3,y=8,z=6,r;

r=fun(fun(x,y++),2*z);

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

}

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

A.13B.6

C.8D.12

62.有以下程序:

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

A.9,18B.8,11C.7,11D.10,14

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

A.改變函數(shù)形參的值,不會改變對應(yīng)實參的值

B.函數(shù)可以返回地址值

C.可以給指針變量賦一個整數(shù)作為地址值

D.當在程序的開頭包含文件stdi0.h時,可以給指針變量賦NULL

64.

65.設(shè)a=l,b=2,c=3,d=4,則表達式:“a<b?a:b<b?a:c<d?a:d”的結(jié)果為()。A.4B.3C.2D.1

66.

67.設(shè)有如下程序段

68.有如下程序段

#include"stdio.h"

main()

{intk[10];

intj;

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

scanf("%d",&k[j]);

for(j=9;j>=0;j--)

printf("%d",k[j]);}

則程序段實現(xiàn)的功能是

A.輸入10個數(shù)據(jù)的順序輸入并輸出

B.輸入10個數(shù)據(jù)的逆序存放

C.輸入10個數(shù)據(jù)的逆序輸出

D.以上敘述均錯誤

69.

70.有以下程序:

從第一列開始輸入以下數(shù)據(jù)(<CR>代表一個回車符.:

2743<CR>

程序的輸出結(jié)果是()。

A.66877B.668966C.6677877D.6688766

71.

72.

73.

74.以下不合法的字符常量是

A.’x\018’B.’\"’C.’\\’D.’\xcc’

75.以下敘述中錯誤的是

A.C語言源程序經(jīng)編譯后生成后綴為.obj的目標程序

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

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

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

76.以下不能輸出字符A的語句是()(注:字符A的ASCIl碼值為65,字符a的ASCIl碼值為97)。

77.以下結(jié)構(gòu)體類型說明和變量定義中正確的是()。

78.有以下程序:

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

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

79.

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

A)C程序中的#include和#define行均是C語句,只是語法不同

B)除賦值運算符外,逗號運算符的優(yōu)先級最低

C)C程序中,j++;是賦值語句

D)C程序中,+、-、*、/、%號是算數(shù)運算符,可用于整型和實型數(shù)的運算

五、程序改錯題(1題)81.下列給定程序中,proc()函數(shù)的功能是:根據(jù)形參m,計算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若輸入10,則應(yīng)輸出2.928968。請修改程序中的錯誤,使它能計算出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫一個函數(shù)fun(),該函數(shù)的功能是將大于整數(shù)m且緊靠m的k個素數(shù)存入所指的數(shù)組中。例如,若輸入17、5,則應(yīng)輸出19、23、29、31、37。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.C

2.D

3.D本題j=要是考查帶參數(shù)的宏的定義,過程如下:inta=a/S(k+m)/S(k+m)=a/(k+m*k+m/k+m)=9/(3十2*3十2/3十2*3十2)=0。

4.B由題可知,fun(&a[3])是將&a[3]作為參數(shù),而fun(int*p)后執(zhí)行的語句為p[5],由數(shù)組a可知輸出的為6。

5.B

\n本題考查分支語句用法加個句號因為變量的初始值分別為k一5、n一0,所以程序第1次進入循環(huán)時,執(zhí)行default語句,輸出0,k減1;這時n=0、k=4,程序進行第2次循環(huán),執(zhí)行case4:這個分支,結(jié)果是n=2、k=3,打印出2;這時n=2、k=3,break跳出,程序進行第3次循環(huán),執(zhí)行case3:這個分支,結(jié)果是n=3、k=2,打印出3;這時n一3、k2,b¨ak跳出,程序然后進行第4次循環(huán),執(zhí)行case2:case4:這個分支,結(jié)果是n=5、k=1,打印出5,break跳出,這時因為n=5不滿足n<5的循環(huán)條件,因此循環(huán)結(jié)束。

\n

6.C解析:二叉樹的遍歷分為先序,中序、后序三種不同方式.本題要求先序遍歷,其遍歷順序應(yīng)該為:訪問根結(jié)點->,先序遍歷左子樹->先序遍歷右子樹。按照定義,先序遍歷序列是ABDECF,故答案為C。

7.D

8.C函數(shù)putchar每次輸出一個字符。表達式“*str+1”將對字符加1,因此字符串“ABCD”的每個字符都加1,字符串結(jié)束標識‘\\0’也會加1,輸出1,結(jié)果為BCDE1。故本題答案為C選項。

9.B解析:通過賦值語句“s=x+3”,使指針變量s指向數(shù)組元素x[3],輸出語句中的spl等價于*(s+2),即x[5]值為0。所以,B選項為所選。

10.D

11.A

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

13.D

14.A解析:作為一個算法,一般應(yīng)該具有下列4個特征:(1)可行性,即考慮到實際的條件能夠達到一個滿意的結(jié)果;(2)確定性,算法中的每一個步驟都必須是有明確定義的,(3)有窮性,一個算法必須在有限的時間內(nèi)做完;(4)擁有足夠的情報。

15.B在第1次外層for循環(huán)中,首先x++得到x=1。進入到內(nèi)層for循環(huán),只有循環(huán)j的值為奇數(shù)時,變量x的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過程中,變量x的值自加兩次,當退出內(nèi)層for循環(huán)時,x=3,然后執(zhí)行x++,得到x=4。在進入執(zhí)行第2次外層for循環(huán)中,首先x++得到x=5。進入到內(nèi)層for循環(huán),只有循環(huán)變量j的值為奇數(shù)時,變量x的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過程中,變量X的值自加1兩次,當退出內(nèi)層for循環(huán)時,x=7,然后執(zhí)行x++,得到x=8,所以打印輸出變量x的值為8。

16.A

17.Cf函數(shù)的功能是對形參a的各個成員用結(jié)構(gòu)體變量b的各個成員進行賦值后,然后返回變量a。

18.C在程序設(shè)計中,算法執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)密切相關(guān)。算法的空間復(fù)雜度是指算法執(zhí)行過程中所需存儲空間。

19.D共用體變量中的所有成員共享一段公共存儲區(qū),所有成員的首地址相同。在每一個時刻所有的成員中只有一個有效,即只有最后一個被賦值的成員有效,其余的成員無效。

20.D

21.**p(p+i)

22.01234。01234。解析:函數(shù)fun1給數(shù)組a的每個元素賦值,fun2則輸出結(jié)果。

23.維護維護

24.33解析:i=1時,f(1)=1,j=j+f(1)=0+1=1;i=2時,f2=f(1)+1=1+1=2,j=j+f(2)=1+3=3;此時循環(huán)結(jié)束,程序運行后的輸出結(jié)果是3。

25.完整性控制完整性控制

26.D

27.s%10*s1+t

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

29.5.04c=35.0,4,c=3解析:scanf(掐式控制,地址列表),如果在“格式控制”字符串中除了格式說明以外還有其他字符,則在輸入數(shù)據(jù)時應(yīng)輸入與這些字符相同的字符。所以此題中輸入數(shù)據(jù)的形式是5.04,c=3。

30.數(shù)據(jù)流數(shù)據(jù)流解析:結(jié)構(gòu)化分析方法的實質(zhì)是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。

31.11解析:do…while語句的功能是:首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達式的值,若為真,則重復(fù)執(zhí)行循環(huán)體語句,否則退出循環(huán);do…while語句的特點是先執(zhí)行后判斷,因此循環(huán)體至少執(zhí)行1次.本程序中x=2不符合循環(huán)條件,所以只循環(huán)1次。

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

33.30x30x解析:本題的參數(shù)傳遞屬于值傳遞,所以被調(diào)用函數(shù)內(nèi)不能改變調(diào)用函數(shù)中的數(shù)據(jù)。

34.調(diào)試調(diào)試

35.HOWHOW解析:在scanf()函數(shù)中,使用空格作為分隔符,如果輸入含有空格的字符中,則不能使用scanf()數(shù),所以本題中輸入空格就返回了'\\0\\,s數(shù)組也就確定了,后面的輸入就不再讀入數(shù)組s中。

36.元組元組解析:在關(guān)系型數(shù)據(jù)庫中,用二維表來表示關(guān)系,二維表的表名即關(guān)系名,二維表的行稱為關(guān)系的元組,二維表的列,稱為關(guān)系的屬性。

37.rewind()或fseek()rewind()或fseek()

38.變換型典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。變換型是指信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內(nèi)部形式,進入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng);在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。

39.k<=nk++k<=n,k++解析:本題要求將一個for循環(huán)改成while循環(huán)。首先要保證循環(huán)條件相同,在for循環(huán)中,每次執(zhí)行循環(huán)之后,循環(huán)控制變量k都會加1,而while循環(huán)則沒有,故需在循環(huán)體中增加改變k數(shù)值的語句'k++;'\ue009。

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

41.D解析:兩個實體間的聯(lián)系可以歸納為3種類型:一對一聯(lián)系:一對一的聯(lián)系表現(xiàn)為主表中的每一條記錄只與相關(guān)表中的一條記錄相關(guān)聯(lián)。一對多聯(lián)系,一對多的聯(lián)系表現(xiàn)為主表中的每一條記錄與相關(guān)表中的多條記錄相關(guān)聯(lián)。多對多聯(lián)系:多對多的聯(lián)系表現(xiàn)為二個表中的多個記錄在相關(guān)表中同樣有多個記錄其匹配。本題中一個顧客可以購買多種商品,同一種商品可以有多個顧客購買,所以商品和顧客之間是多對多的聯(lián)系。

42.A

43.B解析:C語言規(guī)定,標識符只能由字母、數(shù)字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線。A)中的void與C語言的關(guān)鍵字重名,不合法;C)中的case和C語言的關(guān)鍵字重名,不合法;D)中的2a是數(shù)字開頭,而且sizeof與C語言的關(guān)鍵字重名,不合法。

44.D解析:strcmp(s1,s2)是比較兩個字符串的大小,s1>s2時值為正數(shù),s1<s2時值為負數(shù),s1=s2時值為0。調(diào)用f(p,5)函數(shù)的功能是將存儲字符串的數(shù)組p中的字符串從小到大進行排列。最后的排列結(jié)果為:p[5]={'aabdfg','abbd','abc','cd','dcdbe'},最后要求輸出的是'abbd'的長度。

45.A

46.B解析:C語言中字符串是以'\\O'字符結(jié)束的,且strlen()函數(shù)計算的是'\\O'字符前的所有字符的個數(shù)。本題中strlen(st)應(yīng)為5。數(shù)組定義以后系統(tǒng)就為其分配相應(yīng)大小的內(nèi)存空間,而不論其中有沒有內(nèi)容。sizeof()函數(shù)是計算變量或數(shù)組的所分配到的內(nèi)存空間的大小。所以本題的sizeof(st)為20。

47.A解析:自增運算符“++”放在變量之前表示在使用變量之前,先使變量的值加1;放在變量之后表示在使用變量之后,再使變量的值加1。語句p=s;使指針p指向字符串s的首地址,第一次輸出語句先輸出字符'1',指針p再往后移一位,指向字符'5'的地址,第二個輸出語句,同樣先輸出字符'5',指針p再往后移一位,指向字符'9'的地址。

48.C解析:在C語言中,引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型可以是整型常量,也可以是整型表達式。

49.B解析:因為變量的初始值分別為k=5,n=0,所以程序第1次進入循環(huán)時,執(zhí)行default語句,輸出0,k減1:這時n=0,k=4,程序進行第2次循環(huán),執(zhí)行case4:這個分支,結(jié)果是n=2,k=3,打印出2;這時n=2,k=3,程序進行第3次循環(huán),執(zhí)行case3:這個分支,結(jié)果是n=3,k=2,打印出3;這時n=3,k=2,程序然后進行第4次循環(huán),執(zhí)行case2:case4:這個分支,結(jié)果是n=5,k=1,打印出5,這時因為n=5不滿足n<5的循環(huán)條件,因此退出循環(huán),程序運行結(jié)束。所以在屏幕上打印出的結(jié)果是0235。

50.B數(shù)據(jù)庫可以看成是長期存儲在計算機內(nèi)的、大量的、有結(jié)構(gòu)的和可共享的數(shù)據(jù)集合。數(shù)據(jù)庫可以被直觀地理解為存放數(shù)據(jù)的倉庫,只不過這個倉庫在計算機的大容量存儲器上,例如,硬盤就是一種最常見的計算機大容量存儲設(shè)備。數(shù)據(jù)必須按一定的格式存放,因為它不僅需要存放,而且還要便于查找和使用。

數(shù)據(jù)庫管理系統(tǒng)(DBMS)是位于用戶與操作系統(tǒng)之間的完成數(shù)據(jù)管理的系統(tǒng)軟件。它是用戶與數(shù)據(jù)庫的接口。應(yīng)用程序一般要通過DBMS才能訪問數(shù)據(jù)庫。在數(shù)據(jù)庫建立、運用和維護時對數(shù)據(jù)庫進行統(tǒng)一控制。

數(shù)據(jù)庫系統(tǒng)是指在計算機系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng),一般由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)(及其開發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理員和用戶構(gòu)成。數(shù)據(jù)庫是整個數(shù)據(jù)庫系統(tǒng)最基本的成分。數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心。數(shù)據(jù)庫管理員是數(shù)據(jù)庫系統(tǒng)的責任維護者,負責對數(shù)據(jù)庫系統(tǒng)的整體維護。

綜上所述,本題中只有B選項的描述是正確的。

51.B解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。在函數(shù)調(diào)用時,static變量在函數(shù)調(diào)用結(jié)束后所做的所有變化均保持(即上次調(diào)用結(jié)束時的值)。

在主函數(shù)中,第一次循環(huán),i=0,調(diào)用k-f(a++)=f(2),調(diào)用完之后才將a加1,a變?yōu)?,在f(2)中,先將c=3賦值給a返回,然后將c加1,得到k=a=3,c=4。

第二次循環(huán),i=1,調(diào)用k=f(a++)=f(3),調(diào)用完之后才將a加1,a變?yōu)?,在f(3)中,先將c=4賦值給a返回,然后將c加1,得到k=a=4,c=5。

52.C解析:C語言提供了許多輸入函數(shù),其中有:getchar(輸入字符)、scanf(格式輸入)和gets\u3000(輸入字符串)等。題目要求輸入的是字符串,所以可以排除getchar,而且要求輸入的字符串中包含空格,而scanf函數(shù)默認將輸入的空格字符作為分割符,所以空格不會被輸入,故可排除scanf。getc的作用是從文件中輸入一個字符,故也不可取。gets函數(shù)可以輸入一整行作為一個字符串,其中也包括空格字符,故應(yīng)該選擇C。

53.BB.【解析】棧是一種特殊的線性表,其插入和刪除運算都只在線性表的一端進行,而另一端是封閉的。進行插入、刪除的一端稱為棧頂,封閉的一端稱為棧底。棧頂元索是最后被插入的元素,也是最后被刪除的元素。棧是按先進后出的原則組織數(shù)據(jù)的。

【知識拓展】“?!钡男问饺缡謽尩膹椣唬詈髩喝氲淖訌椏偸亲钕缺粡棾?,而最先壓人的子彈最后才被彈出,也就是“先進后出”。

54.A解析:數(shù)據(jù)庫的三級模式是指概念模式、內(nèi)模式和外模式,其中外模式又叫子模式,內(nèi)模式又叫物理模式.所以本題答案為A。

55.D解析:*(q+i)指向第i行首地址,*(*(q+i)+j)代表第i行第j個元素。

56.B解析:本題主要考查結(jié)構(gòu)體和聯(lián)合內(nèi)存使用的區(qū)別:結(jié)構(gòu)中不同的成員分別使用不同的內(nèi)存空間,一個結(jié)構(gòu)所占內(nèi)存空間的大小是結(jié)構(gòu)中每個成員所占內(nèi)存空間大小的總和,結(jié)構(gòu)中每個成員相互獨立;聯(lián)合所占用的內(nèi)存空間為最長的成員所占用的空間。

57.C解析:本題考查按位與“&”。因為1&1=1,0&0=0,所以任何數(shù)與自身按位與,結(jié)果仍為此數(shù),不發(fā)生變化。

58.B解析:scanf函數(shù)的第一個參數(shù)是格式控制字符串,該字符串中所出現(xiàn)的格式控制符必須與scanf函數(shù)的笫二個及其后面的參數(shù)一一對應(yīng).本題中四個選項的格式控制字符串都是'%d%s',其中包括兩個格式控制符%d和%s,它們分別表示輸入一個十進制整數(shù)和輸入一個字符串,其對應(yīng)的參數(shù)應(yīng)該分別為一個整型變量的地址和一個字符型數(shù)組的首地址。變量的地址可以通過對變量做取地址(&)運算來得到,而宇符型數(shù)組的首地址則可以直接通過數(shù)組名來得到。所以,4個選項中選項B符合題意。

59.B解析:本題中的答案A與D都缺少“;”,而答案C中,表達式是不能獨立成為語句的,答案B使用了C語言的自減運算符它就相當于D=D-1,所以答案B為一賦值語句。

60.A解析:本題主要考查結(jié)構(gòu)化程序設(shè)計的基本結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計有3種基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。

61.A函數(shù)的功能是將a,b的值增1后將較大的值返回。因此fun(x,y++)=10,fun(10,12)=13,所以r=13.

62.D第一次循環(huán)a的值為1,滿足條件,執(zhí)行b+=a,與a+=2,則b的值變?yōu)?,a的值變?yōu)?。執(zhí)行8++,a的值為4,滿足條件進入第二次循環(huán),執(zhí)行完循環(huán)體后b的值為7,a的值為6。執(zhí)行a++,a的值為7,滿足條件進入第三次循環(huán),執(zhí)行完循環(huán)體后b的值為14,a的值為9。執(zhí)行a++,a的值變?yōu)?0,不滿足條件,循環(huán)結(jié)束。所以選擇D選項。’

63.C指針變量的值只能是存儲單元地址,而不能是一個整數(shù),故選項C錯誤。

64.B

65.D在三目運算符中,優(yōu)先級相同,按從右到左的結(jié)合性計算,a<b?a:(c<d?a:d)c<d成立所以取值a,同理可得,選擇D選項

66.D

67.A本題主要考查的是字符數(shù)組、字符串和字符指針的一些概念。數(shù)組元素個數(shù),是在定義數(shù)組的時候確定的,本題的S數(shù)組元素個數(shù)是20。而字符串長度是從該字符串的第1個字符開始,一直到“\0”字符為止,所歷經(jīng)的字符個數(shù),

“\0”不算在內(nèi)。所以本題P所指字符串(”Beijin9”)的長度為7。因此選項B)的敘述不正確。s是數(shù)組名,而不是指針變量,因此選項C)不正確。數(shù)組s中除了包含字符串“Beijin9”外,還包含其后的20個以內(nèi)字節(jié)的內(nèi)容,而指針變量p中包含的只是數(shù)組s的首地址。因此選項D)的說法也不正確。

68.C在本題中,從給出的選項可以知道,本題程序的作用是對數(shù)組的十個元素按照一個規(guī)則進行輸出。

在程序中,首先定義了一個大小為10的數(shù)字用來存放需要處理的十個數(shù),然后通過循環(huán)從鍵盤輸入需要被處理的十個數(shù),又通過一個循環(huán)完成對數(shù)組元素的輸出。在該循環(huán)中,當循環(huán)變量j=9時,輸出的是a[9],即數(shù)組中的最后一個元素,當j=8時,輸出的是a[8],即數(shù)組中的倒數(shù)第二個元素,以此類推,當j=0時,輸出的是a[0],即數(shù)組的第一個元素。由此我們可以看出,最后是將數(shù)組逆序輸出。與選項C完全一致,因此,本題的正確答案是C。

69.B

70.A本題主要考查了字符輸入輸出函數(shù)get—char和putchar的使用。getchar函數(shù)用來從標準輸入設(shè)備上讀人一個字符,putchar(C)函數(shù)是將字符變量c中的字符輸出到標準輸出設(shè)備上,并且字符可以看作整數(shù)參與運算。

71.A

72.C

73.C

74.A轉(zhuǎn)義字符又稱反斜線字符,這種字符常量以一個反斜線開頭,后跟一個特定的字符,用來代表某一特定的ASCII字符,這些字符常量也必須引在一對單引號內(nèi)。對本題而言,B表示雙引號',C表示單引號’,D代表十六進制數(shù)cc所對應(yīng)的ASCII碼,A中反斜線后的0表示其后數(shù)據(jù)為一個八進制數(shù),八進制數(shù)每位上的數(shù)字為0~7,18中個位上的8顯然不符合要求。所以,A是不合法的字符常量。

75.D由C語言編寫而成的程序稱為C源程序,C源程序經(jīng)過C語言編譯程序編譯之后生成一個后綴為.OBJ的二進制文件(稱為目標文件);最后要由“連接程序”把此.OBJ文件與C語言提供的各種庫函數(shù)連接起來生成一個后綴為.EXE的可執(zhí)行文件。

由于C語言編寫程序采用的是西文字符,而西文字符一般都是以ASCII碼編碼的。因此,C語言的源程序是以ASCII碼形式存放在一個文本文件中的。

C語言程序中主要包含程序部分和注釋部分,其中程序部分最終將轉(zhuǎn)化為二進制的機器指令,而注釋部分沒有。因此,選項D的說法不正確。

76.A%d輸出整數(shù),所以選擇A)。

77.AB)選項和C)選項中,REC后不應(yīng)加分號,D)選項,沒有typedef,REC能作為類型名。所以答案選擇A):

78.Cz=X++,Y++,++y;因為賦值運算符的優(yōu)先級高于逗號運算符的優(yōu)先級,所以可以將上式表示成(Z=x++),(Y++),(++y)。然后從左向右先計算表達式Z=X++,因為x++先使用后自增,所以z的值為1,X的值為2。再計算逗號表達式第二個表達式Y(jié)++,此時Y的值為2,最后計算第三個表達式++y,Y的值為3。

79.C

80.C#define行為非C語句,所以沒有“;”號,%的運算對象只能為整型,逗號運算符的優(yōu)先級最低。

81.(1)錯誤:t+=1.0/k;

正確:t+=1.o/i;

(2)錯誤:returni;

正確:returnt;

【解析】根據(jù)for循環(huán)可知,變量i中存放每一項的分母,變量k在函數(shù)procee沒有定義,因此t+=l.0/k;應(yīng)改為t+=1.0/i;。變量t中存放各項的和,題目要求將各項的和返回給主函數(shù),因此returni應(yīng)改為returnt。

82.1voidfun(intm,intk,intxx[])2{3inti,j,n;4for(i=m+1,n=0;n<k;i++)p*<>找大于m的素數(shù),循環(huán)k次,即找出緊靠m的k個素數(shù)*/5{for(j=2;j<i;j++)p*#]斷一<>個M否為素數(shù),如果不是,跳出此循環(huán),判斷下一個數(shù)*/6if(i%j==0)break;7if(j>=i)/*如果是素數(shù),存入數(shù)組XX中*/8xx[n++]=i;9}10}本題主要考查素數(shù)的判定方法。如果一個數(shù)不能被除了1和其自身以外的數(shù)整除,則這個數(shù)為素數(shù)。本程序使用循環(huán)語句控制需要判斷的數(shù),在循環(huán)體中判斷該數(shù)是否為素數(shù),若是則存入數(shù)組XX中。當數(shù)組XX的素數(shù)個數(shù)為k個時,退出循環(huán)。</i;j++)p*#]斷一<></k;i++)p*<>2022年陜西省咸陽市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.判斷有向圖是否存在回路,利用()方法最佳。

A.求關(guān)鍵路徑B.求最短路徑C.拓撲排序D.廣度優(yōu)先遍歷

2.

3.執(zhí)行下述程序后,輸出的結(jié)果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/s(k+m);printf("%d",a);}A.1B.4C.9D.0

4.有以下程序:#includc<stdio.h>voidfun(int*p){printf("%d\n",p[5]);}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};fun(&a[3]);}程序運行后的輸出結(jié)果是()。A.5B.6C.8D.9

5.

有以下程序:

main()

{intk=5,n=0;

do

{switch(k)

{case1:

case3:n+=l;k--;break;

defalut:n=0;k--;

case2:

case4:n+=2;k--;break:

}

printf("%d",n);

}while(k>0&&n<5);

}

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

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

6.設(shè)有下列二叉樹:

對此二叉樹先序遍歷的結(jié)果為

A.ABCDEFB.DBEAFCC.ABDECPD.DEBFCA

7.是哈希查找的沖突處理方法()。

A.求余法B.平均取中法C.二分法D.開放地址法

8.有以下程序:#include<stdio.h>intshow(char*str){while(*str){putchar(*str+1);str++;}return*str+1;}main(){printf(“%d\n”,show(“ABCD”));}程序運行后的輸出結(jié)果是()。

A.ABCD0B.BCDE0C.BCDE1D.ABCD1

9.有以下程序:main(){intx[8]={8,7,6,5,O,0},*s;s=x+3;printf("%d\n",s[2]);}執(zhí)行后輸出結(jié)果是()。

A.隨機值B.0C.5D.6

10.

11.

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

13.判定一個順序棧st(最多元素為MaxSize)為滿的條件是()。A.st->top!B.st->top!C.top==-1D.top==MaxSize

14.下列選項中,不是一個算法的基本特征的是()。

A.完整性B.可行性C.有窮性D.擁有足夠的情報

15.有下列程序:main{inti,j,x=0;for(i=0,i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++:}x++:}printf("x=%d\n",x);}程序執(zhí)行后的輸出結(jié)果是()。A.x=4B.x=8C.x=6D.x=12

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

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

17.

有以下程序

#include<stdio.h>

#include<string.h>

typedefstrlIct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",m,85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

}

main

{STUc="Qian",f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);

}

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

A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

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

A.算法的執(zhí)行效率與數(shù)據(jù)存儲結(jié)構(gòu)無關(guān)

B.算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)

C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止

D.以上3種描述都不對

19.設(shè)有以下定義uniondata{intd1;floatd2;)demo;則下面敘述中錯誤的是()。A.變量demo與成員d2所占的內(nèi)存字節(jié)數(shù)相同

B.變量demo中各成員的地址相同

C.變量demo和各成員的地址相同

D.若給demo.d1賦99后,demo.d2中的值是99.0

20.

二、2.填空題(20題)21.以下程序的功能是輸出字符串。請?zhí)羁铡?/p>

main()

{char*a[]={"Pascal","Clanguage","dbase","Cobol"};

char【】;

intj=0;

p=a;

for(;j<4;j++)

print{("%s\n",*【】);

}

22.下列程序的輸出結(jié)果是______。

#defineLEN5

inta[LEN],k;

main()

{fun1();

fun2();

}

fun1()

{for(k=0;k<LEN;k++)

a[k]=k;

}

fun2()

{intk;

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

printf("%d",*(a+k));

}

23.在軟件生命周期中,【】階段是花費最多、持續(xù)時間最長的階段。

24.有以下程序:

intf(intn)

{if(n==1)retum1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

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

}

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

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

26.以下程序輸出的結(jié)果是#include<stdio.h>#include<string.h>main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"}1,k;for(k=1;k<3;k++)printf("%s\n",&w[k][k]);}

27.以下程序的功能是:從低位開始取出長整型變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。請?zhí)羁铡?include<stdio.h>main(){longs,t,s1=10;pfintf("\n.Pleaseenters:");scanf("%1d",&s);t=s%10;while(s>0){s=s/100;t=();s1=s1*10;}printf("Theresultis:%1d\n",t);}

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

a>=0?【】:【】

29.若想通過以下輸入語句使a=5.0,b=4,c=3,則輸入數(shù)據(jù)的形式應(yīng)該是【】。

intb,c;floata;

scanf("%f,%d,c=%d",&a,&b,&c)

30.結(jié)構(gòu)化分析方法是面向______進行分析的方法。

31.下列程序的循環(huán)次數(shù)是______。

x=2;

do

{x=x*x;}

while(!x);

32.現(xiàn)有兩個C程序文件T18.c和myfun.c同在TC系統(tǒng)目錄(文件夾)下,其中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!,則輸出結(jié)果是【】。

33.閱讀下列程序,則程序的輸出結(jié)果為______。

#include"stdio.h"

struetty

{intdata;

charc;};

main()

{streettya={30,'x'};

fun(a);

printf("%d%c",a.data,a.c);}

fun(structtyb)

{b.data=20;

b.c='y';}

34.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

35.下列程序運行后的輸出結(jié)果是______。

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

運行程序,輸入HOWAREYOU。

36.在關(guān)系模型中,二維表的行稱為______。

37.在對文件進行操作的過程中,若要求文件的位置回到文件的開頭,應(yīng)當調(diào)用的函數(shù)是【】函數(shù)。

38.數(shù)據(jù)流圖的類型有【】和事務(wù)型。

39.有以下程序段,且變量已正確定義和賦值

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

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

請?zhí)羁?使下面程序段的功能與之完全相同

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

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

40.以下程序的功能是將字符串s中的數(shù)字字符放人d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串a(chǎn)bc123edf456gh,執(zhí)行程序后輸出123456。請?zhí)羁铡?/p>

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

}

三、1.選擇題(20題)41.“商品”與“顧客”兩個實體集之間的聯(lián)系一般是

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

42.請選出以下程序段的輸出結(jié)果______。#include<stdio.h>#defineMIN(x,y)(x)<(y)?(x):(y)main(){inti,j,k;i=10;j=15;k=10*MIN(i,j);printf("%d\n",k);}

A.15B.100C.10D.150

43.請選出可用作C語言用戶標識符的一組()。

A.voiddefineWORD

B.a3_b3_123IF

C.For_abccase

D.2aDOsizeof

44.有以下程序,其中函數(shù)的功能是將多個字符串按字典順序排序:#include<string.h>voidf(char*p[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])>0){t=p[i];p[i]=p[j]p[j]=t;}}main(){char*p[5]={"abc","aabdfg","abbd","dcdbe","cd"};f(p,5);printf("%d\n",strlen(p[1]));}程序運行后的輸出結(jié)果是______。

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

45.計算機病毒不能破壞()中的軟件。

A.ROMB.RAMC.軟盤D.硬盤

46.以理程序的輸出結(jié)果______。main(){charst[20]="he11\O\t\\";printf("%d%d\n",str1en(st),sizeof(st));}

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

47.有以下程序main(){chars[]="159",*p;p=s;printf("%c",*p++);printf("%c",*p++);}程序運行后的輸出結(jié)果是______。

A.15B.16C.12D.59

48.在C語言中,引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型允許是()。

A.整型表達式B.整型常量C.整型常量或整型表達式D.任何類型的表達式

49.有下列程序:main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4;n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5);}程序運行后的輸出結(jié)果是()。

A.235B.235C.2356D.2356

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

A.數(shù)據(jù)庫包括數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)

B.數(shù)據(jù)庫系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)

C.數(shù)據(jù)庫管理系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫系統(tǒng)

D.三者沒有明顯的包含關(guān)系

51.下列程序執(zhí)行輸出的結(jié)果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}

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

52.當用戶要求輸入的字符串中含有空格時,應(yīng)使用的輸入函數(shù)是()。

A.scanfB.getcharC.getsD.getc

53.按照“先進后出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

54.數(shù)據(jù)庫系統(tǒng)可分為三級模式,下列選項中不屬于數(shù)據(jù)庫三級模式的是

A.抽象模式B.外模式C.概念模式D.內(nèi)模式

55.若有說明intm[3][4]={3,9,7,8.5},(*q)[4];和賦值語句q=m;,則對數(shù)組元素m[i][j](其中0<=i<3,0<=j<4)值的正確引用為()。

A.(q+i)[j]B.*q[i][j]C.*(*q[i]+j)D.*(*(q+i)+j)

56.下列程序的輸出結(jié)果是()。#include<stdio.h>main(){structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un));}

A.6,2B.6,4C.8,4D.8,6

57.以下程序的輸出結(jié)果是main(){intc=35;printf("%d\n",c&c);}

A.0B.70C.35D.1

58.有定義語句: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);

59.以下合法的賦值語句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

60.C語言中用于結(jié)構(gòu)化程序設(shè)計的3種基本結(jié)構(gòu)是()。

A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

B.if、switch、break

C.for、while、do-while

D.if、for、continue

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

fun(inta,intb)

{a++;b++;

if(a>b)return(a);

elsereturn(b);

}

void

main()

{intx=3,y=8,z=6,r;

r=fun(fun(x,y++),2*z);

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

}

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

A.13B.6

C.8D.12

62.有以下程序:

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

A.9,18B.8,11C.7,11D.10,14

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

A.改變函數(shù)形參的值,不會改變對應(yīng)實參的值

B.函數(shù)可以返回地址值

C.可以給指針變量賦一個整數(shù)作為地址值

D.當在程序的開頭包含文件stdi0.h時,可以給指針變量賦NULL

64.

65.設(shè)a=l,b=2,c=3,d=4,則表達式:“a<b?a:b<b?a:c<d?a:d”的結(jié)果為()。A.4B.3C.2D.1

66.

67.設(shè)有如下程序段

68.有如下程序段

#include"stdio.h"

main()

{intk[10];

intj;

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

scanf("%d",&k[j]);

for(j=9;j>=0;j--)

printf("%d",k[j]);}

則程序段實現(xiàn)的功能是

A.輸入10個數(shù)據(jù)的順序輸入并輸出

B.輸入10個數(shù)據(jù)的逆序存放

C.輸入10個數(shù)據(jù)的逆序輸出

D.以上敘述均錯誤

69.

70.有以下程序:

從第一列開始輸入以下數(shù)據(jù)(<CR>代表一個回車符.:

2743<CR>

程序的輸出結(jié)果是()。

A.66877B.668966C.6677877D.6688766

71.

72.

73.

74.以下不合法的字符常量是

A.’x\018’B.’\"’C.’\\’D.’\xcc’

75.以下敘述中錯誤的是

A.C語言源程序經(jīng)編譯后生成后綴為.obj的目標程序

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

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

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

76.以下不能輸出字符A的語句是()(注:字符A的ASCIl碼值為65,字符a的ASCIl碼值為97)。

77.以下結(jié)構(gòu)體類型說明和變量定義中正確的是()。

78.有以下程序:

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

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

79.

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

A)C程序中的#include和#define行均是C語句,只是語法不同

B)除賦值運算符外,逗號運算符的優(yōu)先級最低

C)C程序中,j++;是賦值語句

D)C程序中,+、-、*、/、%號是算數(shù)運算符,可用于整型和實型數(shù)的運算

五、程序改錯題(1題)81.下列給定程序中,proc()函數(shù)的功能是:根據(jù)形參m,計算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若輸入10,則應(yīng)輸出2.928968。請修改程序中的錯誤,使它能計算出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫一個函數(shù)fun(),該函數(shù)的功能是將大于整數(shù)m且緊靠m的k個素數(shù)存入所指的數(shù)組中。例如,若輸入17、5,則應(yīng)輸出19、23、29、31、37。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.C

2.D

3.D本題j=要是考查帶參數(shù)的宏的定義,過程如下:inta=a/S(k+m)/S(k+m)=a/(k+m*k+m/k+m)=9/(3十2*3十2/3十2*3十2)=0。

4.B由題可知,fun(&a[3])是將&a[3]作為參數(shù),而fun(int*p)后執(zhí)行的語句為p[5],由數(shù)組a可知輸出的為6。

5.B

\n本題考查分支語句用法加個句號因為變量的初始值分別為k一5、n一0,所以程序第1次進入循環(huán)時,執(zhí)行default語句,輸出0,k減1;這時n=0、k=4,程序進行第2次循環(huán),執(zhí)行case4:這個分支,結(jié)果是n=2、k=3,打印出2;這時n=2、k=3,break跳出,程序進行第3次循環(huán),執(zhí)行case3:這個分支,結(jié)果是n=3、k=2,打印出3;這時n一3、k2,b¨ak跳出,程序然后進行第4次循環(huán),執(zhí)行case2:case4:這個分支,結(jié)果是n=5、k=1,打印出5,break跳出,這時因為n=5不滿足n<5的循環(huán)條件,因此循環(huán)結(jié)束。

\n

6.C解析:二叉樹的遍歷分為先序,中序、后序三種不同方式.本題要求先序遍歷,其遍歷順序應(yīng)該為:訪問根結(jié)點->,先序遍歷左子樹->先序遍歷右子樹。按照定義,先序遍歷序列是ABDECF,故答案為C。

7.D

8.C函數(shù)putchar每次輸出一個字符。表達式“*str+1”將對字符加1,因此字符串“ABCD”的每個字符都加1,字符串結(jié)束標識‘\\0’也會加1,輸出1,結(jié)果為BCDE1。故本題答案為C選項。

9.B解析:通過賦值語句“s=x+3”,使指針變量s指向數(shù)組元素x[3],輸出語句中的spl等價于*(s+2),即x[5]值為0。所以,B選項為所選。

10.D

11.A

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

13.D

14.A解析:作為一個算法,一般應(yīng)該具有下列4個特征:(1)可行性,即考慮到實際的條件能夠達到一個滿意的結(jié)果;(2)確定性,算法中的每一個步驟都必須是有明確定義的,(3)有窮性,一個算法必須在有限的時間內(nèi)做完;(4)擁有足夠的情報。

15.B在第1次外層for循環(huán)中,首先x++得到x=1。進入到內(nèi)層for循環(huán),只有循環(huán)j的值為奇數(shù)時,變量x的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過程中,變量x的值自加兩次,當退出內(nèi)層for循環(huán)時,x=3,然后執(zhí)行x++,得到x=4。在進入執(zhí)行第2次外層for循環(huán)中,首先x++得到x=5。進入到內(nèi)層for循環(huán),只有循環(huán)變量j的值為奇數(shù)時,變量x的值才自加1,所以在內(nèi)層for循環(huán)執(zhí)行過程中,變量X的值自加1兩次,當退出內(nèi)層for循環(huán)時,x=7,然后執(zhí)行x++,得到x=8,所以打印輸出變量x的值為8。

16.A

17.Cf函數(shù)的功能是對形參a的各個成員用結(jié)構(gòu)體變量b的各個成員進行賦值后,然后返回變量a。

18.C在程序設(shè)計中,算法執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)密切相關(guān)。算法的空間復(fù)雜度是指算法執(zhí)行過程中所需存儲空間。

19.D共用體變量中的所有成員共享一段公共存儲區(qū),所有成員的首地址相同。在每一個時刻所有的成員中只有一個有效,即只有最后一個被賦值的成員有效,其余的成員無效。

20.D

21.**p(p+i)

22.01234。01234。解析:函數(shù)fun1給數(shù)組a的每個元素賦值,fun2則輸出結(jié)果。

23.維護維護

24.33解析:i=1時,f(1)=1,j=j+f(1)=0+1=1;i=2時,f2=f(1)+1=1+1=2,j=j+f(2)=1+3=3;此時循環(huán)結(jié)束,程序運行后的輸出結(jié)果是3。

25.完整性控制完整性控制

26.D

27.s%10

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論