




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2022年山西省朔州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.
2.若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語句是()。A.switch(a+b){case1:prinf("*\n");.case2+1:printf("**(n");}
B.switch(int)x);{case1:print("*\n");.case2:printf(**\n");}
C.switch(x){case1.0:print("*\n");case2.0:print("*\n");}
D.switch(a+b){case1:print("*\n");.casec:pit(**\n");}
3.有定義語句:inta=1,b=2,c=3,x;,則以下選項(xiàng)中各程序段執(zhí)行后,x的值不為3的是
A.if(c<a)x=1;elseif(b<a)x=1;elsex=3;
B.if(a<3)x=3;elseif(a<2)x=2;elsex=1;
C.if(a<3)x=3;if(a<2)x=2;if(a<1)x=1;
D.if(a<b)x=b;if(b<c)x=c;if(c<a)x=a;
4.設(shè)以下變量均為int類型,表達(dá)式的值不為7的是A.(x=y=6,x+y,x+1)
B.(x=6,x+1,y=6,x+y)
C.(x=y=6,x+y,y+1)
D.(y=6,y+1,x=y,x+1)
5.有以下程序:main{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,12,},{13,14,15,16}},i,j;for(i=0;i<4;i++){for(j=0;j<i;j++)printf("%4c",);for(j=________;J<4;j++)printf("%4d",num[i][j]);printf("\n");}}若要按以下形式輸出數(shù)組右上半三角1234678111216則在程序下劃線處應(yīng)填入的是()。A.i-1B.iC.i+1D.4一i
6.有以下程序:#include<stdio.h>intshow(char*str){while(*str){putchar(*str+1);str++;}return*str+1;}main(){printf(“%d\n”,show(“ABCD”));}程序運(yùn)行后的輸出結(jié)果是()。
A.ABCD0B.BCDE0C.BCDE1D.ABCD1
7.若執(zhí)行以下程序時(shí)從鍵盤上輸入9,則輸出結(jié)果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8
8.給出以下定義:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};則正確的敘述為()。
A.數(shù)組x和數(shù)組y等價(jià)B.數(shù)組x和數(shù)組y的長度相同C.數(shù)組x的長度大于數(shù)組y的長度D.數(shù)組x的長度小于數(shù)組y的長度
9.對一個(gè)有A,B,C,D隨機(jī)組成的序列進(jìn)行哈夫曼編碼,據(jù)統(tǒng)計(jì),各個(gè)元素的概率分別為:P(A)=0.4,P(B)=0.35,P(C)=0.2,P(D)=0.05,請問該編碼的平均期望編碼長度為()bits。
A.1.45B.1.74C.1.85D.1.92
10.設(shè)有如下函數(shù)定義:#include<stdio.h>intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若執(zhí)行調(diào)用語句“n=fun(3);”,則函數(shù)fun總共被調(diào)用的次數(shù)是()。
A.2B.3C.4D.5
11.
12.有以下程序voidsum(inta[]){a[0]-a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf(“%d\n”,a[2]);}程序運(yùn)行后的輸出結(jié)果是A.6B.7C.5D.8
13.在關(guān)系數(shù)據(jù)模型中,通常可以把()稱為屬性,其值稱為屬性值。
A.記錄B.基本表C.模式D.字段
14.有以下程序#include<stdio.h>structst{intx,y;}data[2]={1,10,2,20};main(){structst*p=data;printf("%d,",p->y);printf("%d\n",(++p)->x);}程序的運(yùn)行結(jié)果是______。A.10,1B.20,1C.10,2D.20,2
15.以下選項(xiàng)中不合法的標(biāo)識符是()。
A.&aB.FORC.printD._00
16.有以下程序:#include<stdio.h>main{shortC=124;C=C_;printf("%d\n",c);}若要使程序的運(yùn)行結(jié)果為248,應(yīng)在下劃線處填入的是()。A.>>2B.|248C.&0248D.<<1
17.下列敘述中,不正確的是
A.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)共享的問題
B.數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致
C.數(shù)據(jù)庫設(shè)計(jì)是指設(shè)計(jì)一個(gè)能滿足用戶要求,性能良好的數(shù)據(jù)庫
D.數(shù)據(jù)庫系統(tǒng)是一個(gè)獨(dú)立的系統(tǒng),但是需要操作系統(tǒng)的支持
18.對于函數(shù)聲明“voidfun(intarray[4],int*ptr);”,以下敘述中正確的是()。
A.array、ptr都是指針變量
B.調(diào)用fun函數(shù)時(shí),實(shí)參的值將逐一復(fù)制給array
C.調(diào)用fun函數(shù)時(shí),array按值傳送,ptr按地址傳送
D.array是數(shù)組,ptr是指針,它們的性質(zhì)不同
19.
20.
二、2.填空題(20題)21.設(shè)有如下程序:
main()
{intn1,n2;
scanf("%d",&n2);
while(n2!=0)
{n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}
程序運(yùn)行后,如果從鍵盤上輸入1298,貝愉出結(jié)果為【】。
22.實(shí)現(xiàn)程序可將磁盤中的一個(gè)文件復(fù)制到另一個(gè)文件中,兩個(gè)文件的文件名在可執(zhí)行命令的命令行中(相當(dāng)于copy命令),假定文件在當(dāng)前目錄下。請補(bǔ)全程序。
#include<stdio.h>
voidmain(intargc,char*argv[])
{FILE*f1,*f2;
if(argc<【】)
{printf("parametererror!\n");exit(0);}
n=fopen(argv[1],"r");
f2=fopen(argv[2],"w");
while(【】)fputc(fgetc(f1),f2);
fclose(f1);
fclose(f2);
}
23.數(shù)據(jù)模型分為格式化模型與非格式化模型,層次模型與網(wǎng)狀模型屬于【】。
24.在最壞情況下,堆排序需要比較的次數(shù)為()。
25.一個(gè)模塊直接調(diào)用的其他模塊的模塊個(gè)數(shù)稱為______。
26.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個(gè)字節(jié)的動態(tài)存儲空間,請?zhí)羁?。st=(char*)【】;
27.有以下程序:
intf(intn)
{if(n==1)return1;
elsereturnf(n-1)+1;}
main()
{inti,j=0;
for(i=1;i<3;i++)j+t(i);
printf("%d\n",j);
}
程序運(yùn)行后的輸出結(jié)果是【】。
28.以下程序運(yùn)行后輸出結(jié)果是【】。
#include<stdio,h>
main()
{inta,b,c;
a=10;b:20;c=(a%b<1)‖(a/b>1);
printf("%d%d%d\n",a,b,c);
}
29.若有定義:inta=4,b=5,c=6;然后順序執(zhí)行下列語句后,變量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);
30.若要使指針p指向一個(gè)double類型的動態(tài)存儲單元,請?zhí)羁铡?/p>
p=【】malloc(sizeof(double));
31.下面程序的功能是:輸出100以內(nèi)能被4整除且個(gè)位數(shù)為8的所有整數(shù),請?zhí)羁?。main(){inti,j;for(i=0=();i++){j=i*10+8;if(j%4!=0)continue;printf("%d",j);}}
32.以下程序的輸出結(jié)果是【】。
main()
{unsignedshorta=65536;intb;
printf("%d\n",b=A);
}
33.在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅需要存儲各數(shù)據(jù)元素的信息,還要存放各元素之間______的信息。
34.一棵二叉樹第6層(根結(jié)點(diǎn)為第一層)的結(jié)點(diǎn)最多為______個(gè)。
35.下列循環(huán)的循環(huán)次數(shù)是______。
ihtk=2;
while(k=0)
printf("%d",k);
k--;
printf("\n");
36.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計(jì)其中正數(shù)的個(gè)數(shù),并計(jì)算它們之和。請?zhí)羁铡?/p>
main()
{inti,a[20],sum,count;
sum=count=0;
for(i=0;i<20;i++)scanf("%d",(【】);
for(i=0;i<20;i++)
{if(a[i]>0)
{count++;
sum+=(【】);
}
}
printf("sum=%d,count=%dhn",sum,count);
}
37.下列程序的輸出結(jié)果是______。
main()
{inta[]={31,27,20,12,6,1),*p=a;
p++;
printf("%d\n",*(p+2));
}
38.設(shè)有定義:intn,*k=&n;以下語句將利用指針變量k讀寫變量n中的內(nèi)容,請將語句補(bǔ)充完整。
scanf(“%d”,______);
printf(“%d\n”,______);
39.現(xiàn)有如下定義:structaa{inta;floatb;charc;}*p;現(xiàn)需用malloc函數(shù)動態(tài)的申請一個(gè)structaa類型大小的空間(由p指向),則定義的語句為:【】。
40.表示“整數(shù)x的絕對值大于5”時(shí)值為“假”的C語言表達(dá)式是______。
三、1.選擇題(20題)41.有以下程序;charfun(charx,chary){if(x<y)returnx;returny;}main(){inta='9',b='8',c='7';printf("%c\n",fun(fun(a,B),fun(b,C)));}程序的執(zhí)行結(jié)果是
A.函數(shù)調(diào)用出錯(cuò)B.8C.9D.7
42.設(shè)計(jì)程序時(shí),應(yīng)采納的原則之一是()。
A.程序的結(jié)構(gòu)應(yīng)有助于讀者的理解B.限制goto語句的使用C.減少或取消注釋行D.程序越短越好
43.檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。
A.確認(rèn)測試B.集成測試C.驗(yàn)證測試D.驗(yàn)收測試
44.設(shè)R是一個(gè)二元關(guān)系,S是一個(gè)三元關(guān)系,則下列運(yùn)算中正確的是()。
A.R-SB.R×SC.RNSD.RUS
45.設(shè)有以下定義inta=0;doubleb=1.25;charcc='A';#defined2則下面語句中錯(cuò)誤的是
A.a++;B.b++;C.c++;D.d++;
46.數(shù)據(jù)的存儲結(jié)構(gòu)是指
A.數(shù)據(jù)所占的存儲空間量B.數(shù)據(jù)的邏輯結(jié)構(gòu)在汁算機(jī)中的表示C.數(shù)據(jù)在計(jì)算機(jī)中的順序存儲方式D.存儲在外存中的數(shù)據(jù)
47.若有以下說明和語句:structst{intn;char*ch;};structsta[3]={5,"abc",7,"def",9,"ghk"},*p=a;則值為6的表達(dá)式是______。
A.p++->nB.p->n++C.(*p).n++D.++p->n
48.有以下程序
#include<stdio.h>
voidfun(int*s,intn1,intn2)
{inti,j,t;
i=n1;j=n2;
while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}
}
main()
{inta[10]={1,2,3,4,5,6,7,8,9,0},k;
fun(a,0,3);fun(a,4,9);fun(a,0,9);
for(k=0;k<l0;k++)printf("%d",a[k]);printf("\n");
}
程序的運(yùn)行結(jié)果是
A.0987654321B.4321098765C.5678901234D.0987651234
49.下面程序的輸出結(jié)果是______。#include<string.h>main(){char*p1="abc",*p2="ABC",s[20]="xyz";strcpy(s+1,p2);strcat(s+2,p1);printf("%s\n",s);}
A.xABCabcB.zABCabcC.yzabcABCD.xyzABCabc
50.若變量a、i已正確定義,且i已正確賦值,合法的語句是______。
A.a=1;B.++1;C.a=a++=5;D.a=int(i);
51.執(zhí)行以下語句的結(jié)果為______。y=10;x=y++;
A.x-10,y=10B.x=11,y=11C.x=10,y=11D.x=11,y=10
52.以下程序的輸出結(jié)果是()main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;for(k=1,k<3;k++)printf("%s\n",w[k]);}
A.ABCDFGHKL
B.ABCEFGIJM
C.EFGJKO
D.EFGHIJKL
53.下列句子中,正確的C語言賦值語句是()
A.n++;B.a=b=88C.t=int(x+y);D.a=100,b=200
54.下列對于軟件測試的描述中正確的是()。
A.軟件測試的目的是證明程序是否正確
B.軟件測試的目的是使程序運(yùn)行結(jié)果正確
C.軟件測試的目的是盡可能多地發(fā)現(xiàn)程序中的錯(cuò)誤
D.軟件測試的目的是使程序符合結(jié)構(gòu)化原則
55.以下非法的賦值語句是
A.n=(i=2,++i);B.j++;C.++(i+1);D.x=j>0;
56.棧通常采用的兩種存儲結(jié)構(gòu)是()。
A.順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)B.散列方式和索引方式C.鏈表存儲結(jié)構(gòu)和數(shù)組D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)
57.下面不屬于軟件設(shè)計(jì)原則的是()。
A.抽象B.模塊化C.自底向上D.信息隱蔽
58.有以下程序
#include<stdlib.h>
structNODE
{intnum;structNODE*next;};
main()
{structNODE*p,*q,*r;
p=(structNODE*)malloc(sizeof(structNODE));
q=(structNODE*)malloc(sizeof(structNODE));
r=(structNODE*)malloc(sizeof(structNODE));
p->num=10;q->num=20;r->num=30;
p->next=q;q->next=r;
printf("%d\n",p->num+q->next->num);}
程序運(yùn)行后的輸出結(jié)果是
A.10B.20C.30D.40
59.若變量已正確定義,以下while循環(huán)不斷輸出讀入的字符,當(dāng)讀入回車換行符時(shí)結(jié)束循環(huán)。正確的程序段是
A.while(ch=getchar()=='\N')putchar(ch);
B.while(ch=getchar())=='\N')putchar(ch);
C.whle((ch=getchar())!='\N')putchaf(ch);
D.while((ch=getchar())!='\N')putchar(ch);
60.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}該程序的輸出結(jié)果是______。
A.2B.4C.6D.8
四、選擇題(20題)61.有以下程序:
main()
{intp[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7&&p[i]%2){k=k+p[i++];i++}
Printf("%d\n",k);
}
執(zhí)行后輸出的結(jié)果是()。
A.57B.39C.24D.11
62.如果inta=1,b=2,c=3,d=4;則條件表達(dá)式“a<b?a:c<d?c:d”的值是()。
A)1B)2
C)3D)4
63.當(dāng)執(zhí)行下面的程序時(shí),如果輸入ABC,則輸出結(jié)罘是()。#include<stdio.h>#include<string.h>main(){charss[10]="1,2,3,4,5":gets(ss);strcat(ss,"6789");printf("%s\n",ss);}A.ABC6789B.ABC67C.12345ABC6D.ABC456789
64.
以下程序的輸出結(jié)果是()。
main
{intx=0.5;charz=a;
printf("%d\n",(x&1)&&(z<2));}
A.0B.1C.2D.3
65.在滿足實(shí)體完整性約束的條件下()。
A.一個(gè)關(guān)系中應(yīng)該有一個(gè)或多個(gè)候選關(guān)鍵字
B.一個(gè)關(guān)系中只能有一個(gè)候選關(guān)鍵字
C.一個(gè)關(guān)系中必須有多個(gè)候選關(guān)鍵字
D.一個(gè)關(guān)系中可以沒有候選關(guān)鍵字
66.設(shè)有關(guān)系R和S,關(guān)系代數(shù)表達(dá)式為R一(R—S)表示的是()。
A.R∩SB.R—SC.RUSD.R÷S
67.
能正確表示“當(dāng)x的取值在[1,10]和[100,110]范圍內(nèi)為真,否則為假”的表達(dá)式是()。
A.(x>=1)&&(x<=10)&&(x>=100)&&(X<=110)
B.(x>=1)
C.
D.(x<2=10)
E.
F.(x>=100)
G.
H.(x<=1l0)
I.(gt;=1)&&(x<=10)
J.
K.(gt;=100)&&(x<=110)
68.
有如下程序:
#include<stdio.h>
main
{FILE*fp1;
fp1=fopen("f1.txt","w");
fprintf(fp1,"abe");
fclose(fp1);
}
若文本文件f1.txt中原有內(nèi)容為:good。則運(yùn)行以上程序后文件f1.txt中的內(nèi)容為()。
A.goodabcB.abcdC.abcD.abcgood
69.有如下嵌套的if語句:
以下選項(xiàng)中與上述if語句等價(jià)的語句是()。
A.
B.
C.
D.
70.
71.設(shè)有條件表達(dá)式:(EXP)?i++;j--,則以下表達(dá)式中(EXP)完全等價(jià)的是()。
A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)
72.下列選項(xiàng)中非法的字符常量是()。
A.'\t'B.'\039'C.','D.'\n'
73.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。
A.X…Y5;B.X=n%2.5;C.X+n=i;D.x=5=4+1:
74.有以下程序段:
inti,n;
for(i=0;i<8;i++)
{n=rand()%5;
switch(n)
{casel:
case3:printf("%d\n",n);break;
case2:
case4:print?("%d\n",n);continue;
case():exit(0);
}
printf("%d\n",n);
}
以下關(guān)于程序段執(zhí)行情況的敘述,正確的是()。
A.for循環(huán)語句固定執(zhí)行8次
B.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時(shí)結(jié)束循環(huán)操作
C.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時(shí)不做任何操作
D.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時(shí)結(jié)束程序運(yùn)行
75.下列說法不正確的是
A.?dāng)?shù)據(jù)庫減少了數(shù)據(jù)冗余B.?dāng)?shù)據(jù)庫實(shí)現(xiàn)了數(shù)據(jù)的共享
C.?dāng)?shù)據(jù)庫避免了一切數(shù)據(jù)的重復(fù)D.?dāng)?shù)據(jù)庫具有較高的數(shù)據(jù)獨(dú)立性
76.有以下程序:
執(zhí)行程序時(shí),給變量X輸入10,程序的輸出結(jié)果是()。
A.54B.55C.65D.45
77.下列關(guān)于C語言數(shù)據(jù)文件的敘述中正確的是______。
A.文件由ASCII碼字符序列組成,C語言只能讀寫文本文件
B.文件由二進(jìn)制數(shù)據(jù)序列組成,C語言只能讀寫二進(jìn)制文件
C.文件由數(shù)據(jù)流形式組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件
D.文件由記錄序列組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件
78.
下列程序的運(yùn)行結(jié)果是()。
inty=5,x=14;
y=((x=3*Y,x+1),x-1);
printf("x=%d,y=%d",x,y);
A.x=27,y=27B.x=12,y=13C.x=15,y=14D.x=y=27
79.
80.
五、程序改錯(cuò)題(1題)81.給定程序中,函數(shù)fun的功能是:首先把b所指字符串中的字符按逆序存放,然后將a所指字符串中的字符和b所指字符串中的字符:按排列的順序交叉合并到C所指數(shù)組中,過長的剩余字符接在C所指的數(shù)組的尾部。例如,當(dāng)a.所指字符串中的內(nèi)容為“abcdef9”,b所指字符串中的內(nèi)容為“1234”時(shí),c所指數(shù)組中的內(nèi)容應(yīng)“a4b3c2dlef9”;而當(dāng)a所指字符串中的內(nèi)容為“1234”,b所指字符串的內(nèi)容為“abcdef9”時(shí),c所指數(shù)組中的內(nèi)容應(yīng)該為“l(fā)g2f3e4dcba”。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
六、程序設(shè)計(jì)題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,定義了NxN的二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)fun(),其功能是求出數(shù)組周邊元素的平均值并將其作為函數(shù)值返回給主函數(shù)中的s。例如,若a數(shù)組中的值為0127919745238314568259141則返回主程序后s的值應(yīng)為3.375。注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4#defineN55doublefun(intw[][n])6{78}9voidmain()10{11FILE*wf;12inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,13inti,j;14doubles;15system("CLS");16printf("***Thearray***\n");17for(i=0;i<N;i++)18{for(j=0;j<N;j++)19{printf("%4d",a[i][j]);}20printf("\n");21}22s=fun(a);23printf("***TheResult***\n");24printf("Thesumis:%lf\n",s);25/******************/26wf=fopen("out.dat","w");27fprintf(wf,"%if",s);28fclose(wf);29/******************/30}
參考答案
1.A
2.AB)選項(xiàng)中switch((int)x);語句中不應(yīng)該有最后的分號。
3.C解析:選項(xiàng)A首先判斷if語句條件中表達(dá)式的值“3<1”為假,然后執(zhí)行最近的else后面的語句,該else后面又為if-else語句,在這個(gè)if-else語句中首先判斷該if語句條件中表達(dá)式的值“2<1”為假,程序執(zhí)行其最近的else后面的語句,將3賦值給x。
選項(xiàng)B中首先判斷if語句條件中表達(dá)式的值“1<3”為真,然后執(zhí)行最近的else后面的語句“x=3”,后面的else不再執(zhí)行,最后x的值為3。
選項(xiàng)C中,首先執(zhí)行第一條if語句,由于“1<3”為真,執(zhí)行此if后面的語句“x=3”,接著執(zhí)行第二條if語句,由于“1<2”為真,執(zhí)行此if后面的語句“x=2”,接著執(zhí)行第三條if語句,由于“1<1為假,后面的語句不執(zhí)行,所以最后的x值為2不為3。
選項(xiàng)D中;首先執(zhí)行第一條if語句,由于“a<b”為真,執(zhí)行此if后面的語句“x=b”;接著執(zhí)行第二條if語句,由于“b<c”,為真,執(zhí)行此if后面的語句“x=c”,接著執(zhí)行第三條if語句,由于“c<a”為假,后面的語句不執(zhí)行,所以最后的x值為c即為3。
4.B本題考查逗號表達(dá)式的用法。C語言中逗號“,”也是一種運(yùn)算符,稱為逗號運(yùn)算符,其功能是把兩個(gè)表達(dá)式連接起來組成一個(gè)表達(dá)式,稱為逗號表達(dá)式。其一般形式為:表達(dá)式1,表達(dá)式2。其求值過程是分別求兩個(gè)表達(dá)式的值,并以表達(dá)式2的值作為整個(gè)逗號表達(dá)式的值。逗號表達(dá)式的一般形式可以擴(kuò)展為:表達(dá)式1,表達(dá)式2,表達(dá)式3,…,表達(dá)式n。它的值為表達(dá)式n的值。
5.B本題中要求輸出右上半角的數(shù),對角線上的數(shù)的下標(biāo)相同,所以j=i。
6.C函數(shù)putchar每次輸出一個(gè)字符。表達(dá)式“*str+1”將對字符加1,因此字符串“ABCD”的每個(gè)字符都加1,字符串結(jié)束標(biāo)識‘\\0’也會加1,輸出1,結(jié)果為BCDE1。故本題答案為C選項(xiàng)。
7.B當(dāng)n為9時(shí),此時(shí)if語句成立,執(zhí)行n++后,n為10,因此輸出n的值為10,故選擇B選項(xiàng)。
8.C解析:在C語言中,字符串以'\\0'作為結(jié)束符,因此數(shù)組x的長度為7+1=8,而數(shù)組y的長度等于7。
9.C
10.B執(zhí)行調(diào)用語句“n=fun(3);”,3被當(dāng)作實(shí)參傳遞進(jìn)去,進(jìn)行了一次調(diào)用。3被當(dāng)作實(shí)參傳進(jìn)去后,程序會執(zhí)行“elsereturnfun(k-1)+1;”,函數(shù)被調(diào)用了第2次,參數(shù)是3-1,也就是2。2被當(dāng)作參數(shù)傳進(jìn)去后,程序會執(zhí)行“elsereturnfun(k-1)+1;”函數(shù)被調(diào)用了第3次,參數(shù)是2-1,也就是1。1被當(dāng)作實(shí)參傳進(jìn)去后,程序會執(zhí)行“elseif(k==1)return1;”,函數(shù)不再被遞歸調(diào)用。所以最終結(jié)果為3次。故本題答案為B選項(xiàng)。
11.A
12.A本題考查的是數(shù)組和函數(shù)。sum()函數(shù)接收一個(gè)int型數(shù)組作參數(shù),也可以把它看作是一個(gè)int型指針,語句a[0]=a[*1)+a(比的意思就是將參數(shù)指針指向內(nèi)容的前一個(gè)元素和后一個(gè)元素的值相加放到指針?biāo)傅奈恢茫虼?,主函?shù)中調(diào)用sum(&a[2]);的意思就是讓a[2]=a[1]+a[3];,所以最后輸出的結(jié)果是6。應(yīng)該選擇A。
13.D解析:數(shù)據(jù)庫表中字段轉(zhuǎn)化為屬性,把記錄的類型轉(zhuǎn)化為關(guān)系模式。
14.C解析:本題定義了一個(gè)包含兩個(gè)元素(data[0]、data[1])的結(jié)構(gòu)體數(shù)組data,其中data[0].x=1;data[0].y=10;data[1].x=2;\u3000data[1].y=20。在主函數(shù)中,定義了一個(gè)指向結(jié)構(gòu)體數(shù)組的結(jié)構(gòu)體指針變量p,使得p指向結(jié)構(gòu)體數(shù)組的首地址,所以p->y訪問的是第一個(gè)鮚構(gòu)體數(shù)組元素的第二個(gè)值,即data[0].y;(++p)->x訪問的是第二個(gè)結(jié)構(gòu)體數(shù)組元素的第一個(gè)值,即\u3000data[1].x,所以程序輸出結(jié)果為10,2。
15.AC語言的標(biāo)識符由字母、數(shù)字、下劃線組成,且第1個(gè)字符必須是字母或下劃線。另外,關(guān)鍵字不能作為標(biāo)識符。因?yàn)镃語言中區(qū)分大小寫,所以B選項(xiàng)中的“FOR”可以作為標(biāo)識符來用。A選項(xiàng)中含有非法字符“&”,所以其不合法。故本題答案為A選項(xiàng)。
16.D124的2進(jìn)制值為1111100,要輸出為248即124*2,則2進(jìn)制值為11111000,即右移l位,所以選D。
17.B解析:B選項(xiàng)錯(cuò)誤,原因是,數(shù)據(jù)庫應(yīng)該具有物理獨(dú)立性和邏輯獨(dú)立性,改變其一而不影響另一個(gè)。
18.A聲明函數(shù)fun“voidfun(intarray[4],int*ptr);”,第1個(gè)參數(shù)雖然是數(shù)組類型,但是會退化為指針,并且形參數(shù)組的個(gè)數(shù)沒有用;第2個(gè)參數(shù)是指針。兩個(gè)形參都是指針,傳遞的都是地址,可知選項(xiàng)B、C、D錯(cuò)誤。故本題答案為A選項(xiàng)。
19.D
20.D
21.89218921解析:本題的程序的功能是將輸入的整數(shù)反向輸出。
22.3!feof(f1)3\r\n!feof(f1)解析:要實(shí)現(xiàn)文件復(fù)制,需要指定源文件及目的文件,因此在命令行下執(zhí)行程序時(shí)至少要指定兩個(gè)參數(shù),加上程序名本身,故argc的值至少為3,因此第一空應(yīng)填3。while循環(huán)中語句fputc(fgetc(f1),(f2);的目的是將f1中的字符依次讀出并寫入到f2對應(yīng)的文件中去,直至文件f1結(jié)束為止,因此第二空為!feof(f1)。
23.格式化模型格式化模型解析:層次模型與網(wǎng)狀模型屬于格式化模型。
24.O(nlog2n)
25.扇出扇出解析:在結(jié)構(gòu)圖中,調(diào)用一個(gè)給定模塊的模塊個(gè)數(shù)稱為扇入,一個(gè)模塊直接調(diào)用的其他模塊個(gè)數(shù)稱為扇出。
26.malloc(11)malloc函數(shù)的格式是void*(或char*)malloc(size),size表示應(yīng)分配的存儲區(qū),此題要分配11字節(jié)的單元,把11代入即可。
27.33解析:i=1時(shí),f(1)=1,j=j+f(1)=0+1=1;i=2時(shí),f(2)=f(1)+1=1+1=2:j=j+f(2)=1+3=3;此時(shí)循環(huán)結(jié)束,程序運(yùn)行后的輸出結(jié)果是3。
28.1020010200解析:程序中(a%b<1)||(a/b>1)的運(yùn)算順序?yàn)橄人憷ㄌ枴阈g(shù)運(yùn)算符→關(guān)系運(yùn)算符→邏輯運(yùn)算符。首先計(jì)算a%b=10,a/b=0,因?yàn)閍%b<1為假(0),a/b>1也為假(0),所以整個(gè)表達(dá)式的結(jié)果為假(0),最后輸出a,b,c的值為10200。
29.11解析:本題考查的是基本賦值運(yùn)算符和賦值表達(dá)式。a-=(b-5)等價(jià)于a=a-(b-5)=4,c=a=4;a%3=1,c=(a%3)+(b=1)=2,其中b的值被b=1確定為1。
30.(double*)(double*)解析:一般用malloc函數(shù)為變量分配存儲單元時(shí),要在前面用強(qiáng)制類型轉(zhuǎn)換符說明該存儲單元中數(shù)據(jù)的類型。本題要為指向雙精度浮點(diǎn)型數(shù)據(jù)的指針變量p分配存儲單元,因此用(double*)說明。
31.i<10i<10解析:分析程序:當(dāng)(i=0,1,2,…)時(shí),“j=i*10+8”語句的運(yùn)行結(jié)果是(8,18,28,…)個(gè)位數(shù)字為8的所有整數(shù);題中要求是100以內(nèi)的整數(shù),所以i<10;“if(j%4!=0)continue;”語句的功能是當(dāng)條件不能被4整除時(shí),繼續(xù)循環(huán)不執(zhí)行操作,直到能被4整除時(shí)輸出該數(shù),所以輸出的數(shù)滿足條件100以內(nèi)能被4整除且個(gè)位數(shù)為8。
32.00解析:對于一個(gè)unsignedshort來說,它能取的最大值是65535。這里給a賦值65536,已經(jīng)超出了它的取值范圍,這樣它的高位將被截掉,只把低位賦給它(全零)。所以a的值實(shí)際為0。
33.前后件關(guān)系前后件關(guān)系解析:在數(shù)據(jù)存儲結(jié)構(gòu)中,除了要存儲數(shù)據(jù),還要存儲數(shù)據(jù)的前后件關(guān)系,對于順序存儲的數(shù)據(jù)結(jié)構(gòu),前后件之間的關(guān)系,是通過存儲空間的位置來實(shí)現(xiàn)的,而對于鏈?zhǔn)酱鎯碚f,數(shù)據(jù)元素之間的前后件關(guān)系是通過指針來實(shí)現(xiàn)的。
34.3232解析:二叉樹第k層上,最多有2k-1(k≥1)個(gè)結(jié)點(diǎn)。第6層的結(jié)點(diǎn)數(shù)最多是26-1=32。注意區(qū)別“二叉樹的結(jié)點(diǎn)最多數(shù)”和“某一層的結(jié)點(diǎn)最多數(shù)”。前者的計(jì)算是深度為m的二叉樹最多有2m-1個(gè)結(jié)點(diǎn)。
35.00解析:解答本題需要注意表達(dá)式“k=0”,它是賦值表達(dá)式而不是關(guān)系表達(dá)式,不論k為何值,表達(dá)式k=0總會使k為0,所以不能進(jìn)入循環(huán)。
36.&a[i]或a+Ia[i]或*(a+i)&a[i]或a+I\r\na[i]或*(a+i)解析:主函數(shù)中一開始定義了一個(gè)長度為20的整形數(shù)組,然后通過一個(gè)循環(huán),循環(huán)20次給它的每個(gè)元素賦初值,所以在第一個(gè)空格處應(yīng)填各個(gè)元素的地址,即填&a[i]或a+i,然后再通過一個(gè)循環(huán)執(zhí)行20次,每循環(huán)一次,先判斷該循環(huán)是否大于0,如果大于0將其累加到變量sum中,所以第二個(gè)空格處應(yīng)該填入數(shù)組元素,即應(yīng)該填a[i]或*(a+i)。
37.1212解析:本題考查如何用指針引用數(shù)組元素。分析程序,首先定義了一個(gè)指向數(shù)組a的指針p,p指向數(shù)組的首地址,通過p++,將p指向a[1],p+2是將指針后移2位指向a[3],*(p+2)即是取a[3]的值12。
38.k*kk*k解析:本題考查的知識點(diǎn)是scarf()函數(shù)和printf()函數(shù)的用法。scanf()函數(shù)有兩個(gè)參數(shù),第一個(gè)參數(shù)是格式控制部分(格式控制部分是字符串,主要由“%”號和格式字符組成)第二個(gè)參數(shù)是一地址列表(地址列表是由多個(gè)地址組成,可以是變量的地址,也可以是字符串的首地址)。而第一個(gè)空格處位于scanf()函數(shù)的第二個(gè)參數(shù)處,所以,第一個(gè)空應(yīng)該填地址k。printf()函數(shù)有兩個(gè)參數(shù),第一個(gè)參數(shù)是輸出格式字符串(輸出格式字符串是由控制輸出格式的字符和非格式字符組成的,通常是字符常量。非格式字符作為輸出數(shù)據(jù)的間隔,輸出時(shí)原樣輸出)第二個(gè)參數(shù)為一輸出表達(dá)式表(輸出表達(dá)式表是由若干個(gè)需要計(jì)算和輸出的表達(dá)式組成的,表達(dá)式之間用逗號分隔開)。而第;個(gè)空位于printf()函數(shù)的第二個(gè)參數(shù)處,所以應(yīng)該填*K。
39.p=(structaa*)malloc(sizeof(structaa));p=(structaa*)malloc(sizeof(structaa));解析:ANSIC標(biāo)準(zhǔn)規(guī)定malloc函數(shù)的返回值類型為void*,函數(shù)的調(diào)用形式為:malloc(size)要求size的類型為unsignedint。由于返回類型為void*,所以在調(diào)用函數(shù)時(shí),必須利用強(qiáng)制轉(zhuǎn)換將其轉(zhuǎn)換為所需要的類型。
40.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本題考查基本邏輯表達(dá),“整數(shù)x的絕對值大于5”時(shí)值為“假”,即整數(shù)x的絕對值小于等于5,也就是整數(shù)x要大于等于-5且要小于等于5。這里“且”用“與(&&)”表示,所以C語言表達(dá)式為:(x>-5)&&(x<5)。
41.D解析:本題考核的知識點(diǎn)是函數(shù)的返回值以及返回值作為函數(shù)的參數(shù)。經(jīng)過分析得出函數(shù)fun()的功能是比較形參x和形參y的大小,返回較小的一個(gè).函數(shù)fun()有兩個(gè)參數(shù).本題中,首先定義了三個(gè)整型變量a、b和c,分別賦初值為9、8和7.然后執(zhí)行函數(shù)fun(fun(a,b),fun(b,c))。在該函數(shù)中分別將fun(a,b)和fun(b,C)函數(shù)的返回值作為該函數(shù)的兩個(gè)實(shí)參。在函數(shù)fun(a,b)中,由于a>b,故返回較小值b即8,在函數(shù)fun(b,C)中,由于b<c,故返回較小值c即為7,因此調(diào)用函數(shù)fun(fun(a,b),fun(b,C))相當(dāng)于執(zhí)行函數(shù)fun(8,7),返回較小值即7。所以,4個(gè)選項(xiàng)中選項(xiàng)D符合題意。
42.AA?!窘馕觥砍绦蛟O(shè)計(jì)的風(fēng)格主要強(qiáng)調(diào)程序的簡單、清晰和可理解性,以便讀者理解。程序?yàn)E用goto語句將使程序流程無規(guī)律,可讀性差;添加注釋行有利于對程序的理解.不應(yīng)減少或取消,程序的長短要依據(jù)實(shí)際的需要而定,并不是越短越好。
43.A本題主要考查軟件測試的基本知識。軟件測試的步驟可分為單元測試(模塊測試)、集成測試、確認(rèn)測試和系統(tǒng)測試。
(1)單元測試是針對每個(gè)模塊進(jìn)行的測試,它可從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測試用例,多個(gè)模塊可以平行、對立地測試。單元測試主要用于發(fā)現(xiàn)詳細(xì)設(shè)計(jì)和編程時(shí)犯下的錯(cuò)誤。單元測試多采用白盒測試,輔之以黑盒測試。
(2)集成測試是在單元測試的基礎(chǔ)上,根據(jù)模塊結(jié)構(gòu)圖將各個(gè)模塊連接起來,必須精心計(jì)劃,應(yīng)提交集成測試計(jì)劃、集成測試規(guī)格說明和集成測試分析報(bào)告。主要目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的問題。集成測試可以發(fā)現(xiàn)概要設(shè)計(jì)時(shí)犯的錯(cuò)誤。
(3)確認(rèn)測試用于驗(yàn)證軟件的功能和性能及其他特性是否與用戶的要求一致。確認(rèn)測試主要用于發(fā)現(xiàn)需求分析時(shí)犯下的錯(cuò)誤,一般使用黑盒法測試,以表明軟件符合需求說明書的要求,應(yīng)該仔細(xì)設(shè)計(jì)測試用例和測試過程。確認(rèn)測試必須有用戶參加,或以用戶為主,用戶應(yīng)參與設(shè)計(jì)測試用例,通常情況下,主要使用生產(chǎn)中的實(shí)際數(shù)據(jù)進(jìn)行測試,測試數(shù)據(jù)通過用戶接口輸入。
(4)系統(tǒng)測試是將已經(jīng)通過確認(rèn)測試的軟件,作為整個(gè)計(jì)算機(jī)系統(tǒng)的元素與計(jì)算機(jī)硬件、外設(shè)和網(wǎng)絡(luò)等其他因素結(jié)合在一起,進(jìn)行一系列的組裝測試和確認(rèn)測試。系統(tǒng)測試的目的是通過與系統(tǒng)的需求定義做比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合的地方。系統(tǒng)測試可以發(fā)現(xiàn)問題定義時(shí)犯下的錯(cuò)誤。
44.B解析:關(guān)系的交(∩)、并(∪)和差(-)運(yùn)算要求兩個(gè)關(guān)系是同元的,顯然作為二元的R和三元S只能做笛卡兒積運(yùn)算。
45.D解析:自加運(yùn)算對象可以是整型變量也可以是實(shí)型變量,但不能是表達(dá)式和常量。本題中,#defined2定義了d為常數(shù)2,不能再對d進(jìn)行自加運(yùn)算。
46.B解析:數(shù)據(jù)的存儲結(jié)構(gòu)是數(shù)據(jù)元素在計(jì)算機(jī)存儲器內(nèi)的表示。數(shù)據(jù)的存儲結(jié)構(gòu)是邏輯結(jié)構(gòu)用計(jì)算機(jī)語言的實(shí)現(xiàn),即建立數(shù)據(jù)的機(jī)內(nèi)表示。
47.D解析:根據(jù)結(jié)構(gòu)變量的存儲特點(diǎn),p+1意味著增加地址值為結(jié)構(gòu)體數(shù)組a的一個(gè)元素所占的字節(jié)數(shù),即p++使p由a[0]指向a[1]起始地址。本題++p->n得到p指向的結(jié)構(gòu)體變量中成員n的值使之加1。因?yàn)閜指向數(shù)組a起始地址,p->n的值為5,再掏打自加1運(yùn)行,結(jié)果為6。
48.C解析:函數(shù)fun(int*s,intn1,intn2)的功能是對數(shù)組s中的元素進(jìn)行首尾互相調(diào)換。所以在主函數(shù)中,當(dāng)fun(a,0,3)執(zhí)行完后,數(shù)組a[12]={4,3,2,1,5,6,7,8,9,0};再執(zhí)行fun(a,4,9),數(shù)組a[12]={4,3,2,1,0,9,8,7,6,5};再執(zhí)行fun(a,0,9)后,數(shù)組a[12]={5,6,7,8,9,0,1,2,3,4}。
49.A解析:strcpy(s+1,p2)是字符串復(fù)制,s中的內(nèi)容變?yōu)?xABC',strcat(s+2,p1)是字符串連接(s的內(nèi)容已不是初始化的內(nèi)容,而是復(fù)制之后的內(nèi)容),結(jié)果為'xABCabc'。
50.B
51.C解析:執(zhí)行語句x=y++,是先將y的值10賦給x,然后y自增。
52.D
53.A
54.C解析:關(guān)于軟件測試的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一書中給出了深刻的闡述:軟件測試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程;一個(gè)好的測試用例是指很可能找到迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的用例;一個(gè)成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯(cuò)誤的測試。整體來說,軟件測試的目的就是盡可能多地發(fā)現(xiàn)程序中的錯(cuò)誤。本題答案為C。
55.C解析:本題考查的知識點(diǎn)是賦值語句的基本知識。在表達(dá)式的運(yùn)算中,雙目賦值運(yùn)算符的格式為“變量二表達(dá)式”,單目運(yùn)算符一般形式為“運(yùn)算符表達(dá)式”或“表達(dá)式運(yùn)算符”。常量和表達(dá)式是不能被賦值的。選項(xiàng)A為復(fù)合表達(dá)式,首先計(jì)算(i=2,++i)的值,然后賦值給n,故選項(xiàng)A正確;選項(xiàng)B為簡單自加運(yùn)算,故選項(xiàng)B正確;選項(xiàng)C在表達(dá)式++(i+1);中,(i+1)不是變量,該表達(dá)式的值為常量,而在++運(yùn)算中,其運(yùn)算對象必須為變量,故選項(xiàng)C錯(cuò)誤;選項(xiàng)D中為復(fù)合賦值表達(dá)式,正確.所以應(yīng)當(dāng)選擇C。
56.A解析:和線性表類似,棧也有兩種存儲方法,一是順序棧,二是鏈?zhǔn)綏?。棧的順序存儲結(jié)構(gòu)是利用一組地址連續(xù)的存儲單元一次存儲自棧底到棧頂?shù)臄?shù)據(jù)元素,同時(shí)附設(shè)指針top指示棧頂元素的位置,由于棧的操作是線性表操作的特例,相對而言,鏈?zhǔn)綏5牟僮鞲子趯?shí)現(xiàn)。注意:這3種運(yùn)算方法在各種存儲結(jié)構(gòu)中的應(yīng)用。
57.C解析:軟件設(shè)計(jì)遵循軟件工程的基本目標(biāo)和原則,建立了適用于在軟件設(shè)計(jì)中應(yīng)該遵循的基本原理和與軟件設(shè)計(jì)有關(guān)的概念。①抽象是一種思維工具,就是把事物本質(zhì)的共同特性抽出來而不考慮其他細(xì)節(jié)。②模塊是指可以單獨(dú)命名且可編址的元素。如高級語言中的過程、函數(shù)、子程序等。③信息隱蔽是指在一個(gè)模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。④模塊獨(dú)立性是指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。因此,本題的正確答案是C。
58.D解析:該題中考查的是簡單的單鏈表,下圖就是賦完值后的示意圖:容易看到p->num=10,而q->next就是r,所以q->next->num=30,故答案為40。
59.D解析:換行符是一個(gè)轉(zhuǎn)義字符,應(yīng)該是‘\\n’,而不是‘\\N’。選項(xiàng)B)中,因?yàn)殛P(guān)系運(yùn)算符“==”的優(yōu)先級高于賦值運(yùn)算符“=”,所以ch得到的值是關(guān)系運(yùn)算getchar()=='\\n'的結(jié)果而不是從鍵盤輸入的字符,因而不正確,故正確答案為選項(xiàng)D)。
60.B解析:函數(shù)fib內(nèi)部有兩個(gè)遞歸調(diào)用,當(dāng)n=3時(shí),fib(n-1)返回2,fib(n-2)也返回2,所以fib(n-1)+fib(n-2)的值為4。
61.D循環(huán)的條件是i<7并且p[i]是奇數(shù),當(dāng)i=0時(shí),i<7,p[i]=11,滿足條件,所以k=0+11=11,然后i++,i++,所以i=2,p[2]=14,為偶數(shù),退出循環(huán),這時(shí)k還是11.
62.A先進(jìn)行a<b的判斷,因?yàn)閍=1,b=2,所以條件成立取a的值為表達(dá)式的值,即1.
63.A當(dāng)執(zhí)行g(shù)ets(ss)后,ss數(shù)組中的元素為ABC,再執(zhí)行strcat(ss,"6789"),strcat的作用,是把6789連接到了ss數(shù)組后面,執(zhí)行完后SS數(shù)組為ABC6789,故選擇A選項(xiàng)。
64.B
\n(x&1)&&(z<2)=(0.5&1)&&(a<z)=1&&1=1,故選擇B選項(xiàng)。
\n
65.A【答案】:A
【知識點(diǎn)】:實(shí)體完整性與候選關(guān)鍵字
【解析】:在滿足數(shù)據(jù)完整性約束的條件下,一個(gè)關(guān)系可以有一個(gè)或多個(gè)候選關(guān)鍵字,但至少有一個(gè)候選關(guān)鍵字,故選A。
66.AR—s表示屬于R但不屬于s,R—(R—S)表示屬于R但不屬于(R—s),即相當(dāng)于Rns。
67.C
\n本題考查邏輯與(&&)和邏輯或(||)運(yùn)算符的使用。x值在[1,10]之間,C語言中可以寫成x值在[100,11O]之間,C語言表達(dá)式應(yīng)寫成“(x>=100)&&(x>=110)”;[1,1O]和[100,110]滿足任意條件就可以,所以是邏輯或的關(guān)系,因此只要將前兩個(gè)表達(dá)式用邏輯或運(yùn)算符連接起來即可,所以最后的表達(dá)式:(x>=1)&&(x<=10)&&(x<=110)。
\n
68.C
\n當(dāng)用“w”打開時(shí),已存在一個(gè)以該文件名命名的文件,則在打開時(shí)將該文件刪除,再重新建立一個(gè)新文件,因此當(dāng)輸入時(shí)原來的內(nèi)容已被覆蓋,所以只有后輸入的內(nèi)容,故選擇C選項(xiàng)。
\n
69.C嵌套的if語句功能是將k賦值為a、b、c中的最小值,選項(xiàng)A)中沒有比較a、c的大小,選項(xiàng)B)中語句”((b<c)?a:b):((b>c)?b:c)“錯(cuò)誤,選項(xiàng)D)中沒有比較b、c大小。
70.C
71.B解析:條件表達(dá)式的形式為:“表達(dá)式1?表達(dá)式2:表達(dá)式3”。其含義為:當(dāng)“表達(dá)式1”的值為非零時(shí),求出“表達(dá)式2”的值,此時(shí)“表達(dá)式2”的值就是整個(gè)條件表達(dá)式的值;當(dāng)“表達(dá)式1”的值為零時(shí),求出“表達(dá)式3”的值,此時(shí)“表達(dá)式3”的值就是整個(gè)條件表達(dá)式的值。對于本題來說,當(dāng)表達(dá)式EXP為非0值時(shí)條件成立,即執(zhí)行語句i++;當(dāng)EXP等于0時(shí),執(zhí)行語句j--;這等同于條件表達(dá)式“(EXP!=0)?i++:i++;”。
72.B水平制表符中,'\t'表示的是橫向跳若干格;選項(xiàng)B中,'\039'錯(cuò)誤,'\039'是八進(jìn)制形式表的字符,最大數(shù)為7,但其中出現(xiàn)'9',','是字符逗號;選項(xiàng)D中,'\n'表示的是換行。
73.AB選項(xiàng)中運(yùn)算符“%”的前后必須為整數(shù),C選項(xiàng)中不能將變量賦給表達(dá)式x+n,D選項(xiàng)中不能將表達(dá)式4+1賦給常量5。
74.A\n程序中的if循環(huán)是固定地執(zhí)行8次,屬于計(jì)數(shù)器,程序是從中隨機(jī)抽取一個(gè)數(shù),然后對5進(jìn)行求余再輸出,共抽取8個(gè)數(shù)。所以答案為A。
\n
75.C數(shù)據(jù)庫是存儲在一起的相關(guān)數(shù)據(jù)的集合,具有以下特點(diǎn)。
(1)實(shí)現(xiàn)數(shù)據(jù)共享。數(shù)據(jù)共享包含所有的用戶可同時(shí)存取數(shù)據(jù)庫中的數(shù)據(jù),也包括用戶可以用各種方式通過接口使用數(shù)據(jù)庫,并提供數(shù)據(jù)共享。
(2)減少數(shù)據(jù)的冗余度。同文件系統(tǒng)相比,由于數(shù)據(jù)庫實(shí)現(xiàn)了數(shù)據(jù)共享,從而避免了用戶各自建立應(yīng)用文件,減少了大量重復(fù)的數(shù)據(jù)和數(shù)據(jù)冗余,維護(hù)了數(shù)據(jù)的一致性。
(3)數(shù)據(jù)的獨(dú)立性。數(shù)據(jù)的獨(dú)立性包括數(shù)據(jù)庫的邏輯結(jié)構(gòu)和應(yīng)用程序相互獨(dú)立,也包括數(shù)據(jù)物理結(jié)構(gòu)的變化不影響數(shù)據(jù)的邏輯結(jié)構(gòu)。
(4)數(shù)據(jù)實(shí)現(xiàn)集中控制。在文件管理方式中,數(shù)據(jù)處于一種分散的狀態(tài),不同的用戶或同一用戶在不同的處理中,其文件之間毫無關(guān)系。利用數(shù)據(jù)庫可對數(shù)據(jù)進(jìn)行集中控制和管理,并通過數(shù)據(jù)模型表示各種數(shù)據(jù)的組織以及數(shù)據(jù)間的聯(lián)系。
(5)數(shù)據(jù)一致性和可維護(hù)性,以確保數(shù)據(jù)的安全性和可靠性。主要包括:①安全性控制。以防止數(shù)據(jù)丟失、錯(cuò)誤更新和越權(quán)使用。②完整性控制。保證數(shù)據(jù)的正確性、有效性和相容性。③并發(fā)控制。使在同一時(shí)間周期內(nèi),允許對數(shù)據(jù)實(shí)現(xiàn)多路存取,又能防止用戶之間的不正常交互作用。④故障的發(fā)現(xiàn)和恢復(fù)。由數(shù)據(jù)庫管理系統(tǒng)提供一套方法,可及時(shí)發(fā)現(xiàn)故障和修復(fù)故障,從而防止數(shù)據(jù)被破壞。
(6)故障恢復(fù)。由數(shù)據(jù)庫管理系統(tǒng)提供一套方法,可及時(shí)發(fā)現(xiàn)故障和修復(fù)故障,從而防止數(shù)據(jù)被破壞。數(shù)據(jù)庫系統(tǒng)能盡快恢復(fù)數(shù)據(jù)庫系統(tǒng)運(yùn)行時(shí)出現(xiàn)的故障,可能是物理上或是邏輯上的錯(cuò)誤。比如對系統(tǒng)的誤操作造成的數(shù)據(jù)錯(cuò)誤等。
數(shù)據(jù)庫是不可能避免一切數(shù)據(jù)都沒有重復(fù)的,并且有些情況下需要有重復(fù)的數(shù)據(jù),比如數(shù)據(jù)庫恢復(fù)技術(shù)需要一定的數(shù)據(jù)冗余度。
76.B本程序考察的是函數(shù)的遞歸調(diào)用,在調(diào)用一個(gè)函數(shù)的過程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用,執(zhí)行結(jié)果為l+2+3+4+5+6+7+8+9+10=55.
77.C文件一般指存儲在外部介質(zhì)上數(shù)據(jù)的集合。C語言把文件看做是一個(gè)字符(字節(jié))的序列,即由一個(gè)字符(字節(jié))的數(shù)據(jù)順序組成。它不是由記錄組成的,而是一個(gè)數(shù)據(jù)流。根據(jù)數(shù)據(jù)的組織形式,可分為ASCII文件和二進(jìn)制文件。ASCII文件又稱文本文件,它的每一個(gè)字節(jié)存放一個(gè)ASCII代碼,代表一個(gè)字符。二進(jìn)制文件把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣輸出到磁盤上存放。由此可知,本題正確答案是選項(xiàng)C。
78.C解析:逗號表達(dá)式的求解步驟是先求解表達(dá)式1,然后依次求解表達(dá)式2,直到表達(dá)式N的值。整個(gè)逗號表達(dá)式的值就是最后一個(gè)表達(dá)式N的值。
表達(dá)式(x=3*y,x+1)中,第一個(gè)表達(dá)式x=3*y=3*5=15;第二個(gè)表達(dá)式x+1=16,但沒有給x或y賦值,所以x還是等于15;第3個(gè)表達(dá)式x-1=15-1=14,所以y的值為14。
79.B
80.B
81.
82.1doublefun(intw[][n])2{3inti,j,k=0;4doublesum=0.0;5for(i=0;i<n;i++)6for(j=0;j</n;i++)<n;i++)<n;j++)7if(i==0||i==N-1||j==0||j==N-l)/*只要下標(biāo)中有一個(gè)為0或N-1,則它一定是周邊元素*/</n;j++)</n;i++)<n;i++)<n;j++)8{sum=sum+w[i][j];/*將周邊元素求和*/</n;j++)</n;i++)<n;i++)<n;j++)9k++;</n;j++)</n;i++)<n;i++)<n;j++)10}</n;j++)</n;i++)<n;i++)<n;j++)11returnsum/k;/*求周邊元素的平均值*/</n;j++)</n;i++)<n;i++)<n;j++)12}</n;j++)</n;i++)<n;i++)<n;j++)本題要求計(jì)算二維數(shù)組周邊元素的平均值,for循環(huán)語句控制循環(huán)過程,if條件語句根據(jù)數(shù)組元素的下標(biāo)判斷該元素是否為二維數(shù)組的周邊元素。本題采用逐一判斷的方式,周邊元素的規(guī)律為下標(biāo)中有一個(gè)是0或N-1,所以只要下標(biāo)中有一個(gè)是0或N-1,那么它一定是周邊元素。計(jì)算周邊元素個(gè)數(shù)的方式是當(dāng)給sum累加一個(gè)值時(shí),k也加1。</n;j++)</n;i++)2022年山西省朔州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.
2.若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語句是()。A.switch(a+b){case1:prinf("*\n");.case2+1:printf("**(n");}
B.switch(int)x);{case1:print("*\n");.case2:printf(**\n");}
C.switch(x){case1.0:print("*\n");case2.0:print("*\n");}
D.switch(a+b){case1:print("*\n");.casec:pit(**\n");}
3.有定義語句:inta=1,b=2,c=3,x;,則以下選項(xiàng)中各程序段執(zhí)行后,x的值不為3的是
A.if(c<a)x=1;elseif(b<a)x=1;elsex=3;
B.if(a<3)x=3;elseif(a<2)x=2;elsex=1;
C.if(a<3)x=3;if(a<2)x=2;if(a<1)x=1;
D.if(a<b)x=b;if(b<c)x=c;if(c<a)x=a;
4.設(shè)以下變量均為int類型,表達(dá)式的值不為7的是A.(x=y=6,x+y,x+1)
B.(x=6,x+1,y=6,x+y)
C.(x=y=6,x+y,y+1)
D.(y=6,y+1,x=y,x+1)
5.有以下程序:main{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,12,},{13,14,15,16}},i,j;for(i=0;i<4;i++){for(j=0;j<i;j++)printf("%4c",);for(j=________;J<4;j++)printf("%4d",num[i][j]);printf("\n");}}若要按以下形式輸出數(shù)組右上半三角1234678111216則在程序下劃線處應(yīng)填入的是()。A.i-1B.iC.i+1D.4一i
6.有以下程序:#include<stdio.h>intshow(char*str){while(*str){putchar(*str+1);str++;}return*str+1;}main(){printf(“%d\n”,show(“ABCD”));}程序運(yùn)行后的輸出結(jié)果是()。
A.ABCD0B.BCDE0C.BCDE1D.ABCD1
7.若執(zhí)行以下程序時(shí)從鍵盤上輸入9,則輸出結(jié)果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8
8.給出以下定義:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};則正確的敘述為()。
A.數(shù)組x和數(shù)組y等價(jià)B.數(shù)組x和數(shù)組y的長度相同C.數(shù)組x的長度大于數(shù)組y的長度D.數(shù)組x的長度小于數(shù)組y的長度
9.對一個(gè)有A,B,C,D隨機(jī)組成的序列進(jìn)行哈夫曼編碼,據(jù)統(tǒng)計(jì),各個(gè)元素的概率分別為:P(A)=0.4,P(B)=0.35,P(C)=0.2,P(D)=0.05,請問該編碼的平均期望編碼長度為()bits。
A.1.45B.1.74C.1.85D.1.92
10.設(shè)有如下函數(shù)定義:#include<stdio.h>intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若執(zhí)行調(diào)用語句“n=fun(3);”,則函數(shù)fun總共被調(diào)用的次數(shù)是()。
A.2B.3C.4D.5
11.
12.有以下程序voidsum(inta[]){a[0]-a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf(“%d\n”,a[2]);}程序運(yùn)行后的輸出結(jié)果是A.6B.7C.5D.8
13.在關(guān)系數(shù)據(jù)模型中,通??梢园?)稱為屬性,其值稱為屬性值。
A.記錄B.基本表C.模式D.字段
14.有以下程序#include<stdio.h>structst{intx,y;}data[2]={1,10,2,20};main(){structst*p=data;printf("%d,",p->y);printf("%d\n",(++p)->x);}程序的運(yùn)行結(jié)果是______。A.10,1B.20,1C.10,2D.20,2
15.以下選項(xiàng)中不合法的標(biāo)識符是()。
A.&aB.FORC.printD._00
16.有以下程序:#include<stdio.h>main{shortC=124;C=C_;printf("%d\n",c);}若要使程序的運(yùn)行結(jié)果為248,應(yīng)在下劃線處填入的是()。A.>>2B.|248C.&0248D.<<1
17.下列敘述中,不正確的是
A.數(shù)據(jù)庫技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)共享的問題
B.數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致
C.數(shù)據(jù)庫設(shè)計(jì)是指設(shè)計(jì)一個(gè)能滿足用戶要求,性能良好的數(shù)據(jù)庫
D.數(shù)據(jù)庫系統(tǒng)是一個(gè)獨(dú)立的系統(tǒng),但是需要操作系統(tǒng)的支持
18.對于函數(shù)聲明“voidfun(intarray[4],int*ptr);”,以下敘述中正確的是()。
A.array、ptr都是指針變量
B.調(diào)用fun函數(shù)時(shí),實(shí)參的值將逐一復(fù)制給array
C.調(diào)用fun函數(shù)時(shí),array按值傳送,ptr按地址傳送
D.array是數(shù)組,ptr是指針,它們的性質(zhì)不同
19.
20.
二、2.填空題(20題)21.設(shè)有如下程序:
main()
{intn1,n2;
scanf("%d",&n2);
while(n2!=0)
{n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}
程序運(yùn)行后,如果從鍵盤上輸入1298,貝愉出結(jié)果為【】。
22.實(shí)現(xiàn)程序可將磁盤中的一個(gè)文件復(fù)制到另一個(gè)文件中,兩個(gè)文件的文件名在可執(zhí)行命令的命令行中(相當(dāng)于copy命令),假定文件在當(dāng)前目錄下。請補(bǔ)全程序。
#include<stdio.h>
voidmain(intargc,char*argv[])
{FILE*f1,*f2;
if(argc<【】)
{printf("parametererror!\n");exit(0);}
n=fopen(argv[1],"r");
f2=fopen(argv[2],"w");
while(【】)fputc(fgetc(f1),f2);
fclose(f1);
fclose(f2);
}
23.數(shù)據(jù)模型分為格式化模型與非格式化模型,層次模型與網(wǎng)狀模型屬于【】。
24.在最壞情況下,堆排序需要比較的次數(shù)為()。
25.一個(gè)模塊直接調(diào)用的其他模塊的模塊個(gè)數(shù)稱為______。
26.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個(gè)字節(jié)的動態(tài)存儲空間,請?zhí)羁铡t=(char*)【】;
27.有以下程序:
intf(intn)
{if(n==1)return1;
elsereturnf(n-1)+1;}
main()
{inti,j=0;
for(i=1;i<3;i++)j+t(i);
printf("%d\n",j);
}
程序運(yùn)行后的輸出結(jié)果是【】。
28.以下程序運(yùn)行后輸出結(jié)果是【】。
#include<stdio,h>
main()
{inta,b,c;
a=10;b:20;c=(a%b<1)‖(a/b>1);
printf("%d%d%d\n",a,b,c);
}
29.若有定義:inta=4,b=5,c=6;然后順序執(zhí)行下列語句后,變量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);
30.若要使指針p指向一個(gè)double類型的動態(tài)存儲單元,請?zhí)羁铡?/p>
p=【】malloc(sizeof(double));
31.下面程序的功能是:輸出100以內(nèi)能被4整除且個(gè)位數(shù)為8的所有整數(shù),請?zhí)羁?。main(){inti,j;for(i=0=();i++){j=i*10+8;if(j%4!=0)continue;printf("%d",j);}}
32.以下程序的輸出結(jié)果是【】。
main()
{unsignedshorta=65536;intb;
printf("%d\n",b=A);
}
33.在數(shù)據(jù)的存儲結(jié)構(gòu)中,不僅需要存儲各數(shù)據(jù)元素的信息,還要存放各元素之間______的信息。
34.一棵二叉樹第6層(根結(jié)點(diǎn)為第一層)的結(jié)點(diǎn)最多為______個(gè)。
35.下列循環(huán)的循環(huán)次數(shù)是______。
ihtk=2;
while(k=0)
printf("%d",k);
k--;
printf("\n");
36.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計(jì)其中正數(shù)的個(gè)數(shù),并計(jì)算它們之和。請?zhí)羁铡?/p>
main()
{inti,a[20],sum,count;
sum=count=0;
for(i=0;i<20;i++)scanf("%d",(【】);
for(i=0;i<20;i++)
{if(a[i]>0)
{count++;
sum+=(【】);
}
}
printf("sum=%d,count=%dhn",sum,count);
}
37.下列程序的輸出結(jié)果是______。
main()
{inta[]={31,27,20,12,6,1),*p=a;
p++;
printf("%d\n",*(p+2));
}
38.設(shè)有定義:intn,*k=&n;以下語句將利用指針變量k讀寫變量n中的內(nèi)容,請將語句補(bǔ)充完整。
scanf(“%d”,______);
printf(“%d\n”,______);
39.現(xiàn)有如下定義:structaa{inta;floatb;charc;}*p;現(xiàn)需用malloc函數(shù)動態(tài)的申請一個(gè)structaa類型大小的空間(由p指向),則定義的語句為:【】。
40.表示“整數(shù)x的絕對值大于5”時(shí)值為“假”的C語言表達(dá)式是______。
三、1.選擇題(20題)41.有以下程序;charfun(charx,chary){if(x<y)returnx;returny;}main(){inta='9',b='8',c='7';printf("%c\n",fun(fun(a,B),fun(b,C)));}程序的執(zhí)行結(jié)果是
A.函數(shù)調(diào)用出錯(cuò)B.8C.9D.7
42.設(shè)計(jì)程序時(shí),應(yīng)采納的原則之一是()。
A.程序的結(jié)構(gòu)應(yīng)有助于讀者的理解B.限制goto語句的使用C.減少或取消注釋行D.程序越短越好
43.檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。
A.確認(rèn)測試B.集成測試C.驗(yàn)證測試D.驗(yàn)收測試
44.設(shè)R是一個(gè)二元關(guān)系,S是一個(gè)三元關(guān)系,則下列運(yùn)算中正確的是()。
A.R-SB.R×SC.RNSD.RUS
45.設(shè)有以下定義inta=0;doubleb=1.25;charcc='A';#defined2則下面語句中錯(cuò)誤的是
A.a++;B.b++;C.c++;D.d++;
46.數(shù)據(jù)的存儲結(jié)構(gòu)是指
A.數(shù)據(jù)所占的存儲空間量B.數(shù)據(jù)的邏輯結(jié)構(gòu)在汁算機(jī)中的表示C.數(shù)據(jù)在計(jì)算機(jī)中的順序存儲方式D.存儲在外存中的數(shù)據(jù)
47.若有以下說明和語句:structst{intn;char*ch;};structsta[3]={5,"abc",7,"def",9,"ghk"},*p=a;則值為6的表達(dá)式是______。
A.p++->nB.p->n++C.(*p).n++D.++p->n
48.有以下程序
#include<stdio.h>
voidfun(int*s,intn1,intn2)
{inti,j,t;
i=n1;j=n2;
while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}
}
main()
{inta[10]={1,2,3,4,5,6,7,8,9,0},k;
fun(a,0,3);fun(a,4,9);fun(a,0,9);
for(k=0;k<l0;k++)printf("%d",a[k]);printf("\n");
}
程序的運(yùn)行結(jié)果是
A.0987654321B.4321098765C.5678901234D.0987651234
49.下面程序的輸出結(jié)果是______。#include<string.h>main(){char*p1="abc",*p2="ABC",s[20]="xyz";strcpy(s+1,p2);strcat(s+2,p1);printf("%s\n",s);}
A.xABCabcB.zABCabcC.yzabcABCD.xyzABCabc
50.若變量a、i已正確定義,且i已正確賦值,合法的語句是______。
A.a=1;B.++1;C.a=a++=5;D.a=int(
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京簽訂工作合同范本
- 廠家銷售鍋爐合同范本
- 保安臨時(shí)服務(wù)合同范本
- 合資砂場合同范例
- 古建圓柱采購合同范本
- 結(jié)算審計(jì)服務(wù)合同范本
- 傳媒股東合同范本
- 出口木箱合同范本
- 出售住宅和廠房合同范本
- 合辦活動協(xié)議合同范本
- 鐵路安全應(yīng)急預(yù)案
- 《城市軌道交通車輛構(gòu)造》 課件 2.2 不銹鋼車體結(jié)構(gòu)認(rèn)知
- 創(chuàng)傷性凝血病與輸血
- 古詩詞誦讀《李憑箜篌引》 公開課一等獎(jiǎng)創(chuàng)新教案統(tǒng)編版高中語文選擇性必修中冊
- 小學(xué)生日常行為規(guī)范實(shí)施方案
- 2024-2025學(xué)年九年級化學(xué)人教版上冊檢測試卷(1-4單元)
- 2024年遼寧省鞍山岫巖滿族自治縣事業(yè)單位招聘(150人)歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- DBJ46-070-2024 海南省民用建筑外門窗工程技術(shù)標(biāo)準(zhǔn)
- 金屬冶煉安全生產(chǎn)實(shí)務(wù)注冊安全工程師考試(初級)試題與參考答案
- 無縫氣瓶檢驗(yàn)作業(yè)指導(dǎo)書2024
- 《改革開放史》教學(xué)大綱
評論
0/150
提交評論