版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021年湖北省襄樊市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.設(shè)二叉樹的中序序列為BCDA,前序序列為ABCD,則后序序列為()。
A.CBDAB.DCBAC.BCDAD.ACDB
2.有以下程序:#include<stdio.h>#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-i];}main(){intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;fun(x,y);for(i=0;i<N;i++)printf(“%d”,y[i]);printf(“\n”);}程序的運行結(jié)果是()。
A.-3,-1,1,3,B.-12,-3,0,0,C.0,1,2,3,D.-3,-3,-3,-3,
3.則以下函數(shù)調(diào)用語句錯誤的是()。#include<stdio.h>intadd(inta,intb){return(a+b)}main(){intk,(*f)(),a=5,b=10;f=add;...}A.k=f(a,b);B.k=add(a,b);C.k=(*f(a,b);D.k=*f(a,b);
4.有下列程序段:
intk=0,a=1,b=2,c=3;
k=a<b?b:a;k=k>C?C:k;
執(zhí)行該程序段后,k的值是()。
A.3B.2C.1D.0
5.設(shè)有以下宏定義:#defineN3#defineY(n)((N+1)*n)則執(zhí)行以下語句后,z的值為______。z=2*(N+Y(5+1));A.出錯B.42C.48D.54
6.以下程序的輸出結(jié)果是______。#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}
A.16B.2C.9D.1
7.以下程序的輸出結(jié)果是()main(){union{chari[2];intk;}r;r.i[0]=2,r.i[1]=0;printf("%d\n",r,k);}
A.2B.1C.0D.不確定
8.第
3
題
已知:intc[3][4];則對數(shù)組元素引用正確的是
A.c[1][4]B.c[1.5][0]C.c[1+0][0]D.以上表達(dá)都錯誤
9.以下符號中不能作為標(biāo)識符的是()。A.256B.voidC.vanfD.4Struct
10.使用深度優(yōu)先算法遍歷下圖,遍歷的順序為()A.ABCDEFGB.ABDCFEGC.ABDECFGD.ABCDFEG
11.數(shù)據(jù)的不可分割的基本單位是()。
A.元素B.結(jié)點C.數(shù)據(jù)類型D.數(shù)據(jù)項
12.有以下程序段: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)生的隨機數(shù)n為4時結(jié)束循環(huán)操作
C.當(dāng)產(chǎn)生的隨機數(shù)n為1和2時不做任何操作
D.當(dāng)產(chǎn)生的隨機數(shù)n為0時結(jié)束程序運行
13.有以下程序:#includeMain(){charc1.c2;.c1='A'+'8'-'4';c2='A'+'8'-'5';.printf("%c,%d\n",,c1.c2);}已知字母A的ASCI碼為65.程序運行后的輸出結(jié)果是()。A.E.68B.D.69C.E,DD.輸出無定值
14.有以下程序:#include<stdio.h>main(){chara=H;a=(a>=Aa<=2)?(a-A+a):a;printf("%c\n",a);}程序運行后的輸出結(jié)果是()。A.AB.aC.HD.h
15.有以下程序: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
16.已知字符A的ASCII值是65,字符變量c1的值是‘A’,c2的值是‘D’,則執(zhí)行語句“printf(“%d,%d”,c1,c2-2);”的輸出結(jié)果是()。
A.65,68B.A,68C.A,BD.65,66
17.有以下程序#include<stdio.h>structtt(intx;structtt*y;)*P;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main{inti;p=a;for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}}程序的運行結(jié)果是()。A.20,30,B.30,17,C.15,30,D.20,15,
18.若有說明inta[][3]={1,2,3,4,5,6,7,8,9},則a數(shù)組第一維的大小是()。
A.2B.3C.4D.無確定值
19.若有定義語句:“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。A.1.9B.1C.2D.2.4
20.
二、2.填空題(20題)21.以下程序中,select函數(shù)的功能是:在N行M列的二維數(shù)組中,選出一個最大值作為函數(shù)值返回,并通過形參傳回此最大值所在的行下標(biāo)。請?zhí)羁铡?/p>
#defineN3
#defineM3
select(inta[N][M],int*n)
{inti,j,row=1,colum=1;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n=【】;
return(【】);
}
main()
{inta[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,&n);
printf(“max=%d,line=%d\n”,max,n);
}
22.以下程序用以刪除字符串中所有的空格,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{chars[100]={"OurteacherteachClanguage!"};inti,j;
for(i=j=0;s[i]!='\0';i++)
if(s[i]!=''){()}
s[j]='\0';
printf("%s\n",s);
}
23.以下程序運行后的輸出結(jié)果是______。
main()
{
inta,b,c;
a=25;
b=025;
c=0x25;
printf("%d%d%d\n",a,b,C);
}
24.以下程序的輸出結(jié)果是【】。
voidreverse(inta[],intn)
{inti,t;
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf("%d\n",s);
}
25.閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是【】。
#include"stdio.h"
main()
{charfun(char,int);
chara='A';
intb=13;
a=fun(a,b);
putchar(a);}
charfun(chara,intb)
{chark;
k=a+b;
returnk;}
26.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\N,*p,*q))
}
27.下列程序運行后的輸出的結(jié)果是______。
#include<stdio.h>
main()
{chars[20];
scanf("%s",s);
printf("%s",s);
}
運行程序,輸入HOWAREYOU。
28.以下程序的功能是建立一個帶有頭結(jié)點的單向鏈表,鏈表結(jié)點中的數(shù)據(jù)通過鍵盤輸入,當(dāng)輸入數(shù)據(jù)為-1時,表示輸入結(jié)束(鏈表頭結(jié)點的data域不放數(shù)據(jù),表空的條件是ph->next==NULL),請?zhí)羁铡?/p>
#include<stdio.h>
structlist{intdata;structlist*next;};
structlist*creatlist()
{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));
p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");
scanf("%d",&a);
while(a!=-1)
{p=(structlist*)malloc(sizeof(structlist));
【】=a;q->next=p;【】=p;scanf("%d",&a);}
p->next=′\0;return(ph);}
main()
{structlist*head;head=creatlist();}
29.已有定義:charc=′′;inta=1,b;(此處c的初值為空格字符),執(zhí)行b=!c&&a;后b的值為【】。
30.若有以下程序:
main()
{inta[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};
inti,j,s=0;
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
{if(a[i][j]<0)
continue;
if(a[i][j]==0)
break;
s+=a[i][j];
}
}
printf("%d\n",s);
}
執(zhí)行后的輸出結(jié)果是【】。
31.在內(nèi)存中,存儲字符'x'要占用1個字節(jié),存儲字符串"x"要占用【】個字節(jié)。
32.若有如下結(jié)構(gòu)體說明:
structSTRU
{inta,b;charc:doubled;
structSTRU*p1,*p2;
};
請?zhí)羁眨酝瓿蓪數(shù)組的定義,t數(shù)組的每個元素為該結(jié)構(gòu)體類型。
【】t[20]
33.下列程序的運行結(jié)果是______。
#include<stdio.h>
func(a,b)
{staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
main()
{intk=5,m=3,p;
p=func(k,m);
printf("%d",p);
p=func(k,m);
printf("%d、n",p);
}
34.常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖(SC),也稱程序結(jié)構(gòu)圖。其中,用矩形表示______,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。
35.有以下程序段,且變量已正確定義和賦值
for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
請?zhí)羁眨瓜旅娉绦蚨蔚墓δ芘c之完全相同
S=1.0;k=1;
while([8]){s=s+1.0/(k*(k+1));[9];}
printf("s=%f\n\n",s);
36.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。
37.在面向?qū)ο蠓椒ㄖ校?)是具有相似性質(zhì)的對象的集合。
38.按"先進(jìn)后出"原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是【】。
39.數(shù)據(jù)模型按不同的應(yīng)用層次分為三種類型,它們是______數(shù)據(jù)模型、邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型。
40.若a是血型變量,且a的初值為4,則計算a+=a-=a*a表達(dá)式后a的值為______。
三、1.選擇題(20題)41.在面向?qū)ο笤O(shè)計中,對象有很多基本特點,其中“從外面看只能看到對象的外部特性,而對象的內(nèi)部對外是不可見的”這一性質(zhì)指的是對象的
A.分類性B.標(biāo)識惟一性C.多態(tài)性D.封裝性
42.以下程序運行后,輸出結(jié)果是______。#include<stdio.h>#definePT5.5#difineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1f/n",S(a+b));}
A.49.5B.9.5C.22D.45
43.下列敘述中正確的是()。
A.C語言編譯時不檢查語法B.C語言的子程序有過程和函數(shù)兩種C.C語言的函數(shù)可以嵌套定義D.C語言的函數(shù)可以嵌套調(diào)用
44.有以下結(jié)構(gòu)體說明和變量定義,如圖所示,指針p、q、r分別指向一個鏈表中的三個連續(xù)結(jié)點。structnode{intdata;tractnode*next;}*p,*q,*r;
現(xiàn)要將q和r所指結(jié)點的先后位置交換,同時要保持鏈表的連續(xù),以下錯誤的程序段是
A.r->next=q;q->next=r->next;p->next=r;
B.q->next=r->next;p-next=r;r->next=q;
C.p->next=r;q->next=r->next;r->next=q;
D.q->next=r->next;r->next=q;P->next=r;
45.若有說明:int*p1,*p2,n=8,m;下列均是正確賦值語句的選項是()。
A.p1=&n;p2=&p1;
B.p1=n;
C.p1=&n;*p2=p1;
D.p1=&n;p2=p1;
46.下列程序的輸出結(jié)果是()。voidf(int*x,int*y){intt;t=*x,*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i+)printf("%d,",a[i]);}
A.8,2,3,4,5,6,7,1
B.5,6,7,8,1,2,3,4
C.1,2,3,4,5,6,7,8
D.8,7,6,5,4,3,2,1
47.以下對聯(lián)合類型敘述正確的是()。
A.可以對聯(lián)合變量名直接賦值
B.使用聯(lián)合變量的目的是為了節(jié)省內(nèi)存
C.任何一個聯(lián)合變量可以同時引用聯(lián)合中的不同成員
D.聯(lián)合類型定義中不能同時出現(xiàn)結(jié)構(gòu)類型的成員
48.在c語言中,變量的隱含存儲類別是()。
A.autoB.staticC.externD.無存儲類別
49.若變量a,b已正確定義,且b已正確賦值,則合法的語句是()。
A.b=double(b);B.++b;C.a=a++5;D.a=double(b);
50.設(shè)有以下說明語句typedefstruct{intn;charch[8];}PER;則下面敘述中正確的是
A.PER是結(jié)構(gòu)體變量名
B.PER是結(jié)構(gòu)體類型名
C.typedefstruct是結(jié)構(gòu)體類型
D.struct是結(jié)構(gòu)體類型名
51.已知i、j、k為iht型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為1、j的值為2、k的值為3,以下選項中正確的輸入語句是______。
A.scanf("%d%d%d",&i,&j,&k);
B.scanf("%d,%d,&d",&i,&i,&k);
C.scanf("%2d%2d%2d",&i,&j,&k);
D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);
52.以下對結(jié)構(gòu)體變量mix中成員x的正確引用是______。struct{intt;intx;}mix,*p;p=&mix;
A.(*p).mix.xB.(*p).xC.p->mix.xD.p.mix.x
53.若有說有:intn=2,*p=&n,*q=p;,則以下非法的賦值語句是
A.P=q;B.*p=*q;C.n=*q;D.p=n;
54.根據(jù)下列的定義,能打印出字母P的語句是()
structstu{charname[10];
intage;
};
stmctstus[10]={"John",11,
"Paul",12,
"Mary",11,
"adam",12
}:
A.printf("%c",s[3].name);
B.printf("%c",s[3].name[1]);
C.printf("%c",s[2].name[11]);
D.printf("%c",s[1].name[0]);
55.有以下程序main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*(x=6.5);printf("%d%d%3.1f%3.1f\n",a,c,f,x);}程序運行后的輸出結(jié)果是
A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5
56.要求通過while循環(huán)不斷讀入字符,當(dāng)讀入字母N時結(jié)束循環(huán),若變量已正確定義,下列正確的程序段是()。
A.while((ch=getchar())!='N')printf("%c",ch);
B.while(ch=getchar()!='N')printf("%c",ch);
C.while(ch=getchar()=='N')printf("%c",ch);
D.while((ch=getchar())=='N')printf("%c",ch);
57.下列敘述錯誤的是()。
A.函數(shù)名是屬于用戶標(biāo)識符,需符合C語言對標(biāo)識符的規(guī)定
B.形參只能是變最
C.為保證程序的正常運行,函數(shù)中定義的變量不能與其他函數(shù)中的變量同名
D.函數(shù)中定義的變量可以與其他函數(shù)中的變量同名
58.結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是______。
A.程序的規(guī)模B.程序的易讀性C.程序的執(zhí)行效率D.程療的可移植性
59.下列有關(guān)數(shù)據(jù)庫的描述,正確的是A.數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程
B.數(shù)據(jù)的物理獨立性是指當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)改變時,數(shù)據(jù)的存儲結(jié)構(gòu)不變
C.關(guān)系中的每一列稱為元組,一個元組就是一個字段
D.如果一個關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個關(guān)系的關(guān)鍵字,則稱其為本關(guān)系的外關(guān)鍵字
60.以下程序(程序左邊的數(shù)字為附加的行號)______。1#include<str.h>2#include<stdio.h>3main()4{chars[]="string";5puts(s);6strcpy(s,"hello");7printf("%3s\n",s);}
A.沒有錯B.第1行有錯C.第6行有錯D.第7行有錯
四、選擇題(20題)61.
62.
63.
64.
65.設(shè)有二元關(guān)系R和三元關(guān)系s,下列運算合法的是()。
A.R∩SB.R∪SC.R-SD.R×S
66.以下敘述中錯誤的是()。
A.C語言編寫的函數(shù)源程序,其文件名后綴可以是C
B.C語言編寫的函數(shù)都可以作為一個獨立的源程序文件
C.C語言編寫的每個函數(shù)都可以進(jìn)行獨立的編譯并執(zhí)行
D.一個C語言程序只能有一個主函數(shù)
67.有以下程序:
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
68.第
15
題
非空的循環(huán)單鏈表head的尾結(jié)點(由p所指向),滿足
A.p->next==NULLB.p==NULLC.p->next=headD.p=head
69.
70.若有定義:doublex;,則表達(dá)式IX=0,x+10,x+十的值是()。
A.11.0B.10.0C.0.0D.1.0
71.下列語句組中,正確的是()。
A.char*s;s=”O(jiān)lympic”;
B.chars[7];s=”O(jiān)lympic”;
C.char*s;s={¨Olympic”};
D.chars[7];s={"Olympic”};
72.若有定義“intb[8],*p=b;”,則p+6表示()。
A.數(shù)組元素b[6]的值B.數(shù)組元素b[6]的地址C.數(shù)組元素b[7]的地址D.數(shù)組元素b[0]的值加上6
73.數(shù)據(jù)庫管理系統(tǒng)中負(fù)責(zé)數(shù)據(jù)模式定義的語言是()。A.數(shù)據(jù)定義語言B.數(shù)據(jù)管理語言C.數(shù)據(jù)操縱語言D.數(shù)據(jù)控制語言
74.(VC++)若有以下定義,則對b數(shù)組元素正確的引用是
intb[2][3]={1,2,3,4,5,6};A.b[1]B.b[0][3]C.b[2][2]D.b[1][1]
75.以下程序的輸出結(jié)果是()。
main()
{char*s="12134211";
intv1=0,v2=0,v3=0,v4=0,k;
for(k=0;s[k];k++)
switch(s[k])
{case’1’:v1++;
case’3’:v3++;
case’2’:v2++;
defaule:v4++;
}
printf("v1=%d,v2=%d,v3=%d,v4=%d\n,v1,v2,v3,v4);
}
A.v1=4,v2=2,v3=1,v4=1
B.v1=4,v2=9,v3=3,v4=1
C.v1=5,v2=8,v3=6,v4=1
D.v1=4,v2=7,v3=5,v4=8
76.有以下程序:
執(zhí)行程序時,給變量x輸入l0,程序運行后的輸出結(jié)果是()。
A.55B.54C.65D.45
77.有以下程序(a123.txt在當(dāng)前盤符下已經(jīng)存在)
#include"stdio.h"
voidmain()
{FILE*fp;
inta[10],*p=a;
fp=fopen("a123.txt","w");
while(strlen(gets(p))>0)
{fputs(a,fp);
fputs("\n",fp);
}
fclose(fp);
}
程序?qū)崿F(xiàn)的功能是
A.從鍵盤輸入若干行字符,按行號倒序?qū)懭胛谋疚募123.txt中
B.從鍵盤輸入若干行字符,取前兩行寫入文本文件a123.txt中
C.從鍵盤輸入若干行字符,第一行寫入文本文件a123.txt中
D.從鍵盤輸入若干行字符,依次寫入文本文件a123.txt中
78.有以下程序:
程序運行后的輸出結(jié)果是()。
A.-2,3,B.-1,-2,C.-2,-3,D.-2,1
79.有下面程序段:
則程序段的輸出結(jié)果是()。
A.18B.19C.20D.21
80.若變量a,b已正確定義,且b已正確賦值,則合法的語句是()。
A.b=double(b);B.(int)a=(int)b;C.a=a++=5;D.a=double(b);
五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun的功能是:求出s所指字符串中最后一次出現(xiàn)的t所指字符串的地址,并通過函數(shù)值返回,在主函數(shù)中輸出從此地址開始的字符串;’若未找到,則函數(shù)值為NULL。例如,當(dāng)字符串中的內(nèi)容為“123dabfl23dx”,t中內(nèi)容為“ab”時,輸出結(jié)果應(yīng)是“l(fā)23dx”。當(dāng)字符串中的內(nèi)容為“l(fā)23dabfl23dx”,t中內(nèi)容為“aim”時,則程序輸出未找到信息“Notfound!”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。例如,若二維數(shù)組中的數(shù)據(jù)為333333334444444455555555則一維數(shù)組中的內(nèi)容應(yīng)該為333333334444444455555555。注意:部分源程序在文件prog1.c中。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:
參考答案
1.B二叉樹的前序序列為ABCD,由于前序遍歷首先訪問根節(jié)點,可以確定該二叉樹的根節(jié)點是A。再由中序序列為BCDA,可知以A為根節(jié)點的該二叉樹只存在左子樹,不存在右子樹,故后序序列為DCBA。本題答案為B選項。
2.A本題由fun函數(shù)可知,執(zhí)行for循環(huán),當(dāng)i=0時,b[0]=a[0][0]-a[0][3]=1-4=-3;當(dāng)i=1時,b[1]=a[1][1]-a[1][2]=6-7=-1;當(dāng)i=2時,b[2]=a[2][2]-a[2][1]=11-10=1;當(dāng)i=3時,b[3]=a[3][3]-a[3][0]=16-13=3。主函數(shù)中輸出y數(shù)組元素的值為:-3,-1,1,3。故本題答案為A選項。
3.DD選項中*f(a,b)表示調(diào)用后返回一個指向整型數(shù)據(jù)的地址指針,即該函數(shù)的返回值為指針類型,所以不能將其賦值給整形變量k。
4.B解析:因為a<b成立,所以條件表達(dá)式a<b?b:a的值等于b的值等于2,因此變量k的值等于2。又因為k=2>c=3不成立,所以條件表達(dá)式k>c?c:k的值等于k的值等于2。把條件表達(dá)式k>c?c:k的值賦給變量k,因而變量k的值等于2。因此,選項B)為正確答案。
5.D
6.D解析:本題考查帶參數(shù)的宏調(diào)用。a/=SQR(k+m)/SQR(k+m)進(jìn)行宏替換后得:a=a/(SQR(k+m)/SQR(k+m))=a/(k+m*k+m/k+m*k+m)=10/(2+1*2+1/2+1*2+1)=10/(2+2+0+2+1)=10/7/1。
7.A解析:根據(jù)共用體的定義可知:共用體r的成員k和成員i[2]是共用同—段內(nèi)存空間,所以,當(dāng)程序給r.i[0]賦值后,實際上,共用體成員k的值也確定了,為2。所以打印輸出的結(jié)果應(yīng)當(dāng)為2。
8.C
9.B
10.C
11.D
12.A程序中的if循環(huán)是固定地執(zhí)行8次,屬于計數(shù)器,程序是從中隨機抽取一個數(shù),然后對5進(jìn)行求余再輸出,共抽取8個數(shù)。所以答案為A。
13.A[解析]本題目中字符變量c1是字符A的ASCII碼加上4.即69所對應(yīng)的字符E。字符變量c2是字符'A'的ASCII碼加上3.即68所對應(yīng)的字符D'。但是打印輸出時,c1以%c的格式輸出,所以是E,c2以%d的格式輸出,所以是68.
14.D多元運算符問號前面表達(dá)式為真,所以(a-A+a)賦值給a,括號里的運算是把大寫字母變成小寫字母,所以答案應(yīng)為選項D。
15.B解析:通過賦值語句“s=x+3”,使指針變量s指向數(shù)組元素x[3],輸出語句中的spl等價于*(s+2),即x[5]值為0。所以,B選項為所選。
16.D輸出時以%d整型格式輸出,所以輸出字符變量c1的值為65,c2-2的值為68-2,即66。故本題答案為D選項。
17.D程序的結(jié)構(gòu)體數(shù)組a的元素形成了一個單向的循環(huán)鏈表,每個元素的指針成員都指向下一個元素的地址。
18.B解析:本題考查二維數(shù)組第一維的大小如何確定。二維數(shù)組第一維的大小由下列規(guī)則確定:①當(dāng)初值的個數(shù)能被第二維的常量表達(dá)式的值除盡時,所得商數(shù)就是第一維的大小:②當(dāng)初值的個數(shù)不能被第二維的常量表達(dá)式的值除盡時,第一維的大小等于所得商數(shù)加1。
19.B此題考查除法運算,根據(jù)先乘除后加減,有括號先算括號的原則,先計算x/y,即l2/8=1,所以z=0.9+1=1.9。但是Z是整型的,轉(zhuǎn)化一下取整除部分,結(jié)果Z=1
20.A
21.rowa[row][colum]row\r\na[row][colum]解析:指針變量作為函數(shù)參數(shù)及二維數(shù)組的一個典型算法——求最大值及其下標(biāo)。通過對題意的分析,在select()函數(shù)中,變量row的作用是用來記錄最大元素的行下標(biāo),colum的作用是用來記錄最大元素的列下標(biāo)。程序中通過一個循環(huán)求得數(shù)組元素中最大值的行列下標(biāo),分別存放在變量row和colum中,根據(jù)題意,應(yīng)該把行下標(biāo)賦值給形參指針變量n指向的變量,把最大值a[row][colum]作為函數(shù)值返回。
22.s[j]=s[i];j++;s[j]=s[i];j++;解析:本題中相當(dāng)于字符串s中存儲著含有空格的字符,當(dāng)發(fā)現(xiàn)空格的時候就用這個空格字符后面的字符前移覆蓋這個空格字符,依次類推向后繼續(xù)。因此,應(yīng)填s[j]=s[i];j++;兩條語句。
23.252137252137解析:本題中先定義了整型變量a、b和c,然后分別給賦值a為25,b為八進(jìn)制的025,c為十六進(jìn)制0x25。然后調(diào)用pruntf()函數(shù)將a、b和c分別用十進(jìn)制輸出,且中間用空格隔開,八進(jìn)制025轉(zhuǎn)換為十進(jìn)制的值為21,十六進(jìn)制的0x25轉(zhuǎn)換為十進(jìn)制的值為37,故最后的輸出結(jié)果為252137。
24.2222解析:在main函數(shù)中,調(diào)用reverse函數(shù)將b數(shù)組中的前8個成員進(jìn)行互置,執(zhí)行完畢后,b數(shù)組中的成員為{8,7,6,5,4,3,2,1,9,10},然后再執(zhí)行for循環(huán)結(jié)構(gòu),將b[6],b[7]…b[9]的值相加,結(jié)果為22。
25.NN解析:函數(shù)說明語句中的類型名必須與函數(shù)返回值的類型一致。本題實現(xiàn)的是在字符“A”的ASCII碼值上加上一個常數(shù),使之變成另一個ASCII碼值,從而輸出字符。
26.3535解析:函數(shù)swap(int*a,int*b)的功能是實現(xiàn)*a和*b中兩個數(shù)據(jù)的交換,在主函數(shù)中調(diào)用swap(p,q)后,形參指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為35。
27.HOWHOW解析:在scanf()函數(shù)中,使用空格作為分隔符,如果輸入含有空格的字符串,則不能使用scanf()函數(shù),所以本題中輸入空格就返回了'\\0',s數(shù)組也就確定了,后面的輸入就不再讀入數(shù)組s中。
28.p->dataqp->data,q解析:本題考查的是鏈表這一數(shù)據(jù)結(jié)構(gòu)對結(jié)構(gòu)體變量中數(shù)據(jù)的引用。鏈表的特點是結(jié)構(gòu)體變量中有兩個域,一個是數(shù)據(jù),另一個是指向該結(jié)構(gòu)體變量類型的指針,用以指明鏈表的下一個結(jié)點。
29.11解析:字符空格的ASCII碼不為0,所以本題中表達(dá)式\ue008!c\ue009的值為0,b=0&&1的結(jié)果顯然為0。
30.5858解析:for循環(huán)語句中continue語句的作用是當(dāng)數(shù)組元素值小于0時,結(jié)束本次j循環(huán),break語句的作用是當(dāng)數(shù)組元素值等于0時,結(jié)束j循環(huán),所以for循環(huán)語句的功能是計算數(shù)組元素a[0][0]、a[0][1]、a[2][1]和a[3][1]之和,即s=1+2+23+32=58。
31.22解析:計算機存儲一個字符用1個字節(jié),存儲字符串時,每個字符用占用1個字節(jié),另在字符串的有效字符之后存儲1個字符串的結(jié)束標(biāo)記符。所以存儲字符串“X”要占用2個字節(jié),存儲字符'x'只要1個字節(jié)。注意:sizeof()函數(shù)和strlen()函數(shù)的作用。
32.strudctSTRUstrudctSTRU解析:結(jié)構(gòu)件類型是構(gòu)造數(shù)據(jù)類型,是用戶自己定義的一種類型。
結(jié)構(gòu)體類型的定義:
struct結(jié)構(gòu)體類型名
{
成員項表;
};
定義結(jié)構(gòu)體變量的的形式為:
struct結(jié)構(gòu)體類型名變量1,變量2,...?
其中變量包括;一般變量、指針變量、數(shù)組變量等。
33.11231123解析:在主函數(shù)中第一次調(diào)用func子函數(shù)時,m=0,i=2,i=i+m+1=3,m=i+a+b=3+5+3=11。因為在子函數(shù)中將m和i定義成了static類型,所以在子函數(shù)中對m和i進(jìn)行的改變在下一次調(diào)用子函數(shù)時能進(jìn)行保存,所以第二次調(diào)用子函數(shù)時,m=11,i=3,則i=i+m+1=15,m=i+a+b=15+5+3=23。
34.模塊模塊解析:矩形表示的是模塊,箭頭表示的是模塊間的調(diào)用關(guān)系。用帶實心圓的箭頭表示傳遞的是控制信息,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。
35.本題要求將一個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++”。\r\n\r\n
36.調(diào)試調(diào)試
37.類類解析:將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同操作性質(zhì)的對象的集合,是已經(jīng)定義了的關(guān)于對象的特征、外觀和行為的模板。所以類是對象的抽象,它描述了屬于該對象類型的所有對象的性質(zhì),而一個對象則是其劃應(yīng)類的一個實例。
38.棧棧解析:考查考生對棧和隊列概念的掌握。按'先進(jìn)后出'原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是棧;按'先進(jìn)先出'原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是隊列。
39.概念概念
40.-24-24解析:本題考查賦值運算符a+=b等價于a=a+b;a-=a*a等價于a-a-a*a=4-4*4=-12:a+=a,即a=a+a=-24。
41.D解析:從外面看只能看到對象的外部特性,而對象的內(nèi)部,即處理能力的實行和內(nèi)部狀態(tài),指的是對象的封裝性。
42.B解析:C語言中宏替換只是字符替換,因此:S(a+b)=PT*a+b*a+b=5.5*1+2*1+2=9.5。
43.D解析:C語言相對其他高級語言來說,放寬了語法檢查,因此程序設(shè)計自由度大,但并不是不檢查語法,C語言的程序是由函數(shù)構(gòu)成的。函數(shù)不能嵌套定義,但是可以嵌套調(diào)用。
44.A解析:題目中要求將q和r所指結(jié)點的先后位置交換,即要求p所指結(jié)點的指針域指向r所指向的結(jié)點,r所指向的結(jié)點的指針域指向q所指向的結(jié)點,q所指向的結(jié)點的指針域指向r所指向的結(jié)點。選項A首先讓r所指向的指針的指針域指向q所指向的結(jié)點,這樣就將r所指向的結(jié)點的指針域指向的結(jié)點丟失了。選項B首先q所指向的結(jié)點的指針域指向r所指向的結(jié)點的指針域所指向的結(jié)點,然后,讓p所指向結(jié)點的指針域指向r所指向的結(jié)點,最后讓r所指向的結(jié)點的指針域指向q所指向的結(jié)點,滿足要求。選項C首先讓p所指向結(jié)點的指針域指向r所指向的結(jié)點,然后讓q所指向的結(jié)點的指針域指向r所指向的結(jié)點的指針域所指向的結(jié)點,最后讓r所指向的結(jié)點的指針域指向q所指向的結(jié)點,滿足要求。選項D首先讓q所指向的結(jié)點的指針域指向r所指向的結(jié)點的指針域所指向的結(jié)點,然后,讓r所指向的結(jié)點的指針域指向q所指向的結(jié)點,最后讓P所指向結(jié)點的指針域指向r所指向的結(jié)點,滿足要求。
45.D解析:本題考查指針變量的賦值。
選項A)中,p1、p2本身都是地址變量,不能再將p1取地址賦給p2:選項B)中,不能將整型數(shù)據(jù)直接賦值給指針型數(shù)據(jù);選項C)中,*p2代表了一個整型變量,而*p2=p1這個語句試圖把一個地址值放入一個整犁變量中是錯誤的;選項D)中指針問的賦值是正確的。
46.D解析:函數(shù)f()的功能是對兩個數(shù)據(jù)互換。在主函數(shù)中指針變量p和q分別指向數(shù)組a[8)的首和尾,在while循環(huán)中實現(xiàn)從首尾開始數(shù)組元素的互換操作。
47.B由于聯(lián)合體是同一存儲區(qū)域由不同類型的變量共享,所以不可以直接對聯(lián)合體變量名進(jìn)行賦值,且聯(lián)合體中的空間在某一時刻只能保持某一成員的數(shù)據(jù);另外合體中可以出現(xiàn)結(jié)構(gòu)類型的成員。
48.A解析:auto變量:無static聲明的局部變量。用auto作存儲類別的聲明時,可以不寫auto,存儲類別隱含確定為auto(自動存儲類別),是動態(tài)存儲方式。大多數(shù)變量是自動變量。用static聲明的局部變量是靜態(tài)局部變量。函數(shù)調(diào)用結(jié)束后靜態(tài)局部變量占據(jù)的內(nèi)存存儲單元空間不釋放,局部變量保留原值,下次調(diào)用時可以繼續(xù)使用該值。用extern聲明外部變量,外部變量即全局變量,可以用extern聲明來改變?nèi)肿兞康淖饔糜?實際上,關(guān)鍵字'auto'可以省略,auto不寫則隱含確定為'自動存儲類別',屬于動態(tài)存儲方式。
49.B解析:要解答此題只要知道兩個知識點:①在C語言中規(guī)定進(jìn)行強制類型轉(zhuǎn)換的格式是:(double)變量名;②在C語言中不允許給表達(dá)式賦值。
50.B解析:本題中,typedef聲明新的類型名PER來代替已有的類型名,PER代表上面指定的一個結(jié)構(gòu)體類型,此時,也可以用PER來定義變量。
51.A解析:scanf函數(shù)中格式控制后面應(yīng)為變量地址列表,因此選項C和選項D都錯誤,選項B中“&d”是指針變量d的地址,與題目不符。由題目可知指針變量d中存放的是變量c的地址,所以正確答案為選項A。
52.B解析:結(jié)構(gòu)體變量中的成員有3種引用方式:①結(jié)構(gòu)體變量名.成員名;②指針變量名->成員名:③(*指針變量名).成員名。
53.D解析:本越考查的知識點是指針的賦值。本題中首先定義了一整型變量n并賦初值為2,接著定義了一個整型指針變量p并讓它指向n,接著又定義了一指向指針的指針變量q,選項A中給指針變量p賦值小故這個賦值語句正確;選項B中*p=*q就是將*q的值賦給指針變量p所指向的變量n,故這個賦值語句不是非法的賦值語句;選項C中是將*q的值賦給變量n,故這個表達(dá)式不是非法的賦值語句:選項D中p為一指針變量應(yīng)該杵一地址賦給它,而在此選項的表達(dá)式中將變量n而不是n的地址賦給它,故這個表達(dá)式不合法。
54.D解析:本題主要考查按結(jié)構(gòu)數(shù)組元素方式引用結(jié)構(gòu)成員。字母P為“Paul”的第一個字母,是結(jié)構(gòu)體s[1]的name成員的第二個元素的值,即s[1].name[0]的值。
55.B解析:主函數(shù)中先定義了一個整型變量a,一個字符變量c并賦初值10,一個浮點型變量f并賦初值100.00和一個double型x,接著執(zhí)行“a=f/=c*=(x=6.5)”,該語句從右向左計算,先把6.5賦值給x(該括號表達(dá)式的值也為6.5),此時x的值的變?yōu)?.5,然后執(zhí)行“c*=(x=6.5)”相當(dāng)于執(zhí)行“c=c*(x=6.5)”,此時c的值為65,接著向左執(zhí)行“f/=c*=(x=6.5)”,語句相當(dāng)于執(zhí)行“f=f/c”接著向最右邊執(zhí)行“a=f,由于a是整型變量,所以a最后取f的整數(shù)部分為1。程序最后輸出的a、c、f和x的值分別為1、65、1.5、6.5。
56.A解析:while循環(huán)的執(zhí)行過程如下:(1)計算while后面圓括號中表達(dá)式的值.當(dāng)值為非0時,執(zhí)行步驟(2);當(dāng)值為0時,執(zhí)行步驟(4)。(2)執(zhí)行循環(huán)體一次。(3)轉(zhuǎn)去執(zhí)行步驟(1)。(4)退出循環(huán)。在選項A)中,表達(dá)式(ch=getchar())!='N'表示輸入的字符不等于N,如果這個條件表達(dá)式成立,則執(zhí)行循環(huán)體,打印輸出輸入的字符。如果這個條件表達(dá)式不成立,即輸入的字符等于N,則退出循環(huán).所以選項A)為正確答案。
57.C解析:本題考查函數(shù)調(diào)用時參數(shù)的作用域。在函數(shù)調(diào)用時,函數(shù)體內(nèi)定義的變量的作用域連函數(shù)體內(nèi),因而在不同函數(shù)體內(nèi)定義的變量可以相同,不影響各個變量的使用。
58.B解析:結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是結(jié)構(gòu)化程序清晰易讀,可理解性好,程序員能夠進(jìn)行逐步求精、程序證明測試,以保證程序的正確性。
59.D數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過程,故選項A敘述錯誤。數(shù)據(jù)的物理獨立性是指數(shù)據(jù)的物理結(jié)構(gòu)的改變,不會影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),故選項B敘述錯誤。關(guān)系中的行稱為元組,對應(yīng)存儲文件中的記錄,關(guān)系中的列稱為屬性,對應(yīng)存儲文件中的字段,故選項C敘述錯誤。所以本題選D。
60.B解析:字符串復(fù)制函數(shù)strcpy包含在頭文件string.h中,因此,程序中的第1行文件包含命令是錯誤的。
61.C
62.D
63.B
64.D
65.D本題給出的兩個關(guān)系R與S的表結(jié)構(gòu)是不同的(R是二元關(guān)系,S是三元關(guān)系),它們不能進(jìn)行∩、∪、一運算。而兩個不同結(jié)構(gòu)的關(guān)系是可以進(jìn)行笛卡兒積(×)運算的。
66.C函數(shù)是指預(yù)先定義功能塊,其目的是提高程序的重用性。在C語言中函數(shù)的源程序,后綴名可以為C。C語言所編寫的函數(shù)都可以是一個獨立的源文件。一個C語言程序只能有一個主函數(shù)。C語言中編寫的函數(shù)不是每個都可以獨立地編譯和執(zhí)行的,因為C語言中程序的開始為主函數(shù),如果程序中沒有主函數(shù)則無法進(jìn)行編譯和執(zhí)行。
67.D循環(huán)的條件是i<7并且p[i]是奇數(shù),當(dāng)i=0時,i<7,p[i]=11,滿足條件,所以k=0+11=11,然后i++,i++,所以i=2,p[2]=14,為偶數(shù),退出循環(huán),這時k還是11.
68.C循環(huán)鏈表是另一種形式的鏈?zhǔn)酱鎯Y(jié)構(gòu)。表中最后一個結(jié)點的指針域指向頭結(jié)點,整個鏈表形成一個環(huán)。這種循環(huán)鏈表的好處是從任意結(jié)點開始都可以找到其他結(jié)點。
循環(huán)鏈表的操作和線性鏈表基本一致,差別僅在于鏈表最后的結(jié)點,線性鏈表的判斷條件是結(jié)點的指針域是否為“空”,而循環(huán)鏈表的判斷條件是結(jié)點的指針域是否指向頭結(jié)點。非空的循環(huán)單鏈表head的尾結(jié)點p滿足p->next=head。
69.D
70.Cc語言中,逗號運算符可以把兩個以上(包含兩個)的表達(dá)式連接成一個表達(dá)式。逗號運算符的優(yōu)先級是所有運算符中級別最低的,逗號運算符保證左邊的子表達(dá)式運笑結(jié)束后才進(jìn)行右邊的子表達(dá)式的運算。也麓是遼,逗號運算符是一個序列點,其左邊所有副作用都結(jié)束后,才對其右邊的子表達(dá)式進(jìn)行運算,并以最右邊表達(dá)式值作為整個逗號表達(dá)式的值。后置自增運算:k++表示先運算,后自■:曹置自增運算:++k表示先自加,后運算。因此,表達(dá)式l;O,I+10。x++的計算過程為首先賦值x=0,然后將x加l0,包是并不對x進(jìn)行賦值,最后計算x++,并,根據(jù)后置自增運算的計算結(jié)果,即為x=0.0。故答案為C選項。
71.A字符型指針變量可以用選項A的賦值方法:char$s;s=”O(jiān)lympic”,選項C的寫法:char$s。s={¨Olympic”};是錯誤的。字符數(shù)組可以在定義的時候初始化:chars[]={¨Olympic”};?或者chars[]=”O(jiān)lympic”,都是正確的。但是不可以在定義字符數(shù)組后,對數(shù)組名賦值。(數(shù)組名是常量,代表數(shù)組首地址)所以選項8和選項D都是錯誤的。對于本例,選項B、D中字符數(shù)組s的大小至少為8,才能存放下字符串。(字符串的末尾都有結(jié)束標(biāo)識‘、0’)。
72.B指針中存放的是變量的地址,指針也可以進(jìn)行增減運算,這時指針移動的最小單位是一個存儲單元,而不是一個字節(jié)。所以題中“P+6”指的是將指針向后移動了6個存儲單元,即指向uE63,存放的是b[6]的地址。
73.AA。數(shù)據(jù)定義語言(DDL)是集中負(fù)責(zé)數(shù)據(jù)庫模式定義與數(shù)據(jù)庫對象定義的語言。數(shù)據(jù)操縱語言(DML)是指用來查詢、添加、修改和刪除數(shù)據(jù)庫中數(shù)的語句。數(shù)據(jù)控制語言(DCL)是用來設(shè)置或者更改數(shù)據(jù)為用戶或角色權(quán)限的語句。據(jù)此,本題正確答案為選項A。
74.D這是二維數(shù)組,所以A錯\r\n數(shù)組是從0開始,所以第一個不能有2,第二個不能有3.所以B,C錯。
75.Dk=0,s[k]=1,v1++,v2++,v3++,v4++;k=1,s[k]=2,v2++,v4++;k=3,s[k]=1,……,直到k=8,s[k]=0.退出循環(huán)
76.A該程序考察的是函數(shù)的遞歸調(diào)用,在調(diào)用一個函數(shù)的過程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。執(zhí)行結(jié)果為l+2+3+…+8+9+10=55。因此A選項正確。
77.D本題考查文件的讀寫操作。程序中使用fopen函數(shù)打開文本文檔a123,打開方式為只寫。初始定義了一個整型數(shù)組,長度為10。while循環(huán)的判斷語句是判斷是否有輸入字符存在。strlen函數(shù)是計算輸入字符串的長度。fputs函數(shù)是向指定的文件輸出一個字符串。題目給出的程序就是只要從鍵盤上輸入字符,就將該字符向指定的文件輸出。
78.Afun()函數(shù)使用了靜態(tài)變量,靜態(tài)變量只在聲明時初始化一次。首先實參的數(shù)值是一12,if判斷后輸出負(fù)號,并將n=12,計算k+=n%10一k+=2—2,因此輸出2,后將數(shù)值除以10,結(jié)果為1,遞歸調(diào)用fun()函數(shù),第二次調(diào)用fun(),此時n=1,k=2,計算k+=n%10-÷k+=1——*3,因此打印3。故最后打印結(jié)果為一2,3,。故答案為A選項。
79.B字符串連接函數(shù)strcat的調(diào)用形式如下:strcat(sl,s2)。此函數(shù)將s2所指字符串的內(nèi)容連接到sl所指的字符串后面,并自動覆蓋sl串末尾的尾標(biāo),函數(shù)返回sl的地址值。本題中首先將二維數(shù)組中各行的字符串都復(fù)制到了指針P所指向的一維數(shù)組k的地址空間,然后用strlen函數(shù)求得k數(shù)組的長度i,即l9。
80.B在C語名中規(guī)定進(jìn)行強制類型轉(zhuǎn)換的格式是:(類型名)變量名;并且給表達(dá)式賦值。
81.
82.1voidfun(int(*s)[10],intint*n,intmm,intnn)2{3inti,j,k=0;4for(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次存放到一維數(shù)組b中*/5for(j=0;j<nn;j++)6b[k++]=s[i][j];7*n=k;/*通過指針返回元素個數(shù)*/8}本題可以用兩個循環(huán)來處理。由于是按行的順序取出,因此第1個for循環(huán)用于控制行下標(biāo),第2個循環(huán)用于控制列下標(biāo)。若改成按列的順序取出,則循環(huán)應(yīng)改成:for(i=0;i<mm;jp)b[k++]=s[j][i];要注意s[j][i]的下標(biāo),不能用s[i][j]。若按行取出則列下標(biāo)變化較快,若按列取出則行下標(biāo)變化較快,即循環(huán)嵌套時,越在內(nèi)層的循環(huán),其循環(huán)變量變化就越快。<mm;jp)2021年湖北省襄樊市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.設(shè)二叉樹的中序序列為BCDA,前序序列為ABCD,則后序序列為()。
A.CBDAB.DCBAC.BCDAD.ACDB
2.有以下程序:#include<stdio.h>#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-i];}main(){intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;fun(x,y);for(i=0;i<N;i++)printf(“%d”,y[i]);printf(“\n”);}程序的運行結(jié)果是()。
A.-3,-1,1,3,B.-12,-3,0,0,C.0,1,2,3,D.-3,-3,-3,-3,
3.則以下函數(shù)調(diào)用語句錯誤的是()。#include<stdio.h>intadd(inta,intb){return(a+b)}main(){intk,(*f)(),a=5,b=10;f=add;...}A.k=f(a,b);B.k=add(a,b);C.k=(*f(a,b);D.k=*f(a,b);
4.有下列程序段:
intk=0,a=1,b=2,c=3;
k=a<b?b:a;k=k>C?C:k;
執(zhí)行該程序段后,k的值是()。
A.3B.2C.1D.0
5.設(shè)有以下宏定義:#defineN3#defineY(n)((N+1)*n)則執(zhí)行以下語句后,z的值為______。z=2*(N+Y(5+1));A.出錯B.42C.48D.54
6.以下程序的輸出結(jié)果是______。#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}
A.16B.2C.9D.1
7.以下程序的輸出結(jié)果是()main(){union{chari[2];intk;}r;r.i[0]=2,r.i[1]=0;printf("%d\n",r,k);}
A.2B.1C.0D.不確定
8.第
3
題
已知:intc[3][4];則對數(shù)組元素引用正確的是
A.c[1][4]B.c[1.5][0]C.c[1+0][0]D.以上表達(dá)都錯誤
9.以下符號中不能作為標(biāo)識符的是()。A.256B.voidC.vanfD.4Struct
10.使用深度優(yōu)先算法遍歷下圖,遍歷的順序為()A.ABCDEFGB.ABDCFEGC.ABDECFGD.ABCDFEG
11.數(shù)據(jù)的不可分割的基本單位是()。
A.元素B.結(jié)點C.數(shù)據(jù)類型D.數(shù)據(jù)項
12.有以下程序段: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)生的隨機數(shù)n為4時結(jié)束循環(huán)操作
C.當(dāng)產(chǎn)生的隨機數(shù)n為1和2時不做任何操作
D.當(dāng)產(chǎn)生的隨機數(shù)n為0時結(jié)束程序運行
13.有以下程序:#includeMain(){charc1.c2;.c1='A'+'8'-'4';c2='A'+'8'-'5';.printf("%c,%d\n",,c1.c2);}已知字母A的ASCI碼為65.程序運行后的輸出結(jié)果是()。A.E.68B.D.69C.E,DD.輸出無定值
14.有以下程序:#include<stdio.h>main(){chara=H;a=(a>=Aa<=2)?(a-A+a):a;printf("%c\n",a);}程序運行后的輸出結(jié)果是()。A.AB.aC.HD.h
15.有以下程序: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
16.已知字符A的ASCII值是65,字符變量c1的值是‘A’,c2的值是‘D’,則執(zhí)行語句“printf(“%d,%d”,c1,c2-2);”的輸出結(jié)果是()。
A.65,68B.A,68C.A,BD.65,66
17.有以下程序#include<stdio.h>structtt(intx;structtt*y;)*P;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main{inti;p=a;for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}}程序的運行結(jié)果是()。A.20,30,B.30,17,C.15,30,D.20,15,
18.若有說明inta[][3]={1,2,3,4,5,6,7,8,9},則a數(shù)組第一維的大小是()。
A.2B.3C.4D.無確定值
19.若有定義語句:“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。A.1.9B.1C.2D.2.4
20.
二、2.填空題(20題)21.以下程序中,select函數(shù)的功能是:在N行M列的二維數(shù)組中,選出一個最大值作為函數(shù)值返回,并通過形參傳回此最大值所在的行下標(biāo)。請?zhí)羁铡?/p>
#defineN3
#defineM3
select(inta[N][M],int*n)
{inti,j,row=1,colum=1;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n=【】;
return(【】);
}
main()
{inta[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,&n);
printf(“max=%d,line=%d\n”,max,n);
}
22.以下程序用以刪除字符串中所有的空格,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{chars[100]={"OurteacherteachClanguage!"};inti,j;
for(i=j=0;s[i]!='\0';i++)
if(s[i]!=''){()}
s[j]='\0';
printf("%s\n",s);
}
23.以下程序運行后的輸出結(jié)果是______。
main()
{
inta,b,c;
a=25;
b=025;
c=0x25;
printf("%d%d%d\n",a,b,C);
}
24.以下程序的輸出結(jié)果是【】。
voidreverse(inta[],intn)
{inti,t;
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf("%d\n",s);
}
25.閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是【】。
#include"stdio.h"
main()
{charfun(char,int);
chara='A';
intb=13;
a=fun(a,b);
putchar(a);}
charfun(chara,intb)
{chark;
k=a+b;
returnk;}
26.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\N,*p,*q))
}
27.下列程序運行后的輸出的結(jié)果是______。
#include<stdio.h>
main()
{chars[20];
scanf("%s",s);
printf("%s",s);
}
運行程序,輸入HOWAREYOU。
28.以下程序的功能是建立一個帶有頭結(jié)點的單向鏈表,鏈表結(jié)點中的數(shù)據(jù)通過鍵盤輸入,當(dāng)輸入數(shù)據(jù)為-1時,表示輸入結(jié)束(鏈表頭結(jié)點的data域不放數(shù)據(jù),表空的條件是ph->next==NULL),請?zhí)羁铡?/p>
#include<stdio.h>
structlist{intdata;structlist*next;};
structlist*creatlist()
{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));
p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");
scanf("%d",&a);
while(a!=-1)
{p=(structlist*)malloc(sizeof(structlist));
【】=a;q->next=p;【】=p;scanf("%d",&a);}
p->next=′\0;return(ph);}
main()
{structlist*head;head=creatlist();}
29.已有定義:charc=′′;inta=1,b;(此處c的初值為空格字符),執(zhí)行b=!c&&a;后b的值為【】。
30.若有以下程序:
main()
{inta[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};
inti,j,s=0;
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
{if(a[i][j]<0)
continue;
if(a[i][j]==0)
break;
s+=a[i][j];
}
}
printf("%d\n",s);
}
執(zhí)行后的輸出結(jié)果是【】。
31.在內(nèi)存中,存儲字符'x'要占用1個字節(jié),存儲字符串"x"要占用【】個字節(jié)。
32.若有如下結(jié)構(gòu)體說明:
structSTRU
{inta,b;charc:doubled;
structSTRU*p1,*p2;
};
請?zhí)羁?,以完成對t數(shù)組的定義,t數(shù)組的每個元素為該結(jié)構(gòu)體類型。
【】t[20]
33.下列程序的運行結(jié)果是______。
#include<stdio.h>
func(a,b)
{staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
main()
{intk=5,m=3,p;
p=func(k,m);
printf("%d",p);
p=func(k,m);
printf("%d、n",p);
}
34.常用的軟件結(jié)構(gòu)設(shè)計工具是結(jié)構(gòu)圖(SC),也稱程序結(jié)構(gòu)圖。其中,用矩形表示______,用帶空心圓的箭頭表示傳遞的是數(shù)據(jù)。
35.有以下程序段,且變量已正確定義和賦值
for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));
printf("s=%f\n\n",s);
請?zhí)羁眨瓜旅娉绦蚨蔚墓δ芘c之完全相同
S=1.0;k=1;
while([8]){s=s+1.0/(k*(k+1));[9];}
printf("s=%f\n\n",s);
36.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。
37.在面向?qū)ο蠓椒ㄖ校?)是具有相似性質(zhì)的對象的集合。
38.按"先進(jìn)后出"原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是【】。
39.數(shù)據(jù)模型按不同的應(yīng)用層次分為三種類型,它們是______數(shù)據(jù)模型、邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型。
40.若a是血型變量,且a的初值為4,則計算a+=a-=a*a表達(dá)式后a的值為______。
三、1.選擇題(20題)41.在面向?qū)ο笤O(shè)計中,對象有很多基本特點,其中“從外面看只能看到對象的外部特性,而對象的內(nèi)部對外是不可見的”這一性質(zhì)指的是對象的
A.分類性B.標(biāo)識惟一性C.多態(tài)性D.封裝性
42.以下程序運行后,輸出結(jié)果是______。#include<stdio.h>#definePT5.5#difineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1f/n",S(a+b));}
A.49.5B.9.5C.22D.45
43.下列敘述中正確的是()。
A.C語言編譯時不檢查語法B.C語言的子程序有過程和函數(shù)兩種C.C語言的函數(shù)可以嵌套定義D.C語言的函數(shù)可以嵌套調(diào)用
44.有以下結(jié)構(gòu)體說明和變量定義,如圖所示,指針p、q、r分別指向一個鏈表中的三個連續(xù)結(jié)點。structnode{intdata;tractnode*next;}*p,*q,*r;
現(xiàn)要將q和r所指結(jié)點的先后位置交換,同時要保持鏈表的連續(xù),以下錯誤的程序段是
A.r->next=q;q->next=r->next;p->next=r;
B.q->next=r->next;p-next=r;r->next=q;
C.p->next=r;q->next=r->next;r->next=q;
D.q->next=r->next;r->next=q;P->next=r;
45.若有說明:int*p1,*p2,n=8,m;下列均是正確賦值語句的選項是()。
A.p1=&n;p2=&p1;
B.p1=n;
C.p1=&n;*p2=p1;
D.p1=&n;p2=p1;
46.下列程序的輸出結(jié)果是()。voidf(int*x,int*y){intt;t=*x,*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i+)printf("%d,",a[i]);}
A.8,2,3,4,5,6,7,1
B.5,6,7,8,1,2,3,4
C.1,2,3,4,5,6,7,8
D.8,7,6,5,4,3,2,1
47.以下對聯(lián)合類型敘述正確的是()。
A.可以對聯(lián)合變量名直接賦值
B.使用聯(lián)合變量的目的是為了節(jié)省內(nèi)存
C.任何一個聯(lián)合變量可以同時引用聯(lián)合中的不同成員
D.聯(lián)合類型定義中不能同時出現(xiàn)結(jié)構(gòu)類型的成員
48.在c語言中,變量的隱含存儲類別是()。
A.autoB.staticC.externD.無存儲類別
49.若變量a,b已正確定義,且b已正確賦值,則合法的語句是()。
A.b=double(b);B.++b;C.a=a++5;D.a=double(b);
50.設(shè)有以下說明語句typedefstruct{intn;charch[8];}PER;則下面敘述中正確的是
A.PER是結(jié)構(gòu)體變量名
B.PER是結(jié)構(gòu)體類型名
C.typedefstruct是結(jié)構(gòu)體類型
D.struct是結(jié)構(gòu)體類型名
51.已知i、j、k為iht型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為1、j的值為2、k的值為3,以下選項中正確的輸入語句是______。
A
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 礦床課程設(shè)計報告
- 托班戶外勞動課程設(shè)計
- 電路基礎(chǔ)設(shè)計課程設(shè)計
- 悉尼歌劇院ps課程設(shè)計
- 桃酥工藝學(xué)課程設(shè)計
- 電路方向的課程設(shè)計
- 拉坯筆筒教程課程設(shè)計
- 智障兒童訓(xùn)練課程設(shè)計
- 消防車的課程設(shè)計意圖
- 氨填料吸收塔課程設(shè)計
- 短視頻的拍攝與剪輯
- 第4課 (3)“探界者”鐘揚(教師版)
- 項目質(zhì)量管理組織機構(gòu)圖
- 電子尺工作原理
- 產(chǎn)品不良品(PPM)統(tǒng)計表格模板
- 律師執(zhí)業(yè)證(英語模版)
- 土木工程施工-施工組織課程設(shè)計
- 2023年下半年網(wǎng)絡(luò)規(guī)劃師考試真題及答案-上午卷
- 新課標(biāo)八年級地理雙向細(xì)目表
- 《中國陶瓷鑒賞與器物陳設(shè)》復(fù)習(xí)考試題庫(帶答案)
- 五金標(biāo)準(zhǔn)件手冊
評論
0/150
提交評論