版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021年河北省秦皇島市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.
2.若以下選項中的變量已正確定義,則正確的賦值語句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
3.若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)()。
A.getcharB.getcC.getsD.scanf
4.以下定義語句中正確的是()。
A.inta=b=0;
B.charA=65+1,b=‘b’;
C.floata=1,*b=&a,*c=&b;
D.doublea=0.0;b=1.1;
5.下列程序執(zhí)行后的輸出結(jié)果是()。voidfunc(int*a,intb[]){b[0]=*a+b;}main{inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}A.6B.7C.8D.9
6.下列標(biāo)識符不是關(guān)鍵字的是()。
A.breakB.charC.SwithchD.return
7.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。
A.334HB.30DHC.352HD.31AH
8.下列關(guān)于字符串的說法中錯誤的是
A.在C語言中,字符串是借助于字符型一維數(shù)組來存放的,并規(guī)定以字符'\0'作為字符串結(jié)束標(biāo)志
B.'\0'作為標(biāo)志占用存儲空間,計入串的實際長度
C.在表示字符串常量的時候不需要人為在其末尾加入'\0'
D.在C語言中,字符串常量隱含處理成以'\0'結(jié)尾
9.
10.以下程序運行時若要正確輸出函數(shù)的入口地址和輸入數(shù)的絕對值,應(yīng)在程序空缺處填入的正確選項是
abs(intx)
{if(x>=0)returnx;
elsereturn-x;}
main()
{inty,z,(*p)(intx)=abs;
scanf("%d",&y);
z=(*p)(y);
;}
A.printf("%d%d\n",&p,z)
B.printf("%d%d\n",p,z)
C.printf("%d%d\n",*p,z)
D.printf("%d%d\n",p,*z)
11.
12.棧通常采用的兩種存儲結(jié)構(gòu)是A.A.線性存儲結(jié)構(gòu)和鏈表存儲結(jié)構(gòu)
B.散列方式和索引方式
C.鏈表存儲結(jié)構(gòu)和數(shù)組
D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)
13.計算機(jī)算法必須具備輸入、輸出和()等5個特性。
A.可行性、可移植性和可擴(kuò)充性B.可行性、確定性和有窮性C.確定性、有窮性和穩(wěn)定性D.易讀性、穩(wěn)定性和安全性
14.
15.有以下程序:intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main{printf("%d\n",fun(7));}執(zhí)行后的結(jié)果是()。A.7B.3C.2D.0
16.以下程序的輸出結(jié)果是()main(){union{chari[2];intk;}r;r.i[0]=2,r.i[1]=0;printf("%d\n",r,k);}
A.2B.1C.0D.不確定
17.已知:intx,y;doublez;則以下語句中錯誤的函數(shù)調(diào)用是()。A.A.scanf("%d,%1x,%1e",&x,&y,&z);
B.scanf("%1d*%d&1f",&x,&y,&z);
C.scanf("%x%*d%o",&x,&y);
D.scanf("%x%o%6.2f",&x,&y,&z);
18.以下選項中不能用做C程序合法常量的是()。
A.1,234B.‘\123’C.123D.“\x7G”
19.用不帶頭結(jié)點的單鏈表存儲隊列時,其隊頭指針指向隊頭結(jié)點,其隊尾指針指向隊尾結(jié)點,則在進(jìn)行刪除操作時()。
A.僅修改隊頭指針B.僅修改隊尾指針C.隊頭、隊尾指針都要修改D.隊頭,隊尾指針都可能要修改
20.下面程序的輸出結(jié)果是()。
#include<stdio.h>
main()
{inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};
inti,j,n;
n=9;
i=n/5;
j=n-i*5-1;
printf("a[%d][%d]=%d\n",i,j,a[i][j]);
}
執(zhí)行后輸出結(jié)果是()。A.A.a[1][3]=6
B.a[1][3]=-3
C.a[1][3]=2
D.不確定
二、2.填空題(20題)21.下面的程序是將從終端讀入的20個字符放入字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inti;
chars[21],*p;
for(i=0;i<20;i++)
s[i]=getehar();
s[i]=【】;
p=【】;
while(*p)putchar(【】);
}
22.以下程序運行后的輸出結(jié)果是______。
main()
{intx,a=1,b=2,c=3,d=4;
x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;
pfintf("%d\n",x);
}
23.執(zhí)行下面程序段時輸出suet,請?zhí)羁铡?/p>
main()
{staticchara[]="student";
char*p;
for(p=a;p<【】;p+=2)
putchar(*p);
}
24.下列執(zhí)行后輸出的結(jié)果是【】。
main()
{intarr[10],i,k=0
for(i=0;i<10;i++)atr[i]=i
for(i=1,i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
25.已有定義如下:
structnode
{intdata;
structnode*next;
}*p;
以下語句調(diào)用malloc函數(shù),使指針p指向一個具有structnode類型的動態(tài)存儲空間。請?zhí)羁铡?/p>
p=(structnode*)malloc(【】);
26.下面程序的輸出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i,10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
27.下列的for語句的循環(huán)次數(shù)為______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
28.順序存儲方法是把邏輯上相鄰的結(jié)點存儲在物理位置______的存儲單元中。
29.在______個容量為32的循環(huán)隊列中,若頭指針front=3,尾指針rear=2,則該循環(huán)隊列中共有______個元素。
30.有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b,則不能把結(jié)點b連接到結(jié)點a之后的語句是【】。
structnode
{chardata;
structnode*next;}a,b
31.對數(shù)據(jù)元素之間的邏輯關(guān)系的描述是()。
32.以下程序運行后的輸出結(jié)果是______。
main()
{inta=3,b=4,c=5,t=99;
if(b<a&&a<c)t=a;a=C;c=t;
if(a<c&&b<c)t=b;b=a;a=t
printf("%d%d%d\n",a,b,c);
}
33.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。
34.以下程序的功能是:通過函數(shù)func輸入字符并統(tǒng)計輸入字符的個數(shù)。輸入時用字符作為輸入結(jié)束標(biāo)志。請?zhí)羁铡?include<stdio.h>long();/*函數(shù)說明語句*/main(){longn;n=func();printf"n=%1d\n",n);}longfunc(){longm;for(m=0;getchar()!='';());returnm:}
35.以下程序運行后的輸出結(jié)果是()。
main()
{intx,a=1,b=2,c=3,d=4;
{intx,a=1,b=2,c=3,d=4;
x=(a<B)?a:b;x=(a<C)?x:C;x=(d>x)?x:d;
printf("%d\n",x);
}
36.以下程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{inta[5]={2,4,6,8,10},*p;
p=a;p++;
printf("%d",*p);
}
37.以下程序運行后的輸出結(jié)果是【】。
#include<stdio.h>
main()
{intp[7]={11,13,14,15,16,17,18};
inti=0,j=0;
while(i<7&&p[i]%2==1)j+=p[i++];
prinff("%d\n",j);
38.在面向?qū)ο蠓椒ㄖ校尽棵枋龅氖蔷哂邢嗨茖傩耘c操作的一組對象。
39.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進(jìn)行測試。
40.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們之和。請?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-%dkn",sum,count);
}
三、1.選擇題(20題)41.若有以下結(jié)構(gòu)體定義,則______是正確的引用或定義。structexample{intx;inty;}v1;
A.example.x=10
B.examplev2.x=10
C.structv2;v2.x=10
D.structexamplev2={10};
42.有以下程序:#include<stdio.h>main(){ints=0,a=1,n;scanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%d\n",s);}若要使程序的輸出值為2,則應(yīng)該從鍵盤給n輸入的值是()。
A.-1B.-3C.-5D.0
43.下列語句中符合C語言語法的賦值語句是()
A.a=7+b+c=a+7;
B.9=7+b+9++a+7;
C.a=7+b,b++,a+7;
D.a=7+b,c=a+7;
44.有以下程序
voidf(int*q)
{inti=0;
for(;i<5;i++)(*q)++;
}
main()
{inta[5]={1,2,3,4,5},i;
f(a);
for(i=0;i<5;i++)printf("%d,",a[i]);
}
程序運行后的輸出結(jié)果是
A.2,2,3,4,5,B.6,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,
45.若有以下說明和定義:typedefint*INTEGER;INTEGERp,*q;以下敘述正確的是()A.p是整型變量
B.p是基類型為整型的指針變量
C.q是基類型為整型的指針變量
D.程序中可用INTEGER代替int類型名
46.以下選項中可作為C語言合法常量的是
A.-80B.-080C.-8e1.0D.-80.0e
47.下列敘述中正確的是()。
A.接口復(fù)雜的模塊,其耦合程度一定低
B.耦合程度弱的模塊,其內(nèi)聚程度一定低
C.耦合程度弱的模塊,其內(nèi)聚程度一定高
D.上述三種說法都不對
48.當(dāng)執(zhí)行下面程序且輸入aboy時,輸出的結(jié)果是______。#include<stdio.h>#include<string.h>main(){charss[81]="ABOY",hh[81],*pt;scanf("%s",hh);pt=strcat(ss,hh);puts(pt);printf("%s\n",hh);}
A.ABOYaa
B.ABOYaboyaboy
C.ABOYaboya
D.ABOYaboyaboy
49.為了提高軟件模塊的獨立性,模塊之間最好是()。
A.控制耦合B.公共耦合C.內(nèi)容耦合D.數(shù)據(jù)耦合
50.有以下程序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]);}程序運行后的輸出結(jié)果是
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,
51.在順序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找關(guān)鍵碼值11,所需的關(guān)鍵碼比較次數(shù)為______。
A.2B.3C.4D.5
52.在C語言中,要求運算數(shù)必須是整型的運算符是()。
A./B.++C.!=D.%
53.有以下程序:#definef(x)(x*x)main(){inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf("%d,%d\n",i1,i2);}程序運行后的輸出結(jié)果是______。
A.64,28B.4,4C.4,3D.64,64
54.下面程序的運行結(jié)果是()。#include<stdio.h>main(){staticchara[]="Languagef",b[]="programe";char*p1,*p2;intk;p1=a;p2=b;for(k=0;k<=7;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}
A.gaeB.gaC.LanguageD.有語法錯
55.下列程序的輸出結(jié)果是#include"stdio.h"main(){inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b);}
A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=5
56.下列敘述中正確的是()。
A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)
B.算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)
C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止
D.以上3種描述都不對
57.設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是()。
A.x=y*5=x+z
B.int(15.8%5.
C.x=y+z+5,++y
D.x=25%5.0
58.C語言的基本單位是()。
A.函數(shù)B.過程C.子程序D.子函數(shù)
59.在數(shù)據(jù)庫設(shè)計中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()A.需求分析階段B.邏輯設(shè)計階段C.概念設(shè)計階段D.物理設(shè)計階段
60.線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是()
A.每個元素都有一個直接前件和直接后件
B.線性表中至少要有一個元素
C.表中諸元素的排列順序必須是由小到大或由大到小
D.除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件
四、選擇題(20題)61.
62.
設(shè)有定義的語句:“charc1=92,c2=92;”,則以下表達(dá)式中的值為零的是()。
A.c1^c2B.c1&c2C.~c2D.c1E.c2
63.若函數(shù)調(diào)用時的實參為變量時,以下關(guān)于函數(shù)形參和實參的敘述中正確的是()。
A.函數(shù)的形參和實參分別占用不同的存儲單元
B.形參只是形式上的存在,不占用具體存儲單元
C.同名的實參和形參占同一存儲單元
D.函數(shù)的實參和其對應(yīng)的形參共占同一存儲單元
64.讀取二進(jìn)制文件的函數(shù)調(diào)用形式為:fread(buffersize,count,fp);,其中buffer代表的是()。
A.一個文件指針,指向待讀取的文件
B.一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)
C.一個內(nèi)存塊的首地址,代表讀人數(shù)據(jù)存放的地址
D.一個內(nèi)存塊的字節(jié)數(shù)
65.計算機(jī)的內(nèi)存儲器比外存器()
A.價格便宜B.存儲容量大C.讀寫速度快D.讀寫速度慢
66.以下敘述中錯誤的是()。
A.函數(shù)的返回值類型不能是結(jié)構(gòu)體類型,只能是簡單類型
B.函數(shù)可以返回指向結(jié)構(gòu)體變量的指針
C.可以通過指向結(jié)構(gòu)體變量的指針訪問所指結(jié)構(gòu)體變量的任何成員
D.只要類型相同,結(jié)構(gòu)體變量之間可以整體賦值
67.
下列程序中函數(shù)sort()的功能是對數(shù)組a中的數(shù)據(jù)進(jìn)行由大到小的排序。
#include<stdio.h>
voidsort(inta[],intll)
{inti,j,t;
for(i=0;i<n-1;i++)
for(j=j+1+1;j<n;j++)
if(a[i]<a[j])
{t=a[i];a[i]=a[j];a[j]=t;
}
}
main()
{inta[10]一{1,2,3,4,5,6,7,8,9,10},i;
sort(&a[1],7);
for(i=0;i<10;i++)printf("%d,",a[i]);
}
程序運行后的輸出結(jié)果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.10,9,8,7,6,5,4,3,2,1,
C.1,8,7,6,5,4,3,2,9,10,
D.1,2,10,9,8,7,6,5,4,3,
68.有以下程序
69.
70.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}輸出結(jié)果是()。A.28B.27C.42D.4l
71.有以下程序:
程序運行后的輸出結(jié)果是()。
A.7,4.2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,
72.以下數(shù)組定義中錯誤的是()。
A.intx[2][3]=|1,2,3,4,5,6|;
B.intx[][3]=|0|
C.intx[][3]={|1,2,3|,|4,5,6|}
D.intx[2][3]=||1,2|,|3,4|,|5,6||
73.有以下程序
#include"stdio.h"
voidfun(int*a,int*b,intc)
{c=*a+*b;}
main()
{inta[2]={6,9},c=0;
fun(a,a+1,&c);
printf("%d\n",c);
}
程序輸出的結(jié)果是
A.6B.9
C.0D.15
74.
75.某二叉樹有5個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)是A.10B.8C.6D.4
76.有以下程序:
程序的運行結(jié)果是()。
A.0B.1C.2D.3
77.有以下程序:
#include<stdio.h>
intfun(intX,inty)
{if(X!=y)return((x+y)/2);
elsereturn(x);
}
main()
{inta=4,b=5,c=6;
printf("%d/n",fun(2*a,fun(b,c)));
}
程序運行后的輸入結(jié)果是()。
A.3
B.6
C.8
D.12
78.若有定義語句:“inta=3,b=2,c=1;”,以下選項中錯誤的賦值表達(dá)式是()。
A.a=(b=4)=3;B.a=b=c+1:C.a=(b=4)+C;D.a=1+(b=c一4);
79.對建立良好的程序設(shè)計風(fēng)格,下面描述正確的是
A.程序應(yīng)簡單、清晰、可讀性好B.符號名的命名只需符合語法
C.充分考慮程序的執(zhí)行效率D.程序的注釋可有可無
80.
五、程序改錯題(1題)81.下列給定程序中函數(shù)fun()的功能是:用遞歸算法計算斐波拉契數(shù)列中第n項的值。從第l項起,斐波拉契數(shù)列為:1,1,2,3,5,8,13,21,…例如,若給n輸入7,則該項的斐波拉契數(shù)值為13。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
六、程序設(shè)計題(1題)82.請編寫fun函數(shù),其功能是:計算并輸出3~m所有素數(shù)的平方根之和。
例如,若主函數(shù)從鍵盤給m輸入50后,則輸出為s=68.665791。
請勿改動main函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
注意:m的值要大于2但不大于100。部分源程序給出如下。
試題程序:
#include<math.h>
#include<stdio.h>
doublefun(intm)
{}
voidmain
{
intm;
doubles;
FILE*out:
printf("\n\nInputm:");
scanf("%d",&m);
s=fun(m);
printf("\n\ns=%f\n\n",s);
ut=fopen("outfile.dat","w");
for(m=0;m<10;m++)
fprintf(out,"%f\n",fun(m+80));
felose(out);
}
參考答案
1.B
2.C解析:賦值的一般形式為:變量名:表達(dá)式;,賦值的方向為由右向左,即將:右側(cè)表達(dá)式的值賦給:左側(cè)的變量,執(zhí)行步驟是先計算再賦值。選項A中運算符%的運算對象必須為整數(shù),而選項A中26.8不為整數(shù),故選項A不正確;選項B將一個變量賦值給一個常量,這在C語言中是不允許的,故選項B不正確;選項D中也是將一個常量3賦值給一個常量,故選項D不正確;所以,4個選項中選項C符合題意。
3.C當(dāng)輸入字符串時,函數(shù)scanf用“空格”間隔不同的字符串,scanf函數(shù)不能輸入空格。getchar函數(shù)用于輸入字符,其調(diào)用形式為ch=getchar(),getehar函數(shù)從終端讀入一個字符作為函數(shù)值,把讀入的字符賦給變量ch。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶按<Enter>鍵時,讀入才開始執(zhí)行。gets函數(shù)的調(diào)用形式為getS(Str_adr),其中“str_adr”是存放輸入字符串的起始地址,可以是字符數(shù)組名、字符數(shù)組元素的地址或字符指針變量。gets函數(shù)用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止。getc函數(shù)的調(diào)用形式為ch=getc(Pf),其中“pf”是文件指針,函數(shù)的功能是從“pf”指定的文件中讀入一個字符,并把它作為函數(shù)值返回。故本題答案為C選項。
4.BA選項中的變量b沒有定義,不能直接給變量a賦值。C選項中,*b、*c表示的是一個實型變量的地址,不能將指針型變量b的地址賦值給指針型變量c。D選項中,“a=0.0”后面應(yīng)該為逗號,不能是分號。故本題答案為B選項。
5.A本題考查函數(shù)的調(diào)用,從主函數(shù)傳遞到調(diào)用函數(shù)中,*a的值為0,因此當(dāng)執(zhí)行完調(diào)用函數(shù)后,b[0]的值為6。
6.C在C語言中,字母區(qū)分大小,所以break、char、return、switch都是C語言中的關(guān)鍵字,而Swithch不是。
7.C解析:解答本題,首先要明白在對指針進(jìn)行加、減運算的時候,數(shù)字“1”不是十進(jìn)制的數(shù)“1”,而是指'1'個存儲單元長度,而1個存儲單元長度占多少存儲空間,應(yīng)該視具體情況而定。如果基本類型是int型,移動1個存儲單元的長度就是位移2個字節(jié),如果基本類型是float型,移動1個存儲單元的長度就是位移4個字節(jié)。所以p+13所指向的數(shù)組元素的地址:300H+(13*上標(biāo))4)H=352H。
8.B解析:'\\0'作為標(biāo)志占用存儲空間,但是不計入串的實際長度。當(dāng)給一個字符型指針賦值時,賦給這個指針的是這個字符串的地址。
9.D
10.B解析:考查函數(shù)指針的使用方法。可以使用函數(shù)指針來調(diào)用函數(shù)。調(diào)用形式為:(*指針變量)(實參表列)。
11.D
12.A解析:和線性表類似,棧也有兩種存儲方法,一是順序棧,二是鏈?zhǔn)綏?。棧的順序存儲結(jié)構(gòu)是利用一組地址連續(xù)的存儲單元一次存儲自棧底到棧頂?shù)臄?shù)據(jù)元素,同時附設(shè)指針top指示棧頂元素的位置,由于棧的操作是線性表操作的特例,相對而言,鏈?zhǔn)綏5牟僮鞲子趯崿F(xiàn)。注意:這3種運算方法在各種存儲結(jié)構(gòu)中的應(yīng)用。
13.B
14.B
15.C調(diào)用函數(shù)fun(7)時,由于x的值為7,執(zhí)行語句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(5);\r\n調(diào)用函數(shù)fun(5)時,由于x的值為5,執(zhí)行語句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(3);\r\n調(diào)用函數(shù)fun(3)時,由于x的值為3,執(zhí)行語句“p=x-fun(x-2);”,相當(dāng)于執(zhí)行p=7-fun(1);\r\n調(diào)用函數(shù)fun(1)時,由于X的值為1,執(zhí)行語句“return(3);”,函數(shù)的返回值為3。\r\n因此函數(shù)調(diào)用fun(7)等價于7-(5-fun(3)),即7-(5-(3-fun(1))),即7-(5-(3-3)),所以函數(shù)fun(7)的返回值為2。答案為C。
16.A解析:根據(jù)共用體的定義可知:共用體r的成員k和成員i[2]是共用同—段內(nèi)存空間,所以,當(dāng)程序給r.i[0]賦值后,實際上,共用體成員k的值也確定了,為2。所以打印輸出的結(jié)果應(yīng)當(dāng)為2。
17.BB項的格式應(yīng)該為scanf("%1d*%d%1f",&x,&y,&z);
18.AA選項中逗號是一個操作符。
19.D
20.Bn=9,i=n/5=1;j=9-1*5-1=3,輸出為a[1][3]=-3
21.\0s*p++\\0\r\ns\r\n*p++解析:本題先通過for循環(huán)從鍵盤讀入20個字符,然后賦值'\\0'作為字符串結(jié)束標(biāo)志,再使指針p指向字符串的首地址,最后通過while循環(huán)對字符串進(jìn)行掃描并輸出。
22.因為在條件表達(dá)式(a<b)?a:b中,比較表達(dá)式a<b為真,所以x的值等于a的值等于1,后面兩個條件表達(dá)式中的比較表達(dá)式都為真,所以最終x的值等于1。\r\n\r\n
23.a+strlen(a)或strlen(a)+aa+strlen(a)或strlen(a)+a解析:要輸出suet就要將指針從字符串開始移動到字符串結(jié)尾,表達(dá)式p=a使p指向字符串的首地址;表達(dá)式p+=2使每次循環(huán)p值加2,是向前移動指針;空白處應(yīng)判斷是否到達(dá)字符串結(jié)尾,因此應(yīng)填字符串的首地址加字符串長度,strlen(a)的返回值為字符串a(chǎn)所含的字符個數(shù)。
24.1212解析:本題的第—個for循環(huán)用于始數(shù)組arr賦初值,第二個for循環(huán)用于求和運算。由于第二個for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結(jié)果為12。
25.sizeof(structnode)或4sizeof(structnode)或4解析:malloc(sizeof(struetnode))的作用是開辟一個長度為sizeof(struetnode)的內(nèi)存區(qū)。(structnode*)的作用是使malloc返回的指針轉(zhuǎn)換為指向structnode類型數(shù)據(jù)的指針。
26.1212解析:本題首先通過第一個for語句把0~9(包含0和9)間的整數(shù)依次賦值給數(shù)組arr,第二個for語句用于實現(xiàn)將滿足條件的數(shù)組元素與對應(yīng)的下標(biāo)值求和并累加,并用變量k保存。
27.66解析:分析程序可知,每循環(huán)一次,x的值加1,然后檢測循環(huán)控制條件(y!=19)&&(x<7),因y的值不變,故滿足x<7時循環(huán)6次。
28.相鄰相鄰
29.3131解析:設(shè)隊列容量為m,如果:rear>front,則隊列中元素個數(shù)為rear-front;如果rear<front,則隊列中元素個數(shù)為m+(rear-front)。本題rear<front,則m=32+(2-3)=31。
30.a.next=aba.next=ab解析:選項A)中,指針變量q保存的就是變量b的地址,選項B)中的p是指針變量,應(yīng)該是p->next=&b;在選項D)中,用*運算符取出結(jié)構(gòu)體變量,并且保存的就是b的地址。
31.數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)的邏輯結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是對數(shù)據(jù)元素之間的邏輯關(guān)系的描述,它可以用一個數(shù)據(jù)元素的集合和定義在此集合中的若干關(guān)系來表示。
32.4599
33.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系,分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)。常見的線性結(jié)構(gòu)有線性表、棧和隊列等,常見的非線性結(jié)構(gòu)有樹、二叉樹等。
34.tunc()m++tunc()m++解析:第一空白處,在C語言中如果子函數(shù)在主函數(shù)之后定義,就要對其進(jìn)行說明,說明的形式為:“函數(shù)類型名函數(shù)名”。所以此處填寫func()。第二空白處,整型變量m表示輸入字符的個數(shù),所以每輸入一個字符,變量m的值就加1。所以此處填寫m++。
35.11解析:條件運算表達(dá)式:“表達(dá)式1?表達(dá)式2:表達(dá)式3”,但表達(dá)式1的值為非0時,此時表達(dá)式2的值就是整個條件表達(dá)式的值,反之為表示式3的值。解析易知結(jié)果為1。
36.指針P指向數(shù)組a的首地址,執(zhí)行語句p++;后p指向數(shù)組a的第2個元素的地址,即a[1]的地址,因此*p=a[1]=4。\r\n\r\n
37.2424解析:本題關(guān)鍵是while循環(huán)。
當(dāng)i=0時,滿足條件:i<7&&11%2==1,執(zhí)行j=0+11=11,i++,i為1;
當(dāng)i=1時,滿足條件:i<7&&13%2=1,執(zhí)行j=11+13=24,i++,i為2;
當(dāng)i=2時,不滿足條件:i<7&&14%2==1,循環(huán)結(jié)束。輸出j的值24。
38.類類解析:在面向?qū)ο蠓椒ㄖ?,類描述的是具有相似屬性與操作的一組對象。
39.結(jié)構(gòu)結(jié)構(gòu)解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結(jié)構(gòu)進(jìn)行測試。
40.&a[i]或a+ia[i]或*(a+i)&a[i]或a+ia[i]或*(a+i)解析:主函數(shù)中一開始定義了一個長度為20得整形數(shù)組,然后通過—個循環(huán),循環(huán)20次給它的每個元素賦初值,所以在第一個空格處應(yīng)填各個元素的地址,即填&a[1]或a+i,然后在通過一個循環(huán)執(zhí)行20次,每循環(huán)一次,先判斷該循環(huán)是否大于0,如果大于。將其累加到變量sum中,所以第二個空格處應(yīng)該填入數(shù)組元素,所以應(yīng)該填a[i]或*(a+i)。
41.D解析:在定義結(jié)構(gòu)體變量時,不能只用結(jié)構(gòu)體名example或關(guān)鍵字struct進(jìn)行定義,必需要用結(jié)構(gòu)缽類型名structexample定義,在引用結(jié)構(gòu)體成員變量時,需要用結(jié)構(gòu)體變量名進(jìn)行引用,所以選D。
42.B解析:本題考查do-while語句。當(dāng)n=-1時,s+=1,s=1;a=a-2=-1;a!=n不成立,結(jié)束循環(huán),此時s值為1,不符合題意;當(dāng)n=-3時,s+=1,s=1;a=a-2=-1;a!=n成立,繼續(xù)循環(huán),s=s+1=2,a=a-2=-3;a!=n不成立,此時s值為2,符合題意。
43.D
44.B解析:調(diào)用函數(shù)f()時,將數(shù)組a的地址傳遞給了指針q,此時q指向的就是數(shù)組a的第一個元素a[0]。在5次循環(huán)過程中,q始終指向a[0],因此a[0]的值增加了5。最后的輸出結(jié)果為'6,2,3,4,5'。
45.B本題中INTEGER被定義為int*的別名,故直接由它定義的類型基類型為整型的指針變量。因此,p是基類型為int的指針變量,q是int型指針的指針變量。故4個選項中B正確。
46.A解析:C語言的常量分為整型常量、實型常量和字符型常量。本題中包含整型常量和實型常量。選項B)以0打頭,應(yīng)該屬于八進(jìn)制整數(shù),而八進(jìn)制整數(shù)只能用數(shù)字0~7表示,所以選項B)不合法;選項C)和D)從形式上看屬于實型常量,但對于指數(shù)形式的實型常量,e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù),所以選項C)和D)都不合法;選項A)屬于實型常量中正確的十進(jìn)制小數(shù)形式。
47.C解析:影響模塊之間耦合的主要因素有兩個:模塊之間的連接形式,模塊接口的復(fù)雜性。一般來說,接口復(fù)雜的模塊,其耦合程度要比接口簡單的模塊強(qiáng),所以選項A的說法錯誤;耦合程度弱的模塊,其內(nèi)聚程度一定高,選項B錯誤;選項C正確。
48.A解析:對于函數(shù)strcat(ss,hh),把字符串hh(若遇空格,舍去后面的部分,并重新賦給hh)連至字符串ss的后面。
49.D解析:耦合性與內(nèi)聚性是模塊獨立性的兩個定性標(biāo)準(zhǔn),是互相關(guān)聯(lián)的。在程序設(shè)計中,各模塊間的內(nèi)聚性越強(qiáng),則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)聚、低耦合,有利于提高模塊的獨立性。
50.D解析:在C語言中,函數(shù)參數(shù)的默認(rèn)傳遞方式是傳值,即函數(shù)內(nèi)部的形參只是調(diào)用時的實參的一個拷貝,改變形參,實參不會被改變.如果想要實現(xiàn)傳址調(diào)用只能使用傳遞指針的方式來實現(xiàn).利用指針作函數(shù)的參數(shù)時,無論形參指針還是實參指針?biāo)傅亩际峭粋€內(nèi)存地址,所以形參如果改變了這個地址中的內(nèi)容,也就是改變了實參所指的地址內(nèi)容.本題程序開頭定義了一個函數(shù)f(),在函數(shù)中用一個臨時變量t交換了兩個指針參數(shù)所指的地址內(nèi)容,所以該函數(shù)的作用就是交換兩個參數(shù)所指的內(nèi)容。在主函數(shù)中,首先定義了一個int型數(shù)組a,并定義了兩個int型指針p、q分別指向數(shù)組a的第一個元素和最后一個元素。然后使用一個while循環(huán)調(diào)用函數(shù)f()不斷交換兩個指針?biāo)傅膬?nèi)容,每次交換后p往后移動一個元素,q往前移動一個元素,直到q不再大于p,即直到兩個指針在數(shù)組a的中間相遇為止。所以,程序最終運行的結(jié)果是數(shù)組a中的所有元素全被反序排列一次。故應(yīng)該選擇選項D。
51.C解析:二分法查找是一種線性查找方法,其基本方法是:首先要用要查找的關(guān)鍵碼與線性表中間位置結(jié)點的關(guān)鍵碼值進(jìn)行比較,這個中間結(jié)點把線性表分為兩個子表,比較相等則查找完畢,不等則根據(jù)查找結(jié)果確定下一步的查找應(yīng)該在哪一個子表中進(jìn)行,如此下去,直到找到滿足條件的結(jié)點:或者確定表中沒有這樣的結(jié)點。用二分法查找關(guān)鍵碼值11的順序如下所示,其中[]內(nèi)為本次栓索的子表,()內(nèi)為該子表的中間結(jié)果。從圖中可以看出,經(jīng)四次查找后,確定表中沒有這樣的結(jié)點。因此本題正確答案為選項C(4)。
第一次:[3,6,8,10,12,(15),16,18,21,25,30]
第二次:[3,6,(8),10,12],15,16,18,21,25,30
第三次:[3,6,8,[(10),(12)],15,16,18,21,25,30]
第四次:[3,6,8,10,[(12)],(15),16,18,21,25,30]查找失敗。
52.D解析:/、++和!=的操作數(shù)既可能是整型,又可能是實型。而%的操作數(shù)只能是整型。
53.C解析:根據(jù)題意,il=f(8)/f(4)進(jìn)行宏替換后.i1=(8*8)/(4*4)=4,i2=f(4+4)/f(2+2)=(4+4*4+4)/(2+2*2+2)=24/8=3。所以輸出結(jié)果為4、3。
54.A解析:指針p1+k相當(dāng)于指針P1向后移動了k個字符的位置,指針p2同理。
55.B解析:continue語句的作用是跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進(jìn)行循環(huán)條件的判定。當(dāng)能被2整除時,a就會增1,之后執(zhí)行continue語句,直接執(zhí)行到for循環(huán)體的結(jié)尾,進(jìn)行i++,判斷循環(huán)條件。
56.C解析:算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)密切相關(guān)。算法的空間復(fù)雜度是指算法執(zhí)行過程中所需的存儲空間。
57.C解析:求余運算符'%'兩邊的運算對象必須是整型,而選項B)和D)中'%'兩邊的運算對象有浮點整數(shù)據(jù),所以選項B)和D)是錯誤的表達(dá)式。在選項A)中賦值表達(dá)式的兩邊出現(xiàn)相同的變量x,也是錯誤的。選項C)是一個逗號表達(dá)式,所以正確答案為C)。
58.AA?!窘馕觥緾語言是函數(shù)式的語言。它的基本組成單位是函數(shù),在C語言中任何程序都是由一個或者多個函數(shù)組成的。
59.B數(shù)據(jù)庫應(yīng)用系統(tǒng)的邏輯設(shè)計包括數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計、數(shù)據(jù)庫事務(wù)概要設(shè)計和應(yīng)用程序概要設(shè)計三方面。數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計的主要步驟為:將E—R圖轉(zhuǎn)換為初始關(guān)系模式,對初始關(guān)系模式進(jìn)行優(yōu)化,檢查關(guān)系表對數(shù)據(jù)庫事務(wù)的支持性,確定關(guān)系模式完整性約束,設(shè)計基于關(guān)系模式的用戶視圖。
60.D解析:線性表可以為空表,排除選項B。第一個元素沒有直接前件,最后一個元素沒有直接后件,故排除選項A。線性表的定義中,元素的排列沒有規(guī)定大小順序,故選項C也有誤,只有D項是正確的。
61.D
62.A
\n當(dāng)值相同時按位異或,則為0,按位或與按位與時仍不變,負(fù)數(shù)也為非0。
\n
63.A本題重點考察的是函數(shù)的形參和實參。I在定義函數(shù)時函數(shù)名后面括弧中的變量名稱為“形式參數(shù)”l(簡稱形參),在主調(diào)函數(shù)中調(diào)用一個函數(shù)時,函數(shù)名后面括弧1中的參數(shù)(可以是—個表達(dá)式)稱為“實際參數(shù)”(簡稱實參)。fC語言規(guī)定,實參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內(nèi)存中,實參單元與形參單元是不同的單元。因此A選項正確。
64.Cfread函數(shù)中的參數(shù)buffer是內(nèi)存塊的首地址,輸入的數(shù)據(jù)存入此內(nèi)存塊中。
65.C
66.A函數(shù)返回值類型可以是簡單類型和結(jié)構(gòu)體類型。
67.C
\n本程序中的函數(shù)sort(inta[],intn)實現(xiàn)的功能是將數(shù)組a中的前n個數(shù)進(jìn)行從大到小排序。sort(&a[1],7)是將數(shù)組中從a[1]~a[7]這7個數(shù)進(jìn)行從大到小排序,其他數(shù)不變。
\n
68.A本題考查了數(shù)組名的概念。在C語言中,數(shù)組名類似于一個指向數(shù)組首地址的指針常量,一旦定義就不能修改其內(nèi)容。所以本題中的s+=2;語句讓數(shù)組名s的內(nèi)容加2是錯誤的,編譯無法通過。故應(yīng)該選擇A)。
69.A
70.C只有當(dāng)3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數(shù)只有42,故選擇C選項。
71.DCou血ue的作用是跳出循環(huán)體中剩余的語句而進(jìn)行下一次循環(huán)。第一次循環(huán)x的值為8,循環(huán)體中if條件成立,打印x的值8后將x減1,再執(zhí)行continue語句,跳出本次循環(huán)。第二次判斷循環(huán)條件時,x的值變?yōu)?,不滿足循環(huán)體內(nèi)if條件,執(zhí)行打印一一x的操作,即打印5后跳出循環(huán)。第三次判斷循環(huán)條件時x的值為4,滿足循環(huán)體中if條件,執(zhí)行打印x一一的操作,即打印4,后將x值減一,執(zhí)行continue語句,跳出本次循環(huán)。第四次判斷循環(huán)條件時x的為2,滿足循環(huán)體中if條件,打印x一一,即打印2后將x減一,執(zhí)行continue語句,跳出本次循環(huán)。在進(jìn)行for條件表達(dá)式中第三個表達(dá)式x一一的操作后x的值為0,不滿足條件結(jié)束循環(huán)。所以打印結(jié)果為8,5,4,2,。
72.DD選項中x[2][3]定義的是一個兩行三列的二維數(shù)組,而在給數(shù)組元素賦值時卻賦成了三行,所以錯誤。
73.C函數(shù)的參數(shù)通常分為兩種:數(shù)值變量和指針變量。數(shù)值變量被函數(shù)調(diào)用后,函數(shù)內(nèi)的參數(shù)為該數(shù)值變量的副本。對副本的一切操作都不會影響到調(diào)用函數(shù)外原來的參數(shù)。指針變量在函數(shù)中傳遞的是對其存放地址的一份副本,該副本存放的地址與原來的指針?biāo)娴牡刂芬恢?。在函?shù)體內(nèi)修改指針存放的地址對應(yīng)的值與在函數(shù)體外對原參數(shù)的修改同樣有效,因為原參數(shù)也指向該地址。
題目中的程序包括主函數(shù)main和fun函數(shù),其中fun函數(shù)為void型,不需要fun函數(shù)返回值。fun函數(shù)的形參為2個整型指針變量和1個整型變量。在main函數(shù)中調(diào)用fun函數(shù),a為指向數(shù)組第一個數(shù)的地址,a+1指向數(shù)組第二個數(shù)的地址,變量c的初始值為0。雖然在fun函數(shù)中也有整型變量c,但是該變量的使用范圍為fun函數(shù),與main中的變量c沒有關(guān)系,有c=*a+*b,即c=15,但是main函數(shù)對fun函數(shù)的參數(shù)傳遞為數(shù)值變量,fun函數(shù)中變量c數(shù)值的改變不會影響main函數(shù)中變量c的數(shù)值改變,即主函數(shù)中變量c的值依然為0。
74.D
75.C根據(jù)二叉樹的性質(zhì),在任意二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。
76.B本題考查循環(huán)語句的嵌套以及條件的判斷問題。在程序中,內(nèi)層循環(huán)判斷條件為”j<=i¨,而j的初值為3,故當(dāng)i的值為1和2時,內(nèi)層循環(huán)體都不會被執(zhí)行。只有當(dāng)i和j都等于3時才會執(zhí)行一次。m的值為55對3取模,計算結(jié)果為l。
77.B\n此題考查的是函數(shù)fun,fun(b,c)=5,然后fun(2*a,5)=fun(8,5)=6。
\n
78.A由等式的規(guī)則可知,A選項錯誤。先對括號的b進(jìn)行等式運算,得出b=4,然后計算得出a=4=3,所以會導(dǎo)致錯誤。答案選擇A。
79.A具有良好的程序設(shè)計風(fēng)格是一個程序員必不可少的素質(zhì)。我們在編寫程序時要養(yǎng)成良好的程序設(shè)計習(xí)慣,對程序的要求不僅能夠在計算機(jī)上正確運行,而且要便于閱讀和被別人理解,便于程序的調(diào)試和維護(hù)。好的程序設(shè)計風(fēng)格有助于提高程序的正確性、可讀性、可維護(hù)性和可用性。要使程序具有良好的風(fēng)格,必須做到以下幾點:
(1)合理的標(biāo)識符的命名。由于一個程序中必然有很多標(biāo)識符,特別是在一個大型復(fù)雜的程序中,標(biāo)識符可能成千上萬,對標(biāo)識符作用的正確理解是讀懂程序的前提,如果程序員隨意命名標(biāo)識符,程序的可讀性會很差。因此,在命名標(biāo)識符時要注意其可理解性。
(2)在程序中添加一定的注釋。注釋是程序員與日后的程序讀者之間詢通的重要工具,它用自然語言或偽碼描述。它說明了程序的功能,特別是在維護(hù)階段,對理解程序提供了明確指導(dǎo)。因此,一定的注釋是程序必不可少的組成部分。
(3)程序的編輯風(fēng)格。為了使程序的結(jié)構(gòu)一目了然,可以在程序中利用空格、空行、縮進(jìn)等技巧使程序?qū)哟吻逦阌趯Τ绦虻睦斫狻?/p>
(4)語句的結(jié)構(gòu)。在結(jié)構(gòu)化程序設(shè)計中,單個語句結(jié)構(gòu)是編碼階段的任務(wù),語句結(jié)構(gòu)追求簡單直接,不能為了追求效率而使代碼復(fù)雜化。
總之,程序應(yīng)簡單、清晰、可讀性和可理解性好。
80.D
81.(1)錯誤:switch(g);
正確:switch(g)
(2)錯誤:case1:case2:return1;
正確:case1;case2:return1;
【解析】此題考查C語言的語法規(guī)則,switch(表達(dá)式)后不應(yīng)該帶有“;”,case語句常量后應(yīng)該是“:”。switch語句的一般形式如下:
82.\r\n\tintn,k,i;
doublesum=0.0;
for(n=3;n<=m;n++)//判斷n是否為素數(shù)
{
k=sqrt(n);//求n平方根
for(i=2;i<=k:i++)
if(n%i==0)break;//如果n不是素數(shù),跳出
if(i>=k+1)
sum+=sqrt(n);//求平方根的和
}
returnsum;
【解析】首先判斷循環(huán)中n是否為素數(shù),如果不是素數(shù),求其平方根的累加和,并返回計算結(jié)果,否則跳出判斷循環(huán)。其中,對于平方根的求解可以使用C語句中的sqrt函數(shù)。2021年河北省秦皇島市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.
2.若以下選項中的變量已正確定義,則正確的賦值語句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
3.若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)()。
A.getcharB.getcC.getsD.scanf
4.以下定義語句中正確的是()。
A.inta=b=0;
B.charA=65+1,b=‘b’;
C.floata=1,*b=&a,*c=&b;
D.doublea=0.0;b=1.1;
5.下列程序執(zhí)行后的輸出結(jié)果是()。voidfunc(int*a,intb[]){b[0]=*a+b;}main{inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}A.6B.7C.8D.9
6.下列標(biāo)識符不是關(guān)鍵字的是()。
A.breakB.charC.SwithchD.return
7.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。
A.334HB.30DHC.352HD.31AH
8.下列關(guān)于字符串的說法中錯誤的是
A.在C語言中,字符串是借助于字符型一維數(shù)組來存放的,并規(guī)定以字符'\0'作為字符串結(jié)束標(biāo)志
B.'\0'作為標(biāo)志占用存儲空間,計入串的實際長度
C.在表示字符串常量的時候不需要人為在其末尾加入'\0'
D.在C語言中,字符串常量隱含處理成以'\0'結(jié)尾
9.
10.以下程序運行時若要正確輸出函數(shù)的入口地址和輸入數(shù)的絕對值,應(yīng)在程序空缺處填入的正確選項是
abs(intx)
{if(x>=0)returnx;
elsereturn-x;}
main()
{inty,z,(*p)(intx)=abs;
scanf("%d",&y);
z=(*p)(y);
;}
A.printf("%d%d\n",&p,z)
B.printf("%d%d\n",p,z)
C.printf("%d%d\n",*p,z)
D.printf("%d%d\n",p,*z)
11.
12.棧通常采用的兩種存儲結(jié)構(gòu)是A.A.線性存儲結(jié)構(gòu)和鏈表存儲結(jié)構(gòu)
B.散列方式和索引方式
C.鏈表存儲結(jié)構(gòu)和數(shù)組
D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)
13.計算機(jī)算法必須具備輸入、輸出和()等5個特性。
A.可行性、可移植性和可擴(kuò)充性B.可行性、確定性和有窮性C.確定性、有窮性和穩(wěn)定性D.易讀性、穩(wěn)定性和安全性
14.
15.有以下程序:intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main{printf("%d\n",fun(7));}執(zhí)行后的結(jié)果是()。A.7B.3C.2D.0
16.以下程序的輸出結(jié)果是()main(){union{chari[2];intk;}r;r.i[0]=2,r.i[1]=0;printf("%d\n",r,k);}
A.2B.1C.0D.不確定
17.已知:intx,y;doublez;則以下語句中錯誤的函數(shù)調(diào)用是()。A.A.scanf("%d,%1x,%1e",&x,&y,&z);
B.scanf("%1d*%d&1f",&x,&y,&z);
C.scanf("%x%*d%o",&x,&y);
D.scanf("%x%o%6.2f",&x,&y,&z);
18.以下選項中不能用做C程序合法常量的是()。
A.1,234B.‘\123’C.123D.“\x7G”
19.用不帶頭結(jié)點的單鏈表存儲隊列時,其隊頭指針指向隊頭結(jié)點,其隊尾指針指向隊尾結(jié)點,則在進(jìn)行刪除操作時()。
A.僅修改隊頭指針B.僅修改隊尾指針C.隊頭、隊尾指針都要修改D.隊頭,隊尾指針都可能要修改
20.下面程序的輸出結(jié)果是()。
#include<stdio.h>
main()
{inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};
inti,j,n;
n=9;
i=n/5;
j=n-i*5-1;
printf("a[%d][%d]=%d\n",i,j,a[i][j]);
}
執(zhí)行后輸出結(jié)果是()。A.A.a[1][3]=6
B.a[1][3]=-3
C.a[1][3]=2
D.不確定
二、2.填空題(20題)21.下面的程序是將從終端讀入的20個字符放入字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inti;
chars[21],*p;
for(i=0;i<20;i++)
s[i]=getehar();
s[i]=【】;
p=【】;
while(*p)putchar(【】);
}
22.以下程序運行后的輸出結(jié)果是______。
main()
{intx,a=1,b=2,c=3,d=4;
x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;
pfintf("%d\n",x);
}
23.執(zhí)行下面程序段時輸出suet,請?zhí)羁铡?/p>
main()
{staticchara[]="student";
char*p;
for(p=a;p<【】;p+=2)
putchar(*p);
}
24.下列執(zhí)行后輸出的結(jié)果是【】。
main()
{intarr[10],i,k=0
for(i=0;i<10;i++)atr[i]=i
for(i=1,i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
25.已有定義如下:
structnode
{intdata;
structnode*next;
}*p;
以下語句調(diào)用malloc函數(shù),使指針p指向一個具有structnode類型的動態(tài)存儲空間。請?zhí)羁铡?/p>
p=(structnode*)malloc(【】);
26.下面程序的輸出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i,10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
27.下列的for語句的循環(huán)次數(shù)為______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
28.順序存儲方法是把邏輯上相鄰的結(jié)點存儲在物理位置______的存儲單元中。
29.在______個容量為32的循環(huán)隊列中,若頭指針front=3,尾指針rear=2,則該循環(huán)隊列中共有______個元素。
30.有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b,則不能把結(jié)點b連接到結(jié)點a之后的語句是【】。
structnode
{chardata;
structnode*next;}a,b
31.對數(shù)據(jù)元素之間的邏輯關(guān)系的描述是()。
32.以下程序運行后的輸出結(jié)果是______。
main()
{inta=3,b=4,c=5,t=99;
if(b<a&&a<c)t=a;a=C;c=t;
if(a<c&&b<c)t=b;b=a;a=t
printf("%d%d%d\n",a,b,c);
}
33.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。
34.以下程序的功能是:通過函數(shù)func輸入字符并統(tǒng)計輸入字符的個數(shù)。輸入時用字符作為輸入結(jié)束標(biāo)志。請?zhí)羁铡?include<stdio.h>long();/*函數(shù)說明語句*/main(){longn;n=func();printf"n=%1d\n",n);}longfunc(){longm;for(m=0;getchar()!='';());returnm:}
35.以下程序運行后的輸出結(jié)果是()。
main()
{intx,a=1,b=2,c=3,d=4;
{intx,a=1,b=2,c=3,d=4;
x=(a<B)?a:b;x=(a<C)?x:C;x=(d>x)?x:d;
printf("%d\n",x);
}
36.以下程序的輸出結(jié)果是______。
#include<stdio.h>
main()
{inta[5]={2,4,6,8,10},*p;
p=a;p++;
printf("%d",*p);
}
37.以下程序運行后的輸出結(jié)果是【】。
#include<stdio.h>
main()
{intp[7]={11,13,14,15,16,17,18};
inti=0,j=0;
while(i<7&&p[i]%2==1)j+=p[i++];
prinff("%d\n",j);
38.在面向?qū)ο蠓椒ㄖ校尽棵枋龅氖蔷哂邢嗨茖傩耘c操作的一組對象。
39.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進(jìn)行測試。
40.以下程序從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們之和。請?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-%dkn",sum,count);
}
三、1.選擇題(20題)41.若有以下結(jié)構(gòu)體定義,則______是正確的引用或定義。structexample{intx;inty;}v1;
A.example.x=10
B.examplev2.x=10
C.structv2;v2.x=10
D.structexamplev2={10};
42.有以下程序:#include<stdio.h>main(){ints=0,a=1,n;scanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%d\n",s);}若要使程序的輸出值為2,則應(yīng)該從鍵盤給n輸入的值是()。
A.-1B.-3C.-5D.0
43.下列語句中符合C語言語法的賦值語句是()
A.a=7+b+c=a+7;
B.9=7+b+9++a+7;
C.a=7+b,b++,a+7;
D.a=7+b,c=a+7;
44.有以下程序
voidf(int*q)
{inti=0;
for(;i<5;i++)(*q)++;
}
main()
{inta[5]={1,2,3,4,5},i;
f(a);
for(i=0;i<5;i++)printf("%d,",a[i]);
}
程序運行后的輸出結(jié)果是
A.2,2,3,4,5,B.6,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,
45.若有以下說明和定義:typedefint*INTEGER;INTEGERp,*q;以下敘述正確的是()A.p是整型變量
B.p是基類型為整型的指針變量
C.q是基類型為整型的指針變量
D.程序中可用INTEGER代替int類型名
46.以下選項中可作為C語言合法常量的是
A.-80B.-080C.-8e1.0D.-80.0e
47.下列敘述中正確的是()。
A.接口復(fù)雜的模塊,其耦合程度一定低
B.耦合程度弱的模塊,其內(nèi)聚程度一定低
C.耦合程度弱的模塊,其內(nèi)聚程度一定高
D.上述三種說法都不對
48.當(dāng)執(zhí)行下面程序且輸入aboy時,輸出的結(jié)果是______。#include<stdio.h>#include<string.h>main(){charss[81]="ABOY",hh[81],*pt;scanf("%s",hh);pt=strcat(ss,hh);puts(pt);printf("%s\n",hh);}
A.ABOYaa
B.ABOYaboyaboy
C.ABOYaboya
D.ABOYaboyaboy
49.為了提高軟件模塊的獨立性,模塊之間最好是()。
A.控制耦合B.公共耦合C.內(nèi)容耦合D.數(shù)據(jù)耦合
50.有以下程序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]);}程序運行后的輸出結(jié)果是
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,
51.在順序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找關(guān)鍵碼值11,所需的關(guān)鍵碼比較次數(shù)為______。
A.2B.3C.4D.5
52.在C語言中,要求運算數(shù)必須是整型的運算符是()。
A./B.++C.!=D.%
53.有以下程序:#definef(x)(x*x)main(){inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf("%d,%d\n",i1,i2);}程序運行后的輸出結(jié)果是______。
A.64,28B.4,4C.4,3D.64,64
54.下面程序的運行結(jié)果是()。#include<stdio.h>main(){staticchara[]="Languagef",b[]="programe";char*p1,*p2;intk;p1=a;p2=b;for(k=0;k<=7;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}
A.gaeB.gaC.LanguageD.有語法錯
55.下列程序的輸出結(jié)果是#include"stdio.h"main(){inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b);}
A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=5
56.下列敘述中正確的是()。
A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)
B.算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)
C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止
D.以上3種描述都不對
57.設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是()。
A.x=y*5=x+z
B.int(15.8%5.
C.x=y+z+5,++y
D.x=25%5.0
58.C語言的基本單位是()。
A.函數(shù)B.過程C.子程序D.子函數(shù)
59.在數(shù)據(jù)庫設(shè)計中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()A.需求分析階段B.邏輯設(shè)計階段C.概念設(shè)計階段D.物理設(shè)計階段
60.線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是()
A.每個元素都有一個直接前件和直接后件
B.線性表中至少要有一個元素
C.表中諸元素的排列順序必須是由小到大或由大到小
D.除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件
四、選擇題(20題)61.
62.
設(shè)有定義的語句:“charc1=92,c2=92;”,則以下表達(dá)式中的值為零的是()。
A.c1^c2B.c1&c2C.~c2D.c1E.c2
63.若函數(shù)調(diào)用時的實參為變量時,以下關(guān)于函數(shù)形參和實參的敘述中正確的是()。
A.函數(shù)的形參和實參分別占用不同的存儲單元
B.形參只是形式上的存在,不占用具體存儲單元
C.同名的實參和形參占同一存儲單元
D.函數(shù)的實參和其對應(yīng)的形參共占同一存儲單元
64.讀取二進(jìn)制文件的函數(shù)調(diào)用形式為:fread(buffersize,count,fp);,其中buffer代表的是()。
A.一個文件指針,指向待讀取的文件
B.一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)
C.一個內(nèi)存塊的首地址,代表讀人數(shù)據(jù)存放的地址
D.一個內(nèi)存塊的字節(jié)數(shù)
65.計算機(jī)的內(nèi)存儲器比外存器()
A.價格便宜B.存儲容量大C.讀寫速度快D.讀寫速度慢
66.以下敘述中錯誤的是()。
A.函數(shù)的返回值類型不能是結(jié)構(gòu)體類型,只能是簡單類型
B.函數(shù)可以返回指向結(jié)構(gòu)體變量的指針
C.可以通過指向結(jié)構(gòu)體變量的指針訪問所指結(jié)構(gòu)體變量的任何成員
D.只要類型相同,結(jié)構(gòu)體變量之間可以整體賦值
67.
下列程序中函數(shù)sort()的功能是對數(shù)組a中的數(shù)據(jù)進(jìn)行由大到小的排序。
#include<stdio.h>
voidsort(inta[],intll)
{inti,j,t;
for(i=0;i<n-1;i++)
for(j=j+1+1;j<n;j++)
if(a[i]<a[j])
{t=a[i];a[i]=a[j];a[j]=t;
}
}
main()
{inta[10]一{1,2,3,4,5,6,7,8,9,10},i;
sort(&a[1],7);
for(i=0;i<10;i++)printf("%d,",a[i]);
}
程序運行后的輸出結(jié)果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.10,9,8,7,6,5,4,3,2,1,
C.1,8,7,6,5,4,3,2,9,10,
D.1,2,10,9,8,7,6,5,4,3,
68.有以下程序
69.
70.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}輸出結(jié)果是()。A.28B.27C.42D.4l
71.有以下程序:
程序運行后的輸出結(jié)果是()。
A.7,4.2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,
72.以下數(shù)組定義中錯誤的是()。
A.intx[2][3]=|1,2,3,4,5,6|;
B.intx[][3]=|0|
C.intx[][3]={|1,2,3|,|4,5,6|}
D.intx[2][3]=||1,2|,|3,4|,|5,6||
73.有以下程序
#include"stdio.h"
voidfun(int*a,int*b,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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教學(xué)樓室內(nèi)裝修協(xié)議模板
- 家庭護(hù)理保姆服務(wù)合同樣本
- 辦公空間色彩搭配合同范本
- 咖啡店店員招聘協(xié)議書
- 城市文化中心地暖工程承包合同
- 環(huán)境保護(hù)企業(yè)消防整改施工合同
- 化工廠彩鋼板翻新合同
- 勞動報酬零花錢協(xié)議
- 消防工程發(fā)包合同
- 常州乒乓球館租賃合同
- 人教版小學(xué)數(shù)學(xué)二年級上冊《表內(nèi)乘法(一)》作業(yè)設(shè)計
- 疫苗與冷鏈管理
- 化工行業(yè)基礎(chǔ)知識培訓(xùn)
- 快遞服務(wù)的危險源辨識與風(fēng)險評價
- 2023年鰲江鎮(zhèn)活動策劃項目招標(biāo)文件
- 2024年基本公共衛(wèi)生服務(wù)項目全員培訓(xùn)試題及答案
- 科研成果總結(jié)報告
- 《貨幣金融學(xué)》蔣先玲版期末復(fù)習(xí)知識點總結(jié)
- 輸卵管積水護(hù)理查房
- MBTI量表完整版本
- Morse跌倒危險因素評估量表
評論
0/150
提交評論