版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2021-2022年湖南省永州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.設(shè)有序表中的元素為(13,18,24,35,47,50,62),則在其中利用二分法查找值為24的元素需要經(jīng)過()次比較容易
A.1B.2C.3D.4
2.設(shè)有定義:intn=0,*p=&n,**q=&p;則下列選項(xiàng)中正確的賦值語句是()。
A.p=1;B.*q=2;C.q=p;D.*p=5;
3.有以下程序:#include<stdio.h>int*f(int*s){s[1]+=6;*s=7;s+=2;returns;}main(){inta[5]={1,2,3,4,5},*p=a;P=f(P);printf(“%d,%d,%d\n”,a[0],a[1],*p);}程序運(yùn)行后的輸出結(jié)果是()。
A.9,8,9B.7,8,7C.7,8,3D.1,2,1
4.
5.在下面的二維數(shù)組定義中,正確的是()。
A.inta[5][];
B.inta[][5];
C.inta[][3]={{1,3,5},{2}};
D.inta[](10);
6.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}
A.20B.31C.321D.210
7.以下程序的輸出結(jié)果是()。voidprt(int*m.intn){inti;for(i=0;i<n;i++)m[i]++;)main{inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf(“%d,”,a[i]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1
8.設(shè)散列表長m=14,散列函數(shù)H(K)=K%11,已知表中已有4個(gè)結(jié)點(diǎn):r(15)=4;r(38)=5;r(61)=6;r(84)=7,其他地址為空,如用二次探測再散列處理沖突,關(guān)鍵字為49的結(jié)點(diǎn)地址是_____。
A.8B.3C.5D.9
9.printf函數(shù)中用到格式符%5s,其中數(shù)字5表示輸出的字符串占用5列。如果字符串長度大于5,則輸出按方式()。
A.從左起輸出該字串,右補(bǔ)空格B.按原字符長從左向右全部輸出C.右對齊輸出該字串,左補(bǔ)空格D.輸出錯(cuò)誤信息
10.下列程序的輸出結(jié)果是()。
#include<stdio.h>
intb=2;
intfunc(int*A)
{b+=*a;retumb;}
main()
{inta=1,t=2;
t+=func(&A);
printf("%d\n",t);
}
A.4B.5C.6D.8
11.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}執(zhí)行程序時(shí),給變量X輸入10,程序的輸出結(jié)果是()。A.55B.54C.65D.45
12.若i、j已定義成mt型,則下列程序段中內(nèi)循環(huán)體的總執(zhí)行次數(shù)是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30
13.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當(dāng)運(yùn)行時(shí)輸入:a<回車>后,以下敘述正確的是()。
A.變量c1被賦予字符a,c2被賦予回車符
B.程序?qū)⒌却脩糨斎氲?個(gè)字符
C.變量c1被賦予字符a,c2中仍是原有字符2
D.變量c1被賦予字符a,c2中將無確定值
14.若定義下列結(jié)構(gòu)體,結(jié)構(gòu)體變量p的出生年份賦值正確的語句是()。structst{intx;inty;intz;}structworker{charname[20];charsex;structstbirth;}p;
A.x=1987B.birth.x=1987;C.p.birth.x=1987;D.p.x=1987;
15.以下程序的輸出結(jié)果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}
A.abe+ABC=DEFdef
B.abc+abe=defdef
C.abcaABCDEFdef
D.abcabcdefdef
16.計(jì)算機(jī)高級語言程序的運(yùn)行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的事()。
A.C語言程序僅可以編譯執(zhí)行B.C語言程序僅可以解釋執(zhí)行C.C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D.以上說法都不對
17.有以下程序:#include<stdio.h>main(){chara=H;a=(a>=Aa<=2)?(a-A+a):a;printf("%c\n",a);}程序運(yùn)行后的輸出結(jié)果是()。A.AB.aC.HD.h
18.若有定義語句“char*s1=“OK”,*s2=“ok”;”,以下選項(xiàng)中,能夠輸出“OK”的語句是()。
A.if(strcmp(s1,s2)!=0)puts(s2);
B.if(strcmp(s1,s2)!=0)puts(s1);
C.if(strcmp(s1,s2)==1)puts(s1);
D.if(strcmp(s1,s2)==0)puts(s1);
19.有以下程序
main()
{
intn[3],i,j;
for(i=0;i<3;i++)
n[i]=0;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
n[j]=n[i]+1;
printf("%d\n",n[1]);
}
程序運(yùn)行后的輸出結(jié)果是A.A.2
B.1
C.0
D.3
20.若有說明語句:charc='\72'則變量c()。
A.包含1個(gè)字符B.包含2個(gè)字符C.包含3個(gè)字符D.說明不合法,c的值不確定
二、2.填空題(20題)21.下列程序的輸出結(jié)果是______。
main()
{inta=2,b=4,e=6;
int*p1=&a,*p2=&b,*p;
*(p=&c)=*p1*(*p2);
printf("%d\n",c);
}
22.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。
23.結(jié)構(gòu)化分析方法是面向______進(jìn)行分析的方法。
24.若有如下程序:
main()
{intx=4;y=3,Z=2,t;
t=x<y<z;
printf("%d\n",t);
}
則程序運(yùn)行后的輸出結(jié)果是【】。
25.若有以下定義,則不移動(dòng)指針p,且通過指針p引用值為98的數(shù)組元素的表達(dá)式是______。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
26.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為【】。
27.以下和程序中,主函數(shù)調(diào)用了lineMax函數(shù),實(shí)現(xiàn)在N行M列的二維數(shù)組中,找出每一行上的最大值,請?zhí)羁铡?/p>
#defineN3
#defineM4
voidlineMax(intx[N][M])
{inti,j,p;
for(i=0;i<N;i++)
{p=0;
for(j=1;j<M;j++)
if(x[i][p]<x[i][j]【】;
printf("Themaxvalueinlineis%d\n",【】);
}
{
main()
{intx[N][M]={1,5,4,2,6,4,3,8,2,3,1};
【】;
}
28.一個(gè)項(xiàng)目具有一個(gè)項(xiàng)目主管,一個(gè)項(xiàng)目主管可管理多個(gè)項(xiàng)目,則實(shí)體“項(xiàng)目主管”與實(shí)體“項(xiàng)目”的聯(lián)系屬于______的聯(lián)系。
29.已知字符A的ASCII代碼值為65,以下程序運(yùn)行時(shí)若從鍵盤輸入:B33<回車>。則輸出結(jié)果是______。
#include<stdio,h>
main()
{
chara,b;
a=geCchar();scanf("%d“,&b);
a=a-'A'+‘0';b=b*2;
printf('%c%c\n",a,b);
}
30.軟件的需求分析階段的工作,可以概括為四個(gè)方面:【】、需求分析、編寫需求規(guī)格說明書和需求評審。
31.面向?qū)ο蟮哪P椭?,最基本的概念是對象和______。
32.設(shè)inta=5,b=6,表達(dá)式(++a==b--)?++a:--b的值是【】。
33.軟件測試中路徑覆蓋測試是整個(gè)測試的基礎(chǔ),它是對軟件【】進(jìn)行測試。
34.以下程序運(yùn)行后的輸出結(jié)果是【】。
#include<stdio.h>
msin()
{inti,n[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{n[i]=n[i-1]*2+1;
printf("%d",n[i]);
}
}
35.若有定義doublea[5];,則a數(shù)組元素下標(biāo)的上限為______。
36.若a是int型變量,則下列表達(dá)式的值為______。
(a=2*3,a*2),a+4
37.下面程序執(zhí)行后輸出的結(jié)果是【】。
intm=13;
intfun(intx,inty)
{intm=3;
return(x*y-m);
}
main()
{inta=7,b=5;
printf("%d\n",fun(a,b)/m);
}
38.以下程序的輸出結(jié)果是【】。
main()
{char*p[]={"BOOL","OPK","H","SP"};
inti;
for(i=3;i>0;i--,i--)printf("%c",*p[i]);
printf("\n");}
39.若變量n中的值為24,則函數(shù)共輸出【】行,最后一行有【】個(gè)數(shù)。
voidprint(intn,intaa)
{inti;
for(i=1;i<=n;i++)
{printf("%6d,aa[i]);
if(!(i%5))printf("\n");
}
printf("\n");
}
40.以下函數(shù)把b字符串連到a字符串的后面,并返回a中新字符串的長度,請?zhí)羁铡?/p>
strcen(chara[],charb[])
{
intnum=0,n=0;
while(*(a+num)!=【】)num++;
while(b[n]){*(a+num)=b[n];num++;【】;}
returnnum;
}
三、1.選擇題(20題)41.設(shè)有intx=11;則表達(dá)式(x++*1/3)的值是()。
A.3B.4C.11D.12
42.對建立良好的程序設(shè)計(jì)風(fēng)格,下面描述正確的是()
A.程序應(yīng)簡單、清晰、可讀性好B.符號名的命名只要符合語法C.充分考慮程序的執(zhí)行效率D.程序的注釋可有可無
43.有以下程序:main(){intx=3,y=2,z=1;printf("%d\n",x/y&~z);}程序運(yùn)行后的輸出結(jié)果是()。
A.3B.2C.1D.0
44.關(guān)系表中的每一橫行稱為—個(gè)______。
A.元組B.字段C.屬性D.碼
45.下列關(guān)系運(yùn)算中,能使經(jīng)運(yùn)算后得到的新關(guān)系中元組個(gè)數(shù)少于原來關(guān)系中元組個(gè)數(shù)的是()。
A.選擇B.投影C.連接D.并
46.若要求從鍵盤讀入含有窄格字符的字符串,應(yīng)使用函數(shù)()。
A.getc()B.gets()C.getchar()D.scanf()
47.以下敘述中錯(cuò)誤的是()。
A.C程序中的#include和#define行均不是C語句
B.除逗號運(yùn)算符外,賦值運(yùn)算符的優(yōu)先級最低
C.C程序中,j++;是賦值語句
D.C程序中,+、-、*、/、%是算術(shù)運(yùn)算符,可用于整型和實(shí)型數(shù)的運(yùn)算
48.設(shè)有下列說明語句:StrcutStr{intx;floaty;charz;}st;則下列的敘述中不正確的是()。
A.struct是結(jié)構(gòu)體類型的關(guān)鍵字
B.st是結(jié)構(gòu)體類型名
C.x、y、z都是結(jié)構(gòu)體成員名
D.structstr是結(jié)構(gòu)體類型名
49.若有下面的說明和定義,則sizeof(structaA)的值是()struetaa{intr1;doubler2floatr3;unionuu{charu1[5];longu2[2];}ua;}mya;
A.30B.29C.24D.22
50.下列屬于C語言語句的是______。
A.printf("%d\n",a)
B.#include<stdio.h>
C.a=b;b=c;c=a;
D./*thisisaprogram*/
51.以下程序的輸出結(jié)果是_______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;print("%d%d%d,a[2],a[5],a[8]);}
A.258B.741C.852D.369
52.以下程序的輸出結(jié)果是#include<stdio.h>#include<string,h>main(){charb1[8]="abcdefg",b2[8],*pb=b1+3;while(--pb>=b1)strcpy(b2,pB);printf("%d\n",strlen(b2));}
A.8B.3C.1D.7
53.下面程序段的運(yùn)行結(jié)果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;pfintf("%d\n",*(p+3));}
A.67B.0C.字符'C'的地址D.字符'C'
54.有以下程序
intf(intn)
{if(n==1)return1;
elsereturnf(n-1)+1;}
main()
{inti,j=0;
for(i=1;i<3;i++)j+=f(i);
printf("%d\n",j);}
程序運(yùn)行后的輸出結(jié)果是
A.4B.3C.2D.1
55.棧和隊(duì)列的共同點(diǎn)是()。
A.都是先進(jìn)后出B.都是先進(jìn)先出C.只允許在端點(diǎn)處插入和刪除元素D.沒有共同點(diǎn)
56.設(shè)有下列二叉樹:
對此二叉樹中序遍歷的結(jié)果是
A.ABCDEFB.DABECFC.BDAECFD.DBEFCA
57.下列說法正確的是()
A.在執(zhí)行C程序時(shí)不是從main函數(shù)開始的
B.C程序書寫格式嚴(yán)格限制,一行內(nèi)必須寫一個(gè)語句
C.C程序書寫格式自由,一個(gè)語句可以分寫在多行上
D.C程序書寫格式嚴(yán)格限制,一行內(nèi)必須寫一個(gè)語句,并要有行號
58.以下程序的輸出結(jié)果是()。#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&C);prt(&a,&b,&C);}
A.11,42,3112,22,41
B.11,41,201,42,20
C.11,21,4011,21,21
D.11,41,2112,42,22
59.以下數(shù)組定義中不正確的是_______。
A.inta[2][3];
B.intb[][3]={0,1,2};
C.intc[100][100={0};
D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
60.下面結(jié)構(gòu)體的定義語句中,不正確的是______。
A.structdate{intmonth;intday;intyear;}Structdatedatel;
B.stmctdate{intmonth;intday;intyear;}datel;
C.struct{intmonth;intday;intyear;}date1;
D.#defineDATEstmctdateDATE{intmonth;intday;intyear;}datel;
四、選擇題(20題)61.
62.算法的空間復(fù)雜度是指()。
A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲(chǔ)空間D.算法執(zhí)行過程中所需要的存儲(chǔ)空間
63.C語言中,合法的字符串常量是()。
A."M"B.\tC.100D.MUST
64.
65.
66.
67.表達(dá)式“~0x11”的值是()。
A.0xFFEEB.0x71C.0x0071D.0xFFF1
68.以下選項(xiàng)中,能用作數(shù)據(jù)常量的是()。
A.115LB.0118C.1.5el.5D.0115
69.層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫劃分原則是()。
A.記錄長度B.文件的大小C.聯(lián)系的復(fù)雜程度D.數(shù)據(jù)之間的聯(lián)系方式
70.(37)下面不屬于軟件設(shè)計(jì)原則的是()
A.抽象
B.模塊化
C.自底向上
D.信息隱蔽
71.已定義:inta=25,b=14,c=19;,以下三目運(yùn)算符(?:)所構(gòu)成語句的執(zhí)行后
a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);程序輸出的結(jié)果是
A.***a=25,b=13,c=19B.***a=26,b=14,c=19C.###a=25,b=13,c=19D.###a=26,b=14,c=19
72.
73.讀取二進(jìn)制文件的函數(shù)調(diào)用形式為:fread(buffersize,count,fp);,其中buffer代表的是()。
A.一個(gè)文件指針,指向待讀取的文件
B.一個(gè)整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)
C.一個(gè)內(nèi)存塊的首地址,代表讀人數(shù)據(jù)存放的地址
D.一個(gè)內(nèi)存塊的字節(jié)數(shù)
74.若有定義語句:
char}sl=‘’0K”,:Its2=”ok”;
以下選項(xiàng)中,能夠輸出“OK”的語句是()。
A.if(strcmp(sl,s2)!=0)puts(s2);
B.if(strcmp(sl,s2)!=0)puts(s1);
C.if(strcmp(sl,s2)==1)puts(s1);
D.if(strcmp(sl,s2)==0)puts(s1);
75.以下程序的輸出結(jié)果是()。
A.9B.8C.7D.6
76.有如下程序
voidfunc1(intst[],inti)
{printf("%c",st[i]);
if(i<3){i+=2;func2(st,i);}
}
voidfunc2(intst[],inti)
{printf("%c",st[i]);
if(i<3){i+=2;func1(st,i);}
}
main()
{charst[]="hello,friend!";
inti=0;func1(st,i);
printf("\n");}
程序執(zhí)行后輸出的結(jié)果是
A.helloB.hel
C.hloD.編譯出錯(cuò)
77.
78.
79.以下定義數(shù)組的語句中錯(cuò)誤的是()。
80.以下不能輸出字符A的語句是()。(注:字符A的ASCIl碼值為65,字符a的ASCIl碼值為97)
五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的功能是:給一維數(shù)組arr輸人任意4個(gè)整數(shù),并按如下的規(guī)律輸出。例如,若輸入2345,則程序運(yùn)行后輸出以下矩陣:請修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計(jì)題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能是:只刪除字符串前導(dǎo)和尾部的*號,串中字母之間的*號都不刪除。形參m給出了字符串的長度,形參h給出了字符串中前*號的個(gè)數(shù),形參e給出了字符串中最后*號的個(gè)數(shù)。在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是a*bc*def*g。注意:部分源程序給出如下。請勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.C
2.D解析:選項(xiàng)A),B),C)的指針賦值表達(dá)方式都不正確,*p=5表達(dá)整數(shù)5放到指針p所指向的存儲(chǔ)單元中。注意:通過指針引用一個(gè)存儲(chǔ)單。
3.C在main函數(shù)中調(diào)用了f函數(shù)使形參s指向數(shù)組a。執(zhí)行“S[1]+=6”;語句,則“a[1]=8;”執(zhí)行“*s=7;”語句,則“a[0]=7”;執(zhí)行“s+=2;”語句,則s指向數(shù)組的第3個(gè)元素并返回s。調(diào)用后,函數(shù)返回值賦給指針P,則*P=3,因此輸出的結(jié)果為7,8,3。故本題答案為C選項(xiàng)。
4.C
5.C
6.A解析:n--是先使用后自減,--n是先自減后使用。n=4時(shí),執(zhí)行n--后,n變?yōu)?,執(zhí)行--n后,n變?yōu)?,所以,第一次輸出時(shí),n為2;同上過程,第二次輸出時(shí),n為0。
7.B函數(shù)調(diào)用時(shí),prt函數(shù)的作用是為使m數(shù)組中的數(shù)自增1,因此數(shù)組下標(biāo)從0開始,每個(gè)元素都自加1。
8.D
9.B
10.B解析:本題考查函數(shù)調(diào)用時(shí)的參數(shù)傳遞。在執(zhí)行函數(shù)func時(shí),由于全局定義了一個(gè)變量b,所以在函數(shù)體中執(zhí)行時(shí)b=2+1=3,最終t=2+3=5。
11.A函數(shù)intfun(intn)的功能是求1+2+…+n的值并返回。所以執(zhí)行程序時(shí),給變量x輸入10后,執(zhí)行語句“x=fun(x);”,X的值將變?yōu)?到10中10個(gè)整數(shù)的累加和,即55。
12.B本題考查for循環(huán)的使用。對于第1個(gè)for循環(huán),任何一個(gè)i,內(nèi)層j的循環(huán)都要使j~0到3,j=4時(shí)不符合,所以退出j循環(huán);然后i減1,J仍然要從0~3,j=4時(shí)退出J循環(huán)直到i變成0,退出i循環(huán)。第一條for語句執(zhí)行6次,第二條for語句執(zhí)行4次,所以內(nèi)循環(huán)體執(zhí)行6*4=24次。
13.A解析:本題考查的是getchar()函數(shù)。getchar()函數(shù)執(zhí)行時(shí)將從鍵盤緩沖區(qū)中讀取用戶的輸入,而不管輸入的是否可打印字符,所以當(dāng)輸入a<回車>后,鍵盤緩沖區(qū)被輸入的實(shí)際上是兩個(gè)字符:'a'和'\\n'。故選項(xiàng)A的說法是正確的。
14.C解析:本題主要考查怎樣為嵌套定義的結(jié)構(gòu)中的成員賦值:由于worker中的birth是一個(gè)st型的結(jié)構(gòu),在給birth賦值時(shí),不能將birth作為一個(gè)整體,要用“.”運(yùn)算再深入一層訪問到最基本的成員x、y、z。
15.B解析:字符數(shù)組元素作函數(shù)參數(shù)是單向的值傳遞。函數(shù)cchar的功能是將大寫字母轉(zhuǎn)換為小寫字母。主函數(shù)中while循環(huán)語句的條件是判斷指針p當(dāng)前指向的字符是否為空,若不為空,則調(diào)用函數(shù)cchar,即主函數(shù)中通過循環(huán)語句將字符串'ABC+abc=defDEF'中的大寫字母全部轉(zhuǎn)換為小寫字母,因此printf的輸出結(jié)果為選項(xiàng)B。
16.A解釋執(zhí)行是計(jì)算機(jī)語言的一種執(zhí)行方式。由解釋器現(xiàn)場解釋執(zhí)行,不生成目標(biāo)程序。如BASIC便是解釋執(zhí)行。一般解釋執(zhí)行效率較低,低于編譯執(zhí)行。而C程序是經(jīng)過編譯生成目標(biāo)文件然后執(zhí)行的,所以C程序是編譯執(zhí)行。
17.D多元運(yùn)算符問號前面表達(dá)式為真,所以(a-A+a)賦值給a,括號里的運(yùn)算是把大寫字母變成小寫字母,所以答案應(yīng)為選項(xiàng)D。
18.B“strcmp(S1,S2)”是字符串比較函數(shù),比較規(guī)則是兩個(gè)字符串自左向右逐個(gè)字符相比較(按照ASCII值大小)。因?yàn)椤癘K”<“ok”,所以“strcmp(S1,S2)”為負(fù)值。故本題答案為B選項(xiàng)。
19.D初始時(shí)定義一個(gè)大小為3個(gè)一維整型數(shù)組,第一個(gè)for語句是對數(shù)組賦初值,每個(gè)值都為0。后面是一個(gè)for語句的嵌套調(diào)用,外層的循環(huán)變量i的取值為[0,2],內(nèi)層循環(huán)變量的取值范圍為[0,2]。最初外層的循環(huán)變量i=0,內(nèi)層的循環(huán)變量j取值從0到2,計(jì)算n[j]=n[0]+1,得到n[0]=1,n[1]=1,n[2]=1。外層for語句的循環(huán)變量為1時(shí),內(nèi)層的循環(huán)變量j取值從0到2,計(jì)算n[j]=n[1]+1,得到n[0]=2,n[1]=2,n[2]=2。外層for語句的循環(huán)變量為2時(shí),內(nèi)層的循環(huán)變量j取值從0到2,計(jì)算n[j]=n[2]+1,得到n[0]=3,n[1]=3,n[2]=3。最后的輸出結(jié)果為3。
20.A解析:C語言的字符型常量中,允許用一種特殊形式的字符常量,就是以一個(gè)“\\”開頭的字符。其中,“\\ddd”表示用ASCII碼(八進(jìn)制數(shù))表示一個(gè)字符,本題中的charc='\\72'H口表示占一個(gè)字符的變量c的ASCII碼值。
21.88解析:本程序定義了3個(gè)指針變量p1、p2、p,并且將a、b的地址分別賦給p1、p2,則*p1=a=2,*p2=b=4,所以表達(dá)式*p1*(*p2)的值是8。在賦值語句的左邊是*(p=&c),即使指針p指向了變量c,因而*(P)代表了c的存儲(chǔ)單元,賦值語句“*(p=&c)=*p1*(*p2);”是把整數(shù)8賦給了變量c。
22.00解析:已知a=10,b=20,所以邏輯表達(dá)式a<b的值為true,即為1,在這個(gè)表達(dá)式前面有一個(gè)邏輯運(yùn)算符!,表示反操作,所以整個(gè)語句的值應(yīng)當(dāng)為false,即為0。
23.數(shù)據(jù)流數(shù)據(jù)流解析:結(jié)構(gòu)化分析方法的實(shí)質(zhì)是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。
24.11解析:因?yàn)閤=4,y=3,所以表達(dá)式x<y的值為假(0),又因?yàn)閦=2,所以0<z的值為真(1),故最終輸出的結(jié)果為1。
25.*(p+5)或p[5]*(p+5)或p[5]
26.88解析:fabs函數(shù)功能是求x的絕對值,計(jì)算結(jié)果為double型。pow功能是計(jì)算x的y次方的值,計(jì)算結(jié)果同樣為double型。所以本題表達(dá)式相當(dāng)于2.0的3.0次方,結(jié)果為8.000000。
27.p=jx[i][p]lineMax(x)
28.1對多(或1:N)1對多(或1:N)
29.1B1B解析:在C語古中,字符型變量可以看作整型變量來對待,與整型所不同的是字符型變量在內(nèi)存中只占1個(gè)字節(jié),而整型是2個(gè)字節(jié).字符型變量中所有的數(shù)值是它所表示字符的ASCII碼值.ASCII碼中的一些相關(guān)字符是順序排列的,如'0',的ASCII碼值為48,'1'為49以此類推一直到'9';'A'的ASCII碼值為65,'B'為66以此類推一直到'Z'。本題程序首先定義了兩個(gè)字符型變量a和b,然后分別使用getchar()和scanf()函數(shù)讀取輸入的字符'B'和十進(jìn)制整數(shù)33到a和b中,因?yàn)閍-'A'+'0'等于,'B'-'A'+'0'='1'+'0'='1',而b*2等于33*2=66'A'+1='B'。所以最終輸出的結(jié)果是:1B。
30.需求獲取需求獲取解析:軟件的需求分析階段的工作,可以概括為四個(gè)方面:需求獲取、需求分析、編寫需求規(guī)格說明書和需求評審。需求獲取的目的是確定對目標(biāo)系統(tǒng)的各方面需求;需求分析是對獲取的需求進(jìn)行分析和綜合,最終給出系統(tǒng)的解決方案和目標(biāo)系統(tǒng)的邏輯模型;編寫需求規(guī)格說明書作為需求分析的階段成果,可以為用戶、分析人員和設(shè)計(jì)人員之間的交流提供方便,可以直接支持目標(biāo)軟件系統(tǒng)的確認(rèn),又可以作為控制軟件開發(fā)進(jìn)度的依據(jù);需求評審是對需求分析階段的工作進(jìn)行的復(fù)審,驗(yàn)證需求文檔的一致性、可行性、完整性和有效性。
31.類類
32.77解析:此表達(dá)式為三目運(yùn)算符,++a的值為6,b--的值為6,則整個(gè)表達(dá)式的值為++a的值,++a的值為7。請注意前綴++,--和后綴++,--的區(qū)別。
33.結(jié)構(gòu)結(jié)構(gòu)解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結(jié)構(gòu)進(jìn)行測試。
34.1371513715解析:程序中n是一個(gè)有5個(gè)元素,且元素值全為0的數(shù)組。在for循環(huán)中,當(dāng)i=1時(shí),n[1]=n[0]*2+1,此時(shí)n[1]=1;i=2時(shí),n[2]=n[1]*2+1,此時(shí)n[2]=3;i=3時(shí),n[3]=n[2]*2+1,此時(shí)n[3]=7;i=4時(shí),n[4]=n[3]*2+1,此時(shí)n[4]=15,循環(huán)結(jié)束。輸出函數(shù)中%d后有空格,因此輸出結(jié)果為13715。
35.44解析:一維數(shù)組元素的定義形式為:數(shù)組名[N],則該數(shù)組中元素的下限是0,上限是N-1。
36.1010解析:此題考查逗號表達(dá)式。逗號表達(dá)式的值是最后一個(gè)表達(dá)式的值,所以本題的返回值是a+4。前面已經(jīng)給a賦值6,所以追回值a+4=6+4=10。
37.22解析:本題變量m既是外部變量(值是13),又是fun函數(shù)的局部變量(值為3)。函數(shù)fun(x*y-m)的值為7*5-3=32,在main函數(shù)中,fun(a,b)/m中的m應(yīng)取外部變量的值13,因此輸出2。
38.SOSO解析:題中需要注意兩個(gè)問題:一是for循環(huán)的修正表達(dá)式共執(zhí)行兩次“i-”操作;二是*p[i]是對某個(gè)字符的引用。
39.54
40.\0'n++
41.A解析:當(dāng)自加運(yùn)算符做后綴表達(dá)式的時(shí)候,表達(dá)式的值不變,只有變量的值增加1,所以表達(dá)式(x++*1/3)相當(dāng)于(11*1/3),值為3。
42.A解析:符號名的命名不僅要符合語法,而且符號名的命名應(yīng)具有一定實(shí)際含義,以便于對程序功能的理解。所以,選項(xiàng)B錯(cuò)誤。程序設(shè)計(jì)風(fēng)格強(qiáng)調(diào)“清晰第一,效率第二”,而不是效率第一。所以,選項(xiàng)C錯(cuò)誤。程序中的注釋部分雖然不是程序的功能,計(jì)算機(jī)在執(zhí)行程序時(shí)也不會(huì)執(zhí)行它,但在程序中加入正確的注釋能夠幫助讀者理解程序,注釋是提高程序可讀性的重要手段。所以,選項(xiàng)D錯(cuò)誤。本題的正確答案為A。
43.D解析:位與運(yùn)算符“&”,按二進(jìn)位進(jìn)行“與”運(yùn)算,如果兩個(gè)相應(yīng)的二進(jìn)制位都為1,則該位的結(jié)果值為1,否則為0;取反運(yùn)算符“~”,用來對一個(gè)二進(jìn)制按位取反,即將0變1,1變0。在prinf()函數(shù)的表達(dá)式中,“&”前面表達(dá)式的值為1(3/2=1)表示為二進(jìn)制為00000001,而按位取反運(yùn)算符“~”的優(yōu)先級高于按位與運(yùn)算符“&”,先計(jì)算“&”后面的取反運(yùn)算符“~”。z的二進(jìn)制表示為00000001,取反后為11111110,最后進(jìn)行“&”,即“00000001&11111110”可知結(jié)果為00000000,故最后的值為0。
44.A解析:在關(guān)系數(shù)據(jù)庫中,關(guān)系模型采用二維表來表示,簡稱“表”。二維表是由表框架及表元組組成。在表框架中,按行可以存放數(shù)據(jù),每行數(shù)據(jù)稱為元組。
45.A解析:選擇運(yùn)算是在指定的關(guān)系中選取所有滿足給定條件的元組,構(gòu)成一個(gè)新的關(guān)系,而這個(gè)新的關(guān)系是原關(guān)系的一個(gè)子集。因此,一個(gè)關(guān)系經(jīng)選擇運(yùn)算后得到的新關(guān)系中,元組個(gè)數(shù)少于原來關(guān)系中元組個(gè)數(shù)。
46.B解析:scanf()語句中用“空格”間隔不同的字符串,空格將被全部忽略掉,所以用scanf()函數(shù)不能輸入空格;getchar()函數(shù)用于輸入字符,其調(diào)用形式為:ch=getchar(),getchar()函數(shù)從終端讀入一個(gè)字符作為函數(shù)值,把讀入的字符賦給變量ch。在輸入時(shí),空格、回車符都將作為字符讀入,而且只有在用戶敲入Enter鍵時(shí),讀入才開始執(zhí)行。gets()函數(shù)的調(diào)用形式為:gets(str_adr),其中str_adr是存放輸入字符串的起始地址,可以是字符數(shù)組名、字符數(shù)組元素的地址或字符指針變量。ge
47.D解析:“%”是求余運(yùn)算符,其兩側(cè)的數(shù)值只能為整型,不能用于實(shí)型數(shù)據(jù)的運(yùn)算。
48.B解析:本題主要考查結(jié)構(gòu)類型的定義:struct是結(jié)構(gòu)體類型的關(guān)鍵字;structstr是結(jié)構(gòu)體類型名;x、y、z都是結(jié)構(gòu)體成員名;st是結(jié)構(gòu)變量名。
49.D
50.C解析:在C語言中,一個(gè)完整的C語句必須在語句末尾出現(xiàn)分號,分號是C語句的必要組成部分。本題答案為C。
51.C解析:在本題運(yùn)行時(shí)主要注意的是當(dāng)i=9時(shí),a[i]=10-9=1:i=8時(shí),a[i]=10-8=2;i=7時(shí),a[i]=10-7=3;……依此類推,直到i=0時(shí),a[i]=10-0=10:此時(shí),i的值已變?yōu)?1,判斷for的循環(huán)條件,不成立,然后輸出a[2],a[5],a[8]分別為8,5,2。
52.D解析:本題考核的知識(shí)點(diǎn)是指針變量的運(yùn)算及字符函數(shù)strcpy()的應(yīng)用。strepy()函數(shù)的作用是把第二個(gè)參數(shù)代表的字符串,復(fù)制到第一個(gè)參數(shù)指向得數(shù)組中.首先定義了兩個(gè)字符數(shù)組b1和b2,并用一個(gè)字符串給b1賦初值,然后定義了一個(gè)字符型指針變量pb,通過賦初值使它指向b1[3]。接著執(zhí)行while循環(huán),該循環(huán)執(zhí)行了3次;第一次判斷條件“--pb>=b1”,使pb的值為“b1+2”,執(zhí)行“strcpy(b2,pB);”后,b2中的內(nèi)容為“cdefg”;第二次判斷條件“--pb>=b1”,使pb的值為“b1+1”,執(zhí)行“strcpy(b2,pB);”后b2的內(nèi)容為“bcdefg”第三次判斷條件“--pb>=b1”使Pb的值為“b1”,執(zhí)行“strcpy(b2,pB);”后b2的內(nèi)容為“abcdefg”。最后輸出b2數(shù)組中存放的字符串長度,顯然是7。(這里還有一個(gè)關(guān)鍵點(diǎn):就是每當(dāng)執(zhí)行一次while循環(huán)判斷條件,就執(zhí)行一次“--Pb”,他使得指針pb自減1,即前移一位)所以,4個(gè)選項(xiàng)中D為所選。
53.B解析:先定義了一個(gè)指向字符型數(shù)組str的指針P,指針P指向數(shù)組str的首地址,p+3將指針指向str[3],又因?yàn)樽址蛿?shù)組在存放字符串時(shí)會(huì)自動(dòng)在末尾加上'\\0',所以*(p+3)=0。
54.B解析:在main函數(shù)中,對f(1)和f(2)的值進(jìn)行了累加。
f(1)=1
f(2)=f(1)+1=2
最后,j的值為1+2=3
55.C棧和隊(duì)列都是一種特殊的操作受限的線性表,只允許在端點(diǎn)處進(jìn)行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進(jìn)行插入或刪除操作,是一種“后進(jìn)先出”的線性表;而隊(duì)列只允許在表的一端進(jìn)行插入操作,在另一端進(jìn)行刪除操作,是一種“先進(jìn)先出”的線性表:本題答案為C)。
56.C解析:二叉樹的遍歷分為先序、中序、后序三種不同方式。本題要求中序遍歷,遍歷順序應(yīng)該為:中序遍歷左子樹->訪問根結(jié)點(diǎn)->中序遍歷右子樹。按照定義,中序遍歷序列是BDAECF。
57.C
58.B
59.D解析:一維數(shù)組的定義方式為:
類型說明符數(shù)組名[常量表達(dá)式];
選項(xiàng)A符合此定義形式,正確;C語言中多維數(shù)組賦初值時(shí)可以部分賦值,也可以不指定除第一維以外的其他維的大小,故選項(xiàng)C正確;另外,如果對全部數(shù)組元素都賦初值,則定義數(shù)組時(shí)對第一維的長度可以不指定,但第二維的長度不能省,所以選項(xiàng)B正確,而選項(xiàng)D是錯(cuò)誤的。
60.A
61.C
62.D【解析】算法的空間復(fù)雜度是指執(zhí)行這個(gè)算法所需要的內(nèi)存空間。一個(gè)算法所占用的存儲(chǔ)空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲(chǔ)空間以及算法執(zhí)行中所需要的額外空間。其中額外空間包括算法程序執(zhí)行過程中的工作單元以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲(chǔ)空間。如果額外空間量相對于問題規(guī)模來說是常數(shù),則稱該算法是原地工作的。在許多實(shí)際問題中,為了減少算法所占的存儲(chǔ)空間,通常采用壓縮存儲(chǔ)技術(shù),以便盡量減少不必要的額外空間。
63.A字符串常量必須用雙引號括起來,因此只有選項(xiàng)A)正確。
64.D\r\n
65.D
66.C
67.A本題主要考查按位求反運(yùn)算:十六進(jìn)制整型常量的形式是以數(shù)字Ox開頭的十六進(jìn)制字符串;位求反運(yùn)算的規(guī)則是:將二進(jìn)制表示的運(yùn)算對象按位取反,即將1變0,將0變1。
68.AA選項(xiàng)中l(wèi)15L表示ll5是長整型數(shù)據(jù),合法。B選項(xiàng)是八進(jìn)制常量的表示方法,但是在八進(jìn)制中不能含有數(shù)字8,所以B錯(cuò)誤。c選項(xiàng)中e后面應(yīng)該是整數(shù)不能是小數(shù)l.5,所以c錯(cuò)誤。D選項(xiàng)中八進(jìn)制常量應(yīng)該是數(shù)字…0開始,而不是字母…O開始。
69.D層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu),網(wǎng)狀模型是一個(gè)不加任何條件限制的無向圖,關(guān)系模型采用二維表來表示,所以三種數(shù)據(jù)庫的劃分原則是數(shù)據(jù)之間的聯(lián)系方式。
70.C
71.C本題主要考查三目運(yùn)算符(?:)。在本題中,有三個(gè)整型變量a、b、c,它們的初值分別為25、14、19,然后執(zhí)行三目運(yùn)算,a<=25&&b--<=2&&c等價(jià)于(a<=25)&&(b--<=2)&&c。
由于變量a的初值為25,因此,(a<=25)的結(jié)果為真;由于變量b的初值為14,(b--<=2)的結(jié)果為假,根據(jù)&&的性質(zhì)可知,其中的操作數(shù)只要有假,則計(jì)算結(jié)束,返回最終的結(jié)果為假,因此,后面的程序執(zhí)行printf(″###a=%d,b=%d,c=%d\n″,a,b,c)部分,那么答案只能在C和D中產(chǎn)生,從這兩個(gè)選項(xiàng)中給出的結(jié)果可以看出,它們的區(qū)別只有b的輸出結(jié)果,一個(gè)是13,而一個(gè)是14。從上面的程序分析,變量b進(jìn)行了一次自減操作,最后的結(jié)果應(yīng)該是13。因此,本題的正確答案是C。
72.B
73.Cfread函數(shù)中的參數(shù)buffer是內(nèi)存塊的首地址,輸入的數(shù)據(jù)存入此內(nèi)存塊中。
74.Bstrcmp(sl,s2)是字符串比較函數(shù),比較規(guī)則是兩個(gè)字符串自左向右逐個(gè)字符相比(按照ASCIl碼值大小),-以第一個(gè)不相同的字符的大小作為比較結(jié)果。因?yàn)?。O。<10.,所以strcmp(sl,s2)為負(fù)值,只有B選項(xiàng)正確。
75.B逗號表達(dá)式a++,b++,a+b先計(jì)算a++,a=2;再計(jì)算b++,b=3;表達(dá)式的值就是a+b的值,為5。表達(dá)式C++的值是C遞增前的值,為3。所以fun((a++,b++,a+b),C++)等價(jià)于fun(5,3),返回值為5+3=8。
76.D本題主要考查全局變量的作用域。在本題中,程序首先聲明兩個(gè)無返回值函數(shù)func1和func2。func1函數(shù)帶有兩個(gè)形參,一個(gè)是需要輸出的數(shù)字,一個(gè)是輸出數(shù)組元素的下標(biāo)。在函數(shù)體中,首先輸出以形參作為下標(biāo)的數(shù)組元素值,然后執(zhí)行if條件判斷語句,其條件為形參變量i<3。如果結(jié)果為真,則將變量i加2后保存,然后調(diào)用func2函數(shù);如果條件結(jié)果為假,則結(jié)束該函數(shù)。
從程序中不難看出,func2函數(shù)與func1函數(shù)基本類似,只是最后它對函數(shù)func1進(jìn)行調(diào)用,與前者不同,兩個(gè)函數(shù)是互相調(diào)用的。
在主函數(shù)中首先定義了一個(gè)字符數(shù)組,并賦了初值,然后定義一個(gè)變量i并賦值為0,如果數(shù)組st是一個(gè)全局?jǐn)?shù)組,那么調(diào)用函數(shù)func1,根據(jù)我們對函數(shù)func1的分析可知,此時(shí)能輸出st[0]即字符’h’,而此時(shí)if語句的結(jié)果為真,執(zhí)行i加2并調(diào)用func2函數(shù)操作。此時(shí)變量i的值為2,因此,輸出st[2]即字符‘l’,此時(shí)函數(shù)func2中的if條件語句結(jié)果為真,同樣執(zhí)行i加2并調(diào)用func1函數(shù)操作,然后通過func1函數(shù)輸出st[4]即字符‘o’,但由于數(shù)組只是一個(gè)局部數(shù)組,局部數(shù)組的作用域是定義它的函數(shù)或者程序段,調(diào)用函數(shù)func1時(shí),數(shù)組有效,當(dāng)再調(diào)用函數(shù)func2時(shí),已經(jīng)超出了數(shù)組的作用域。因此,系統(tǒng)在編譯時(shí)會(huì)報(bào)錯(cuò)。本題答案選D。
77.D
78.A
79.AA)選項(xiàng)中定義的數(shù)組為2行4列,而賦值時(shí)賦成了3行,因此出錯(cuò)。
80.BB選項(xiàng)輸出的格式為%d,即為整型格式,所以輸出字符A的ASCI1碼值65,而不是字符A。由于大寫字母比與其對應(yīng)的小寫字母的ASCI1碼值小32,所以A正確。字符A的ASCI1碼值就是65,所以以%C格式輸出可以輸出字符A,所以c正確。由于字符A的ASCI1碼值比字符B的小1,所以D正確。
81.(1)錯(cuò)誤:voidproc(intarr)
正確:voidproc(int*arr)
(2)錯(cuò)誤:arrEj]=arr[j+1];
正確:arr[j]=arr[j-1];
【解析】由主函數(shù)ee的函數(shù)調(diào)用可知,函數(shù)proc的形參為整型的指針變量。因此,“voidproc(intarr)”應(yīng)改為“voidproc(int*arr)”。從“a[j]=a[j+1];”可知,當(dāng)“j=M-1”
時(shí)“a[j+1];”越界了,而程序的思路是把前一個(gè)數(shù)放到后一個(gè)中,再把最后面的數(shù)放到第一個(gè)中,因此把a(bǔ)rr[j+1]改為arr[j-1]。
82.
【解析】題目要求不能用C語言提供的字符串函數(shù),可以利用移動(dòng)字符串指針來實(shí)現(xiàn),首先移動(dòng)字符串指針到第一個(gè)不是*的位置,通過指針的移動(dòng),來實(shí)現(xiàn)把第一個(gè)不是星號的字符與最后一個(gè)不是星號的字符放到a數(shù)組中,最后用ˊ\0ˊ來作為字符串結(jié)束的標(biāo)志。
2021-2022年湖南省永州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.設(shè)有序表中的元素為(13,18,24,35,47,50,62),則在其中利用二分法查找值為24的元素需要經(jīng)過()次比較容易
A.1B.2C.3D.4
2.設(shè)有定義:intn=0,*p=&n,**q=&p;則下列選項(xiàng)中正確的賦值語句是()。
A.p=1;B.*q=2;C.q=p;D.*p=5;
3.有以下程序:#include<stdio.h>int*f(int*s){s[1]+=6;*s=7;s+=2;returns;}main(){inta[5]={1,2,3,4,5},*p=a;P=f(P);printf(“%d,%d,%d\n”,a[0],a[1],*p);}程序運(yùn)行后的輸出結(jié)果是()。
A.9,8,9B.7,8,7C.7,8,3D.1,2,1
4.
5.在下面的二維數(shù)組定義中,正確的是()。
A.inta[5][];
B.inta[][5];
C.inta[][3]={{1,3,5},{2}};
D.inta[](10);
6.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}
A.20B.31C.321D.210
7.以下程序的輸出結(jié)果是()。voidprt(int*m.intn){inti;for(i=0;i<n;i++)m[i]++;)main{inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf(“%d,”,a[i]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1
8.設(shè)散列表長m=14,散列函數(shù)H(K)=K%11,已知表中已有4個(gè)結(jié)點(diǎn):r(15)=4;r(38)=5;r(61)=6;r(84)=7,其他地址為空,如用二次探測再散列處理沖突,關(guān)鍵字為49的結(jié)點(diǎn)地址是_____。
A.8B.3C.5D.9
9.printf函數(shù)中用到格式符%5s,其中數(shù)字5表示輸出的字符串占用5列。如果字符串長度大于5,則輸出按方式()。
A.從左起輸出該字串,右補(bǔ)空格B.按原字符長從左向右全部輸出C.右對齊輸出該字串,左補(bǔ)空格D.輸出錯(cuò)誤信息
10.下列程序的輸出結(jié)果是()。
#include<stdio.h>
intb=2;
intfunc(int*A)
{b+=*a;retumb;}
main()
{inta=1,t=2;
t+=func(&A);
printf("%d\n",t);
}
A.4B.5C.6D.8
11.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}執(zhí)行程序時(shí),給變量X輸入10,程序的輸出結(jié)果是()。A.55B.54C.65D.45
12.若i、j已定義成mt型,則下列程序段中內(nèi)循環(huán)體的總執(zhí)行次數(shù)是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30
13.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當(dāng)運(yùn)行時(shí)輸入:a<回車>后,以下敘述正確的是()。
A.變量c1被賦予字符a,c2被賦予回車符
B.程序?qū)⒌却脩糨斎氲?個(gè)字符
C.變量c1被賦予字符a,c2中仍是原有字符2
D.變量c1被賦予字符a,c2中將無確定值
14.若定義下列結(jié)構(gòu)體,結(jié)構(gòu)體變量p的出生年份賦值正確的語句是()。structst{intx;inty;intz;}structworker{charname[20];charsex;structstbirth;}p;
A.x=1987B.birth.x=1987;C.p.birth.x=1987;D.p.x=1987;
15.以下程序的輸出結(jié)果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}
A.abe+ABC=DEFdef
B.abc+abe=defdef
C.abcaABCDEFdef
D.abcabcdefdef
16.計(jì)算機(jī)高級語言程序的運(yùn)行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的事()。
A.C語言程序僅可以編譯執(zhí)行B.C語言程序僅可以解釋執(zhí)行C.C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D.以上說法都不對
17.有以下程序:#include<stdio.h>main(){chara=H;a=(a>=Aa<=2)?(a-A+a):a;printf("%c\n",a);}程序運(yùn)行后的輸出結(jié)果是()。A.AB.aC.HD.h
18.若有定義語句“char*s1=“OK”,*s2=“ok”;”,以下選項(xiàng)中,能夠輸出“OK”的語句是()。
A.if(strcmp(s1,s2)!=0)puts(s2);
B.if(strcmp(s1,s2)!=0)puts(s1);
C.if(strcmp(s1,s2)==1)puts(s1);
D.if(strcmp(s1,s2)==0)puts(s1);
19.有以下程序
main()
{
intn[3],i,j;
for(i=0;i<3;i++)
n[i]=0;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
n[j]=n[i]+1;
printf("%d\n",n[1]);
}
程序運(yùn)行后的輸出結(jié)果是A.A.2
B.1
C.0
D.3
20.若有說明語句:charc='\72'則變量c()。
A.包含1個(gè)字符B.包含2個(gè)字符C.包含3個(gè)字符D.說明不合法,c的值不確定
二、2.填空題(20題)21.下列程序的輸出結(jié)果是______。
main()
{inta=2,b=4,e=6;
int*p1=&a,*p2=&b,*p;
*(p=&c)=*p1*(*p2);
printf("%d\n",c);
}
22.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。
23.結(jié)構(gòu)化分析方法是面向______進(jìn)行分析的方法。
24.若有如下程序:
main()
{intx=4;y=3,Z=2,t;
t=x<y<z;
printf("%d\n",t);
}
則程序運(yùn)行后的輸出結(jié)果是【】。
25.若有以下定義,則不移動(dòng)指針p,且通過指針p引用值為98的數(shù)組元素的表達(dá)式是______。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
26.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為【】。
27.以下和程序中,主函數(shù)調(diào)用了lineMax函數(shù),實(shí)現(xiàn)在N行M列的二維數(shù)組中,找出每一行上的最大值,請?zhí)羁铡?/p>
#defineN3
#defineM4
voidlineMax(intx[N][M])
{inti,j,p;
for(i=0;i<N;i++)
{p=0;
for(j=1;j<M;j++)
if(x[i][p]<x[i][j]【】;
printf("Themaxvalueinlineis%d\n",【】);
}
{
main()
{intx[N][M]={1,5,4,2,6,4,3,8,2,3,1};
【】;
}
28.一個(gè)項(xiàng)目具有一個(gè)項(xiàng)目主管,一個(gè)項(xiàng)目主管可管理多個(gè)項(xiàng)目,則實(shí)體“項(xiàng)目主管”與實(shí)體“項(xiàng)目”的聯(lián)系屬于______的聯(lián)系。
29.已知字符A的ASCII代碼值為65,以下程序運(yùn)行時(shí)若從鍵盤輸入:B33<回車>。則輸出結(jié)果是______。
#include<stdio,h>
main()
{
chara,b;
a=geCchar();scanf("%d“,&b);
a=a-'A'+‘0';b=b*2;
printf('%c%c\n",a,b);
}
30.軟件的需求分析階段的工作,可以概括為四個(gè)方面:【】、需求分析、編寫需求規(guī)格說明書和需求評審。
31.面向?qū)ο蟮哪P椭校罨镜母拍钍菍ο蠛蚠_____。
32.設(shè)inta=5,b=6,表達(dá)式(++a==b--)?++a:--b的值是【】。
33.軟件測試中路徑覆蓋測試是整個(gè)測試的基礎(chǔ),它是對軟件【】進(jìn)行測試。
34.以下程序運(yùn)行后的輸出結(jié)果是【】。
#include<stdio.h>
msin()
{inti,n[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{n[i]=n[i-1]*2+1;
printf("%d",n[i]);
}
}
35.若有定義doublea[5];,則a數(shù)組元素下標(biāo)的上限為______。
36.若a是int型變量,則下列表達(dá)式的值為______。
(a=2*3,a*2),a+4
37.下面程序執(zhí)行后輸出的結(jié)果是【】。
intm=13;
intfun(intx,inty)
{intm=3;
return(x*y-m);
}
main()
{inta=7,b=5;
printf("%d\n",fun(a,b)/m);
}
38.以下程序的輸出結(jié)果是【】。
main()
{char*p[]={"BOOL","OPK","H","SP"};
inti;
for(i=3;i>0;i--,i--)printf("%c",*p[i]);
printf("\n");}
39.若變量n中的值為24,則函數(shù)共輸出【】行,最后一行有【】個(gè)數(shù)。
voidprint(intn,intaa)
{inti;
for(i=1;i<=n;i++)
{printf("%6d,aa[i]);
if(!(i%5))printf("\n");
}
printf("\n");
}
40.以下函數(shù)把b字符串連到a字符串的后面,并返回a中新字符串的長度,請?zhí)羁铡?/p>
strcen(chara[],charb[])
{
intnum=0,n=0;
while(*(a+num)!=【】)num++;
while(b[n]){*(a+num)=b[n];num++;【】;}
returnnum;
}
三、1.選擇題(20題)41.設(shè)有intx=11;則表達(dá)式(x++*1/3)的值是()。
A.3B.4C.11D.12
42.對建立良好的程序設(shè)計(jì)風(fēng)格,下面描述正確的是()
A.程序應(yīng)簡單、清晰、可讀性好B.符號名的命名只要符合語法C.充分考慮程序的執(zhí)行效率D.程序的注釋可有可無
43.有以下程序:main(){intx=3,y=2,z=1;printf("%d\n",x/y&~z);}程序運(yùn)行后的輸出結(jié)果是()。
A.3B.2C.1D.0
44.關(guān)系表中的每一橫行稱為—個(gè)______。
A.元組B.字段C.屬性D.碼
45.下列關(guān)系運(yùn)算中,能使經(jīng)運(yùn)算后得到的新關(guān)系中元組個(gè)數(shù)少于原來關(guān)系中元組個(gè)數(shù)的是()。
A.選擇B.投影C.連接D.并
46.若要求從鍵盤讀入含有窄格字符的字符串,應(yīng)使用函數(shù)()。
A.getc()B.gets()C.getchar()D.scanf()
47.以下敘述中錯(cuò)誤的是()。
A.C程序中的#include和#define行均不是C語句
B.除逗號運(yùn)算符外,賦值運(yùn)算符的優(yōu)先級最低
C.C程序中,j++;是賦值語句
D.C程序中,+、-、*、/、%是算術(shù)運(yùn)算符,可用于整型和實(shí)型數(shù)的運(yùn)算
48.設(shè)有下列說明語句:StrcutStr{intx;floaty;charz;}st;則下列的敘述中不正確的是()。
A.struct是結(jié)構(gòu)體類型的關(guān)鍵字
B.st是結(jié)構(gòu)體類型名
C.x、y、z都是結(jié)構(gòu)體成員名
D.structstr是結(jié)構(gòu)體類型名
49.若有下面的說明和定義,則sizeof(structaA)的值是()struetaa{intr1;doubler2floatr3;unionuu{charu1[5];longu2[2];}ua;}mya;
A.30B.29C.24D.22
50.下列屬于C語言語句的是______。
A.printf("%d\n",a)
B.#include<stdio.h>
C.a=b;b=c;c=a;
D./*thisisaprogram*/
51.以下程序的輸出結(jié)果是_______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;print("%d%d%d,a[2],a[5],a[8]);}
A.258B.741C.852D.369
52.以下程序的輸出結(jié)果是#include<stdio.h>#include<string,h>main(){charb1[8]="abcdefg",b2[8],*pb=b1+3;while(--pb>=b1)strcpy(b2,pB);printf("%d\n",strlen(b2));}
A.8B.3C.1D.7
53.下面程序段的運(yùn)行結(jié)果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;pfintf("%d\n",*(p+3));}
A.67B.0C.字符'C'的地址D.字符'C'
54.有以下程序
intf(intn)
{if(n==1)return1;
elsereturnf(n-1)+1;}
main()
{inti,j=0;
for(i=1;i<3;i++)j+=f(i);
printf("%d\n",j);}
程序運(yùn)行后的輸出結(jié)果是
A.4B.3C.2D.1
55.棧和隊(duì)列的共同點(diǎn)是()。
A.都是先進(jìn)后出B.都是先進(jìn)先出C.只允許在端點(diǎn)處插入和刪除元素D.沒有共同點(diǎn)
56.設(shè)有下列二叉樹:
對此二叉樹中序遍歷的結(jié)果是
A.ABCDEFB.DABECFC.BDAECFD.DBEFCA
57.下列說法正確的是()
A.在執(zhí)行C程序時(shí)不是從main函數(shù)開始的
B.C程序書寫格式嚴(yán)格限制,一行內(nèi)必須寫一個(gè)語句
C.C程序書寫格式自由,一個(gè)語句可以分寫在多行上
D.C程序書寫格式嚴(yán)格限制,一行內(nèi)必須寫一個(gè)語句,并要有行號
58.以下程序的輸出結(jié)果是()。#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&C);prt(&a,&b,&C);}
A.11,42,3112,22,41
B.11,41,201,42,20
C.11,21,4011,21,21
D.11,41,2112,42,22
59.以下數(shù)組定義中不正確的是_______。
A.inta[2][3];
B.intb[][3]={0,1,2};
C.intc[100][100={0};
D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
60.下面結(jié)構(gòu)體的定義語句中,不正確的是______。
A.structdate{intmonth;intday;intyear;}Structdatedatel;
B.stmctdate{intmonth;intday;intyear;}datel;
C.struct{intmonth;intday;intyear;}date1;
D.#defineDATEstmctdateDATE{intmonth;intday;intyear;}datel;
四、選擇題(20題)61.
62.算法的空間復(fù)雜度是指()。
A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲(chǔ)空間D.算法執(zhí)行過程中所需要的存儲(chǔ)空間
63.C語言中,合法的字符串常量是()。
A."M"B.\tC.100D.MUST
64.
65.
66.
67.表達(dá)式“~0x11”的值是()。
A.0xFFEEB.0x71C.0x0071D.0xFFF1
68.以下選項(xiàng)中,能用作數(shù)據(jù)常量的是()。
A.115LB.0118C.1.5el.5D.0115
69.層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫劃分原則是()。
A.記錄長度B.文件的大小C.聯(lián)系的復(fù)雜程度D.數(shù)據(jù)之間的聯(lián)系方式
70.(37)下面不屬于軟件設(shè)計(jì)原則的是()
A.抽象
B.模塊化
C.自底向上
D.信息隱蔽
71.已定義:inta=25,b=14,c=19;,以下三目運(yùn)算符(?:)所構(gòu)成語句的執(zhí)行后
a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);程序輸出的結(jié)果是
A.***a=25,b=13,c=19B.***a=26,b=14,c=19C.###a=25,b=13,c=19D.###a=26,b=14,c=19
72.
73.讀取二進(jìn)制文件的函數(shù)調(diào)用形式為:fread(buffersize,count,fp);,其中buffer代表的是()。
A.一個(gè)文件指針,指向待讀取的文件
B.一個(gè)整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)
C.一個(gè)內(nèi)存塊的首地址,代表讀人數(shù)據(jù)存放的地址
D.一個(gè)內(nèi)存塊的字節(jié)數(shù)
74.若有定義語句:
char}sl=‘’0K”,:Its2=”ok”;
以下選項(xiàng)中,能夠輸出“OK”的語句是()。
A.if(strcmp(sl,s2)!=0)puts(s2);
B.if(strcmp(sl,s2)!=0)puts(s1);
C.if(strcmp(sl,s2)==1)puts(s1);
D.if(strcmp(sl,s2)==0)puts(s1);
75.以下程序的輸出結(jié)果是()。
A.9B.8C.7D.6
76.有如下程序
voidfunc1(intst[],inti)
{printf("%c",st[i]);
if(i<3){i+=2;func2(st,i);}
}
voidfunc2(intst[],inti)
{printf("%c",st[i]);
if(i<3){i+=2;func1(st,i);}
}
main()
{charst[]="hello,friend!";
inti=0;func1(st,i);
printf("\n");}
程序執(zhí)行后輸出的結(jié)果是
A.helloB.hel
C.hloD.編譯出錯(cuò)
77.
78.
79.以下定義數(shù)組的語句中錯(cuò)誤的是()。
80.以下不能輸出字符A的語句是()。(注:字符A的ASCIl碼值為65,字符a的ASCIl碼值為97)
五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的功能是:給一維數(shù)組arr輸人任意4個(gè)整數(shù),并按如下的規(guī)律輸出。例如,若輸入2345,則程序運(yùn)行后輸出以下矩陣:請修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計(jì)題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能是:只刪除字符串前導(dǎo)和尾部的*號,串中字母之間的*號都不刪除。形參m給出了字符串的長度,形參h給出了字符串中前*號的個(gè)數(shù),形參e給出了字符串中最后*號的個(gè)數(shù)。在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是a*bc*def*g。注意:部分源程序給出如下。請勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
參考答案
1.C
2.D解析:選項(xiàng)A),B),C)的指針賦值表達(dá)方式都不正確,*p=5表達(dá)整數(shù)5放到指針p所指向的存儲(chǔ)單元中。注意:通過指針引用一個(gè)存儲(chǔ)單。
3.C在main函數(shù)中調(diào)用了f函數(shù)使形參s指向數(shù)組a。執(zhí)行“S[1]+=6”;語句,則“a[1]=8;”執(zhí)行“*s=7;”語句
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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ù)控車間安全生產(chǎn)制度
- 生產(chǎn)線中午值班制度
- 商業(yè)安全生產(chǎn)例檢制度
- 電站安全生產(chǎn)制度范本
- 新產(chǎn)品生產(chǎn)計(jì)劃管理制度
- 2026山東臨沂市莒南縣部分事業(yè)單位招聘綜合類崗位工作人員29人備考考試題庫附答案解析
- 鋁材生產(chǎn)訂單管理制度
- 規(guī)劃局安全生產(chǎn)制度
- 艾滋病孕婦生產(chǎn)制度
- 化工生產(chǎn)車間制度
- 2026年河南農(nóng)業(yè)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試參考題庫含答案解析
- 2024–2025學(xué)年度第一學(xué)期期末卷 八年級歷史(試題)
- 城市軌道交通服務(wù)員(城市軌道交通站務(wù)員)考核要素細(xì)目表與考核內(nèi)容結(jié)構(gòu)表
- JBT 12530.4-2015 塑料焊縫無損檢測方法 第4部分:超聲檢測
- 江西省吉安市初中生物七年級期末下冊高分預(yù)測題詳細(xì)答案和解析
- 《中國心力衰竭診斷和治療指南2024》解讀(總)
- DZ∕T 0033-2020 固體礦產(chǎn)地質(zhì)勘查報(bào)告編寫規(guī)范(正式版)
- 瀝青拌合站方案
- (汪曉贊)運(yùn)動(dòng)教育課程模型
- GB/T 42677-2023鋼管無損檢測無縫和焊接鋼管表面缺欠的液體滲透檢測
- 輪機(jī)英語題庫
評論
0/150
提交評論