




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021年廣東省廣州市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.有下列程序:
程序執(zhí)行后的輸出結(jié)果是()。A.3,7,3,7B.7,3,7,3C.3,7,7,3D.7,3,3,7
2.簡單的交換排序方法是()。
A.快速排序B.選擇排序C.堆排序D.冒泡排序
3.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。
A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:
4.若有定義“doublex,y,*px,*py;”,執(zhí)行了“px=&x;py=&y;”之后,正確的輸入語句是()。
A.scanf(“%lf%le”,px,py);
B.scanf(“%f%f”,&x,&y);
C.scanf(“%f%f”,x,y);
D.scanf(“%lf%lf”,x,y);
5.現(xiàn)在有16枚外形相同的硬幣,其中一枚是假幣,且已知假幣比真幣重量輕。先給定一架沒有砝碼的天平,問至少需要多少次稱量才能找到這枚假幣?
A.3B.4C.5D.6
6.循環(huán)隊列存儲在數(shù)組A[0..m]中,則入隊時的操作為()。
A.rear=rear+1
B.rear=(rear+1)mod(m-1)
C.rear=(rear+1)modm
D.rear=(rear+1)mod(m+1)
7.運行下列程序,若從鍵盤輸入字符“a”,則輸出結(jié)果是()。
charc;
c=getchar;
if(c>=a&&c<=g)c=c+4:
elseif(c>=9&&c<=2)c=c-21:
elseprintf("inputerror!\n");
putchar(c);
A.fB.tC.eD.d
8.
9.算法的空間復(fù)雜度是指()。
A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.執(zhí)行算法所需要的存儲空間
10.隊和棧的主要區(qū)別是________
A.邏輯結(jié)構(gòu)不同B.存儲結(jié)構(gòu)不同C.所包含的運算個數(shù)不同D.限定插入和刪除的位置不同
11.在下列幾種排序方法中,要求內(nèi)存量最大的是______。
A.插入排序B.選擇排序C.快速排序D.歸并排序
12.在長度為n的順序存儲的線性表中,刪除第i個元素(1≤i≤n)時,需要從前向后依次前移____個元素。
A.n-iB.n-i+1C.n-i-1D.i
13.有三個關(guān)系R、S和T如下:由關(guān)系R和S得到關(guān)系T的操作是()。A.自然連接B.交C.除D.并
14.以下有關(guān)scanf函數(shù)的敘述中錯誤的是()。
A.在scanf函數(shù)的格式字符前既可以加入正整數(shù)指定輸入數(shù)據(jù)所占的寬度,也可以對實數(shù)指定小數(shù)位的寬度
B.scanf函數(shù)有返回值,其值就是本次調(diào)用scanf函數(shù)時正確讀入的數(shù)據(jù)項個數(shù)
C.scanf函數(shù)從輸入字符流中按照格式控制指定的格式解析出相應(yīng)數(shù)據(jù),送到指定地址中
D.在scanf函數(shù)中的格式控制字符串不會輸出到屏幕上
15.有以下程序:#include<stdio.h>main(){inta=-2,b=0;while(a++++b);printf("%d,%d\n",a,b);}程序運行后的輸出結(jié)果是()。A.1,3B.0,2C.0,3D.1,2
16.為了避免在嵌套的條件語句ifelse中產(chǎn)生二義性,C語言規(guī)定,else子句總是與()配對。
A.縮排位置相同ifB.其前面最近的ifC.其后面最近的ifD.同一行上的if
17.下列運算符中優(yōu)先級最高的是()。
A.!B.%C.-=D.&&
18.在數(shù)據(jù)庫設(shè)計中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()。A.需求分析階段B.概念設(shè)計階段C.邏輯設(shè)計階段D.物理設(shè)計階段
19.已知各變量的類型說明如下則以下不符合C語言語法的表達(dá)式是()。A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)
20.以下敘述中正確的是()。
A.預(yù)處理命令行必須位于C源程序的起始位置
B.在C語言中,預(yù)處理命令行都以“#”開頭
C.每個C程序必須在開頭包含預(yù)處理命令行:#include
D.C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能
二、2.填空題(20題)21.設(shè)有以下定義
stnctss
{intinfo;sEruc5ss*link;}x.y,z;
且已建立如下圖所示鏈表結(jié)構(gòu):
請寫出刪除結(jié)點y的賦值語句______。
22.下列程序的輸出結(jié)果是【】。
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main()
{inta=4,b=3,c=5,d=6;
t(a,b,c,d);
printf("%d\n",c,d);
}
23.數(shù)據(jù)的安全性是指保護(hù)數(shù)據(jù)以防止【】用戶的使用造成的數(shù)據(jù)泄密和破壞。
24.下面程序的功能是調(diào)用sub函數(shù)計算數(shù)組a中字符串的長度,請?zhí)羁铡?/p>
sub(chars[])
{intn;
for(n=0;【】n++);
return【】;
}
main()
{char*a;intk;
gets(a);
【】
printf("%d",k);
25.下面程序的運行結(jié)果是______。
#include<stdio.h>
#defineSIZE12
main()
{chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]]='A'+i+321;
sub(s,7,SLZE-1);
for(i=0;i<SIZE;i++)printf("%c",s[i]);
printf("\n");}
sub(char*a,inttl,intt2)
{charCh;
while(t1<t2)
{ch=*(a+t
26.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達(dá)式【】。
27.對于長度為n的順序存儲的線性表,當(dāng)隨機(jī)插入和刪除一個元素時,需平均移動元素的個數(shù)為【】。
28.若有定義inta=10,b=9,c=8;,接著順序執(zhí)行下列語句,變量b中的值是【】。
c=(a-=(b-5));
c=(a%11)+(b=3);
29.表達(dá)式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的數(shù)據(jù)類型為______。
30.在運算過程中,能夠使空表與非空表的運算統(tǒng)一的結(jié)構(gòu)是【】。
31.數(shù)據(jù)庫保護(hù)分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。
32.以下程序輸出的最后一個值是【】。
intff(intn)
{staticintf=1;
f=f*n;
returnf;
}
main()
{inti;
for(i=1;i<5;i++)printf("%d\n",ff(i));}
33.表示""整數(shù)x的絕對值大于5""時值為""真""的C語言表達(dá)式是【】。
34.與結(jié)構(gòu)化需求分析方法相對應(yīng)的是【】方法。
35.一個模塊直接訪問另一個模塊的內(nèi)容,稱為【】藕合。
36.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>
main()
{inti,j,k;
k=0;i=j=【】;
k+=-(i+j);printf("%d\n",k);
}
37.數(shù)據(jù)庫系統(tǒng)的主要特點為數(shù)據(jù)集成性、數(shù)據(jù)的高_(dá)_____和低冗余性、數(shù)據(jù)獨立性和數(shù)據(jù)統(tǒng)一管理和控制。
38.下面程序執(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);
}
39.若a是int型變量,則表達(dá)式(a=2*3,a*2),a+6的值為______。
40.在兩種基本測試方法中,【】測試的原則之一是保證所測模塊中每一個獨立路徑至少要執(zhí)行一次。
三、1.選擇題(20題)41.已知字符′A′的ASCII碼值是65,字符變量cl的值是′A′,c2的值是′D′。執(zhí)行語句printf("%d,%d",c1,c2-2);后,輸出結(jié)果是
A.A,BB.A,68C.65,66D.65,68
42.有以下程序:main(){intm,n,P;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d\n",m,n,p);}若想從鍵盤上輸入數(shù)據(jù),使變量m中的值為123,n中的值為456,p中的值為789,則王確的輸入是()。
A.m=123n=456p=789
B.m=123n=456p=789
C.m=123,n=456,P=789
D.123456789
43.執(zhí)行下列程序后,輸出的結(jié)果是()。
#include<stdio.h>
#defineS(X)X*X
voidmain()
{ihta=9,k=3,m=2;
a/=S(k+m)/S(k+m);
printf("%d",A);
}
A.1B.4C.9D.0
44.以下程序段的輸出結(jié)果為()。staticchara[]="programme";char*p;p=a;for(p=a;p<a+8;p+=2)putchar(*p);
A.programmeB.pormC.有語法錯誤D.prog
45.若有下列定義(設(shè)int類型變量占2個字節(jié)):
inti=8,j=9;
則下列語句:
printf("i=%u,j=%x\n".i,j);
輸出的結(jié)果是()。
A.i=8,j=9B.8.9C.89D.i=8,i=8
46.若變量x、y已正確定義并賦值,以下符合C語言語法的表達(dá)式是A.++x,y=x--B.x+1=yC.x=x+10=x+yD.double(x)/10
47.冒泡排序在最壞情況下的比較次數(shù)是()。
A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2
48.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實體與聯(lián)系都可以表示成()
A.屬性B.關(guān)系C.記錄D.碼
49.有以下程序main(){inta=7,b=8,*p,*q,*r;p-&a;q=&b;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q,a,b);程序運行后的輸出結(jié)果是
A.8,7,8,7B.7,8,7,8C.8,7,7,8D.7,8,8,7
50.有定義語句:chars[10];,若要從終端給s輸入5個字符,錯誤的輸入語句是
A.sets(&s[0]);
B.scarf("%s",s+1);
C.gets(s);
D.scanf("%s",s[1]);
51.設(shè)有如下定義intx=10,y=3,z;則語句printf("%d\n",z=(x%y,x/y));的輸出結(jié)果是()
A.3B.0C.4D.1
52.閱讀下列程序,則執(zhí)行后的結(jié)果為#include"stdio.h"main(){intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf("%x,%x\n",c[2][2],*(*(c+1)+1));}
A.3e,6B.62,5C.56,5D.3E,6
53.設(shè)fp為指向某二進(jìn)制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp)的返回值為______。A.EOFB.非0值C.0D.NULL
54.請讀程序:#include<stdio.h>main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}printf("%d\n",a);}上面程序的輸出結(jié)果是()。
A.7B.8C.9D.10
55.閱讀下面程序段,則執(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;}
A.AB.MC.ND.L
56.若有以下的定義和語句:main(){inta[4][3]*p[4],j;for(j=0;j<4;j++)p[j]=a[j];}則能表示數(shù)組元素的表達(dá)式是______。
A.*(p[1])B.a[4][3]C.a[1]D.*(p+4)[1]
57.若有以下定義和語句#include<stdio.h>inta=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NULL;則以下選項中錯誤的語句是
A.*q=0;B.w=p;C.*p=a;D.*p=*w;
58.若有下列說明和語句,則對結(jié)構(gòu)體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;
A.st.iB.*p.iC.(*p).iD.p->i
59.對下述程序,正確的判斷是()。main(){inta,b;scanf("%d",&a);scanf("%d",&b);if(a>b)a+=b;b++;elseb+=a;a++;printf("%d,%d",a,b);}
A.有語法錯誤,不能通過編譯
B.若輸入數(shù)據(jù)2和5,則輸出3和7
C.若輸入數(shù)據(jù)5和2,則輸出7和3
D.若輸入數(shù)據(jù)5和5,則輸出6和10
60.有以下程序段:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是
A.5B.6C.8D.9
四、選擇題(20題)61.有以下程序
#defineN15
fun(inta[],intn,intm)
{inti,j;
for(i=m;i>=n;i--)
a[i+1]=a[i];
}
main()
{inti,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,3,7);
for(i=3;i<8;i++)
printf("%d",a[i]);
}
程序的運行結(jié)果是A.A.45678
B.44567
C.45567
D.45677
62.
63.要求以下程序的功能是計算:s=1+1/2+1/3+…+1/100。
程序運行后輸出結(jié)果錯誤,導(dǎo)致錯誤結(jié)果的程序行是()。
A.s=1.0;
B.
C.S=S+1/n;
D.
64.有以下程序:
程序運行后的輸出結(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,
65.在c語言中,只有在使用時才占用內(nèi)存單元的變量,其存儲類型是()。
A.auto和static
B.extern和register
C.auto和register
D.static和register
66.
67.軟件測試的目的是()。
A.評估軟件可靠性B.發(fā)現(xiàn)并改正程序中的錯誤C.改正程序中的錯誤D.發(fā)現(xiàn)程序中的錯誤
68.以下關(guān)于typedef的敘述錯誤的是()。
A.用typedef可以增加新類型
B.typedef只是將已存在的類型用一個新的名字來代表
C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名
D.用typedef為類型說明一個新名,通??梢栽黾映绦虻目勺x性
69.
下列程序執(zhí)行后的輸出結(jié)果是()。
main
{inta[3][3],*p,i};
p=&a[0][0];
for(i=p;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
A.3B.6C.9D.隨機(jī)數(shù)
70.下列敘述中正確的是()。
A.軟件測試應(yīng)該由程序開發(fā)者來完成
B.程序經(jīng)調(diào)試后一般不需要測試
C.軟件維護(hù)只包括對程序代碼的維護(hù)
D.以上三種說法都不對
71.有以下程序段:
程序運行后的輸出結(jié)果是()。
A.a=10b=50C=30
B.a=10b=50c=10
C.a=10b=30c=10
D.a=50b=30c:50
72.軟件設(shè)計中衡量模塊獨立性的度量標(biāo)準(zhǔn)是()。
A.抽象和信息隱蔽B.局部化和封裝化C.內(nèi)聚性和耦合性D.激活機(jī)制和控制方法
73.
74.設(shè)變量已正確定義,則下列能正確計算f=n!的程序段是()。
A.f=0;for(i=1;i<=n;i++)f*=i;
B.f=1;for(i=1;i<n;i++)f*=i;
C.f=1;for(i=n;i>1;i++)f*=i;
D.f=1;for(i=n;i>=2;i--)f*=i;
75.
76.有以下程序inta=3;main(){ints=0;{inta=5;s+=a++;}s+=a++;printf("%d\n",s);}程序運行后的輸出結(jié)果是______。
A.8B.10C.7D.11
77.
78.有以下程序:
main()
{intx=0,y=5,z=3;
while(z-->0&&++x<5?x:y--)y=y-1
Printf("%d,%d,%d\n",x,y,z);
}
程序執(zhí)行后的輸出結(jié)果是()。
A.3,2,0B.3,2,-1C.4,3,-1D.3,-1,-2
79.
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是按以下遞歸公式求函數(shù)值。例如,當(dāng)給n輸入3時,函數(shù)值為60;當(dāng)給n輸入6時,函數(shù)值為480。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫函數(shù)fun,其功能是:找出一維整型數(shù)組元素中最大的值所在的下標(biāo),并通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。
主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值。index存放最大值所在元素的下標(biāo)。
注意:部分源程序給出如下。
請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。
試題程序:
參考答案
1.C程序定義兩個整型變量i、j,初值為3,7。另外,定義兩個整型指針變量p、q,其中p指向i,q指向j。將i、j的地址傳給swap函數(shù)。在swap函數(shù)中,a指向i,b指向j。通過臨時變量t交換a和b指向的值,此時a指向的實參i、b指向的實參j的值發(fā)生了交換。即a指向i的值為7,b指向j的值為3;再通過臨時變量tp交換a和b的指針值,使得a指向j,b指向i。所以swap中輸出a指向的值為3(j),b指向的值為7(i);swap函數(shù)調(diào)用結(jié)束后,輸出p和q指向的值,即i、j的值為7、3。所以程序輸出:3,7,7,3。本題答案為C選項。
2.D解析:所謂的交換類排序方法是指借助數(shù)據(jù)元素之間的互相交換進(jìn)行排序的一種方法,包括冒泡排序和快速排序,冒泡排序是一種最簡單的交換排序方法,它通過相鄰元素的交換,逐步將線性表變成有序。
3.AB選項中運算符“%”的運算對象為整數(shù)。C選項中不能將變量賦給表達(dá)式“x+n”。D選項中不能將表達(dá)式“4+1”賦給常量5。故本題答案為A選項。
4.A因為x和y都是double型數(shù)據(jù),輸入時的格式字符應(yīng)為%lf,B、C選項錯誤。D選項中的“scanf(“%lf%lf”,x,y);”應(yīng)為“scanf(“%lf%lf”,&x,&y);”。故本題答案為A選項。
5.A
6.D
7.C
\ngetchar函數(shù)是讀取鍵盤的輸入函數(shù),本題中輸入字母“a”,則c=a,判斷if條件,發(fā)現(xiàn)a>=a&&a<=g成立,則執(zhí)行下列語句:C=C+4,C得到的字符的ASCII碼值,退出if語句,通過putchar函數(shù)輸出字符。
8.C
9.D解析:算法的復(fù)雜度主要包括算法的時間復(fù)雜度和算法的空間復(fù)雜度。所謂算法的時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量;算法的空間復(fù)雜度一般是指執(zhí)行這個算法所需要的內(nèi)存空間。
10.D
11.D解析:快速排序的基本思想是,通過一趟排序?qū)⑴判蛴涗浄指畛瑟毩⒌膬刹?/p>
分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,再分別對這兩部分記錄繼
續(xù)進(jìn)行排序,以達(dá)到整個序列有序;插入排序的基本操作是指將無序序列中的各元素依
次插入到已經(jīng)有序的線性表中,從而得到一個新的序列;選擇排序的基本思想是:掃描整
個線性表,從中選出最小的元素,將它交換到表的最前面(這是它應(yīng)有的位置),然后對剩
下的于表采用同樣的方法,直到表空為止;歸并:排序是將兩個或兩個以上的有序表組合
成一個新的有序表。
注意:各種排序方法實現(xiàn)過程及實現(xiàn)機(jī)制。
12.A
13.C由圖所知,其中,C中只有一個屬性,是除操作。
14.A在scanf函數(shù)的格式字符前可以加入一個正整數(shù)指定輸入數(shù)據(jù)所占的寬度,但不可以對實數(shù)指定小數(shù)位的寬度,選項A錯誤,其他選項正確。故本題答案為A選項。
15.D輸出的結(jié)果是:-1,1\r\n0,2\r\n1,2
16.B解析:本題考查ifelse語句。C語言規(guī)定,else總是與它前面的最近的if配對。
17.A
18.CE-R圖轉(zhuǎn)換成關(guān)系模型數(shù)據(jù)則是把圖形分析出來的聯(lián)系反映到數(shù)據(jù)庫中,即設(shè)計出表,所以屬于邏輯設(shè)計階段。
19.A
20.B本題是對基本知識點的理解,預(yù)處理命令行的位置沒有規(guī)定,只是習(xí)慣寫在起始位置而已,當(dāng)需要時才用#include<stdio.h>頭文件,預(yù)處理的作用就是實現(xiàn)宏定義和條件編譯。
21.x.link=&z;或x.link=y.link;或x.1ink=x.1ink->link;或x.1ink=*(x.link).link;x.link=&z;或x.link=y.link;或x.1ink=x.1ink->link;或x.1ink=*(x.link).link;解析:本題考核的知識點是鏈表中結(jié)點的刪除。要刪除結(jié)點y,只需要讓結(jié)點x的指針域指向y結(jié)點的指針域所指向的后續(xù)結(jié)點就可,因此只需把結(jié)點2的地址賦給x的指針域就可以了即讓結(jié)點x的指針域指向結(jié)點2。而結(jié)點z得地址保存在節(jié)點y的指針域中,因此只需把節(jié)點y的指針城賦值給節(jié)點x的指針域即可。
22.5656解析:本題中a,b,c,d是實參,x,y,cp,dp是形參。C語言規(guī)定,實參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內(nèi)存中,實參單元與形參單元是不同的單元。在調(diào)用函數(shù)時,給形參分配存儲單元,并將實參對應(yīng)的值傳遞給形參,調(diào)用結(jié)束后,形參單元被釋放,實參中元仍保留并維持原值。因此,程序的輸出結(jié)果是56。
23.(非法)不合法(非法)不合法
24.s[n]!='\0';或s[n];nk=sub(a);s[n]!='\\0';或s[n];\r\nn\r\nk=sub(a);解析:函數(shù)sub()通過for循環(huán)計算字符串的長度,當(dāng)字符串沒有結(jié)束時循環(huán),因此判斷循環(huán)與否的條件是看字符串是否結(jié)束。故第1空應(yīng)該填寫s[n];或其他等價表達(dá)式。循環(huán)結(jié)束返回字符串長度值,循環(huán)變量n中累計了循環(huán)的次數(shù)即字符串的長度,故第2空應(yīng)該填n。主函數(shù)中的空白處應(yīng)該是一條調(diào)用函數(shù)sub()的語句,將字符串的首地址作為實參傳遞給形參,并將返回值賦值給變量k。故第3空應(yīng)該填k=sub(a);。
25.本題主要考查了字符變量可參與的運算。因為字符在計算機(jī)中是以ASCII碼的形式存放的,所以字符變量可看作整型變量來處理,如參與算術(shù)運算等,某字符的大寫字母的ASCII碼值比它對應(yīng)的小寫字母ASCII碼值小32。\r\n\r\n
26.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數(shù)可以用變量與2取模,判斷結(jié)果是為1或下為0。本題具體做法如下:Y%2=1或Y%2!=0。
27.n/2n/2解析:刪除一個元素,平均移動的元素個數(shù)為(n-1+n-2+…+0)/n=(n-1)/2;插入一個元素,平均移動元素個數(shù)為(n+n-1+n-2+…+1)/n=(n+1)/2;所以總體平均移動元素個數(shù)為n/2。
28.33解析:這里:b-5=4,a-=4之后a的值為6,并把它賦給c。此時b的值并未被改變。在第2個表達(dá)式中,也只有賦值表達(dá)式b=3改變了b的值。所以兩行語句執(zhí)行完畢,b的值應(yīng)該為3。
29.整型整型解析:上面的表達(dá)式中,通過強(qiáng)制類型轉(zhuǎn)換把最后參與運算的數(shù)據(jù)都轉(zhuǎn)換成了int型,所以最后得到的結(jié)果也是int類型。
30.循環(huán)鏈表循環(huán)鏈表解析:在鏈表的運算過程中,采用鏈接方式即循環(huán)鏈表的結(jié)構(gòu)把空表與非空表的運算統(tǒng)一起來。循環(huán)鏈表具有兩個特點:①在循環(huán)鏈表中增加了一個表頭結(jié)點,其數(shù)據(jù)域為任意或根據(jù)需要來設(shè)置,指針域指向線性表的第一個元素的結(jié)點。循環(huán)鏈表的頭指針指向表頭結(jié)點。②循環(huán)鏈表中最后一個結(jié)點的指針不是空,而是指向表頭結(jié)點。
31.完整性控制完整性控制
32.120120解析:靜態(tài)變量的類型說明符是static,靜態(tài)局部變量屬于靜態(tài)存儲方式,它具有以下特點:
①靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整個運行期間都不釋放。
②對靜態(tài)局部變量是在編譯時賦被值的,即只賦被值一次,在程序運行時它已有被值。以后每次調(diào)用函數(shù)時不再重新賦初值而只是保留上次函數(shù)調(diào)用結(jié)束時的值。
③如在定義局部變量時不賦初值的話,則對靜態(tài)局部變量來說,編譯時自動賦初值0(對數(shù)值型變量)或空字符(對字符變量)。(注意:C語言中的非靜態(tài)變量在定義時,系統(tǒng)并不會自動給它賦被值)
④雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后仍然存在,但其他函數(shù)是不能引用它的。
本題中函數(shù)的功能是:與for語句一起求一個整數(shù)的階乘。
33.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:要使整數(shù)x的絕對值大于5,則x大于5或x小于5,用C語言表示即為:x>5||x<-5或者x<-5||x>5。故本題答案為;x>5||x<-5或者x<-5||x>5。
34.結(jié)構(gòu)化設(shè)計結(jié)構(gòu)化設(shè)計解析:與結(jié)構(gòu)化需求分析方法相對應(yīng)的是結(jié)構(gòu)化設(shè)計方法。結(jié)構(gòu)化設(shè)計就是采用最佳的可能方法設(shè)計系統(tǒng)的各個組成部分以及各個成分之間的內(nèi)部聯(lián)系的技術(shù)。
35.內(nèi)容內(nèi)容
36.-2-2解析:題目中定義并初始化了變量k為0,最后輸出k的值,要求為4,而在此期間只有k+=-(i+j);這條語句改變了k的值,即要求表達(dá)式-(i+j)的值為4。所以,答案應(yīng)該為-2,因為只有i=j=-2時,表達(dá)式-(i+j)的值才為4。
37.共享性共享性解析:數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)能被不同的應(yīng)用程序使用,實現(xiàn)了數(shù)據(jù)的高度共享,從而降低了數(shù)據(jù)的冗余,這也是數(shù)據(jù)庫的主要目的。
38.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。
39.1212解析:本題考查逗號表達(dá)式的運算規(guī)則。逗號表達(dá)式的基本格式為:“表達(dá)式1,表達(dá)式2,…”,其整個表達(dá)式的結(jié)果取最后一個子表達(dá)式的值。本題中首先計算逗號表達(dá)式中的第1個表達(dá)式a=2*3=6,然后計算第2個表達(dá)式a*2,這時整個表達(dá)式的值為12,但要注意,因為第2個表達(dá)式并沒有給a賦值,因此a的值不變;接下來執(zhí)行最后一個表達(dá)式a+6=12,所以整個表達(dá)式最后的值為12。
40.白盒或白箱或白盒子或WhiteBox白盒或白箱或白盒子或WhiteBox解析:本題考查軟件工程的測試。測試一般有兩種方法:黑盒測試和白盒測試。黑盒測試不考慮程序的內(nèi)部邏輯結(jié)構(gòu)和處理過程,只著眼于程序的外部特性。用黑盒測試來發(fā)現(xiàn)程序中的錯誤,必須用所有可能的輸入數(shù)據(jù)來檢查程序能否都能產(chǎn)生正確的輸出。白盒測試是在了解程序內(nèi)部結(jié)構(gòu)和處理過程的基礎(chǔ)上,對程序的所有路徑進(jìn)行測試,檢查路徑是否都能按預(yù)定要求正確工作。因此,劃線處應(yīng)填入“白盒(箱)”或“WhiteBox”。
41.C解析:在C語言中,字符型數(shù)據(jù)在內(nèi)存中的存儲形式是ASCII碼值。當(dāng)需要以整型格式輸出字符時,輸出的也是ASCII碼值。字符'A'和'D'的ASCII碼值分別為65和68。
42.A解析:本題的考點是關(guān)于C語言的輸入語句scanf的通配符。C語言規(guī)定:scanf中的雙引號中的輸入格式(就是俗稱的通配符)決定了輸入的格式。要輸入123給m,456給n,789給p,由scanf的輸入格式:“m=%dn=%dp=%d”決定了輸入必須的格式是:m=123n=456p=789。
43.D解析:本題主要是考查帶參數(shù)的宏定義及其相關(guān)運算。本題中宏運算過程如下:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。
44.B解析:本程序首先定義了靜態(tài)字符數(shù)組a,然后將指針p指向數(shù)組a的首地址,第一次for循環(huán),p=a,p指向數(shù)組的第一個元素,*p是取指針p所指地址的內(nèi)容,輸出p;第二次for循環(huán),p=p+2,則p指向數(shù)組的第三個元素,*p是取指針p所指地址的內(nèi)容,輸出o;第三次for循環(huán),p=p+2,則p指向數(shù)組的第5個元素,*p是取指針p所指地址的內(nèi)容,輸出r;第四次for循環(huán),p=p+2,則p指向數(shù)組的第7個元素,*p是取指針p所指地址的內(nèi)容,輸出m;結(jié)束循環(huán)。
45.A解析:本題考查函數(shù)printf()的格式?!?x”表示以十六進(jìn)制輸出整型數(shù)據(jù);“%u”表示以十進(jìn)制無符號型輸出整型數(shù)據(jù)。printf函數(shù)中格式說明符之前插入的任何字符都原樣輸出。
46.A解析:在C語言的賦值表達(dá)式中,賦值對象必須是一個變量,而在選項B中其子表達(dá)式x+1代表的是一個臨時常量,因此不能將y賦給x+1,選項B錯誤。而選項C中由于“=”運算符是從右至左運算的,即原表達(dá)式相當(dāng)于x=(x+10=x+y),所以也犯了對一個臨時常量賦值的錯誤。選項D中,將x強(qiáng)制轉(zhuǎn)換為double類型的表達(dá)式應(yīng)該為(double)x,所以選項D也不正確。故本題的正確答案為選項A。
47.C冒泡排序的基本思想是:將相鄰的兩個元素進(jìn)行比較,如果反序,則交換;對于一個待排序的序列,經(jīng)一趟排序后,最大值的元素移動到最后的位置,其他值較大的元素也向最終位置移動,此過程稱為一趟冒泡。對于有n個數(shù)據(jù)的序列,共需n-1趟排序,第i趟對從l到n-i個數(shù)據(jù)進(jìn)行比較、交換。冒泡排序的最壞情況是待排序序列逆序,第l趟比較n-1次,第2趟比較n-2次。依此類推,最后趟比較1次,一共進(jìn)行n-l趟排序。因此,冒泡排序在最壞情況下的比較次數(shù)是(n-1)+(n-2)+…+l,結(jié)果為n(n-1)/2。本題的正確答案是選項C。
48.BE-R圖由實體、實體的屬性和實體之間的聯(lián)系3個要素組成,關(guān)系模型的邏輯結(jié)構(gòu)是一組關(guān)系模式的集合,將E-R圖轉(zhuǎn)換為關(guān)系模型:將實體、實體的屬性和實體之間的聯(lián)系轉(zhuǎn)化為關(guān)系模式。見表2。
49.C解析:本題考核的知識點是指針變量的基本應(yīng)用。程序中定義了兩個變量a和b,并分別賦初值為7和8,定義了三個指針變量p、q、r,并讓指針p指向變量a,讓Q指向變量b,然后通過一個中間指針變量r,使指針變量p和q互換,互換后p指向q所指的內(nèi)容即b,Q指向開始p所指向的內(nèi)容即a,因此最后輸出的*p,*q的值為8,7,a,b的值沒有改變?nèi)詾?,8,所以,4個選項中選項C符合題意。
50.D解析:在格式輸入中,要求給出的是變量的地址,而D)答案中給出的s[1]是一個值的表達(dá)式。
51.A
52.A解析:數(shù)組a[5][5],0<=i<5,0<=j<5,則可以用5種表達(dá)式來引用,a[i][j],*a(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+5*i+j)。數(shù)組的下限為0,%后面為小寫的x,所以輸出的結(jié)果為小寫字母表示的十六進(jìn)制。
53.B(27)B)解析:函數(shù)feof的功能是:測試fp所指的文件的位置是否已達(dá)到文件尾,如果達(dá)到文件尾,則函數(shù)返回非0值,否則返回0,表示文件尚未結(jié)束。
54.B解析:本題考查break語句和continue語句。程序要輸出循環(huán)結(jié)束時循環(huán)變量a的值,執(zhí)行第一次循環(huán)時,條件(b%3==1)為真,b=4,繼續(xù)下一次循環(huán),如此反復(fù),當(dāng)b=22時,條件(b>=20)為真,跳出循環(huán),此時共循環(huán)8次,即a=8。
55.C解析:函數(shù)說明語句中的類型名必須與函數(shù)返回值的類型一致。本題實現(xiàn)的是在字符,A,的ASCII碼值上加上一個常數(shù),使之變成另一個ASCII碼值,從而輸出字符。
56.A解析:B項錯在越界,下標(biāo)最大的元素只到a[3][2];C項錯在a[1]只表示第2行;*(p+4)[1]的錯誤也在于越界,p+4相當(dāng)于a[4],實際上是不存在的。
57.A解析:本題中定義了3個指向整型的指針變量p、q、w,并讓P指向a,讓q指向b,通過將q的值賦給w,使w也指向b,最后將NULL賦值給q。由整型變量指針的定義可知,可以給整型指針指向的變量賦一個常數(shù)值(表達(dá)式);可以給指針變量賦一個同種類型的指針變量(或地址值);選項A因為q不指向任何變量,給一個空指針指向的單元賦值是錯誤的。
58.B解析:本題主要考查結(jié)構(gòu)指針:p=&st,訪問結(jié)構(gòu)體的成員,可以通過結(jié)構(gòu)變量訪問,即st.i,也可以用等價的指針形式,即(*p).i和p->i。
59.A解析:本題中的else語句和if語句之間有兩條語句,并且未用大括號括起來,故編譯通不過。所以應(yīng)該選擇A。
60.D解析:C語言中規(guī)定:一個數(shù)組名代表它的起始地址.本題中,定義了一個長度為10的數(shù)組a并賦初值,數(shù)組名a就是數(shù)組的起始地址,由于數(shù)組下標(biāo)是從。開始,因此a[0]地址也是a的值,a[1]的地址可以用a+1表示,也就是說a+1指向數(shù)組a中下標(biāo)為1的元素,同樣a+1是a[i]的地址,*p=&a[3]表明指針變量p指向元素a[3],即p指向數(shù)組a的第4個元素4,p[5]的值應(yīng)為數(shù)組a中的第9個元素的值即a[8]的值,即p[5]=9,所以b=9。所以,4個選項中選項D符合題意。
61.B題目中的程序包括主程序main和fun函數(shù)。主程序中定義了一個數(shù)組a,并賦給了初值。通過調(diào)用fun函數(shù),對數(shù)組a中的值進(jìn)行更改操作,最后要求的結(jié)果是輸出數(shù)組a中a[3]~a[7]的值。解決本題的關(guān)鍵在于清楚地理解fun函數(shù)的功能。fun函數(shù)有3個形參,包括1個整型數(shù)組a[],2個整型變量n和m。fun函數(shù)的功能是將數(shù)組a[i+1]的值等于a[i]的值,i的初始值大小為m,依次減1,直到數(shù)值等于n。主函數(shù)調(diào)用fun函數(shù)時,輸入的實參為(a,3,7),即fun函數(shù)要將數(shù)組a[i+1]的值等于a[i]的值,i的取值范圍從7到3,如a[8]=a[7]。fun函數(shù)執(zhí)行完畢,數(shù)組a中的值變?yōu)?,2,3,4,4,5,6,7,9,10。輸出a[3]~a[7]的值為4,4,5,6,7。
62.B
63.C本題的考查點是查找程序運行錯誤的原因。主要考查運算中字符的轉(zhuǎn)換。初看此題,可能不太容易發(fā)現(xiàn)錯誤,該題的運行結(jié)果是1.0000,算法錯誤。s=s+1/n;1/2=0,因為n為整型,所以1/n都為0。這就是導(dǎo)致本題出錯的原因。s=s+1/n應(yīng)改為s=s+1.0/n。
64.B本題考查的是指針作為函數(shù)的參數(shù)和函數(shù)的調(diào)用。題目中定義了一個指針變量作為函數(shù)f的形參。主函數(shù)main中調(diào)用f函數(shù),當(dāng)i=0時,執(zhí)行語句(*q)++,此處*q代表的就是數(shù)組元素a[O]的值,即將1進(jìn)行加1操作;當(dāng)i=1時,q仍指向數(shù)組元素a[0]的地址,因為在函數(shù)f中并未對指針變量q作任何變動,也即*q仍代表了數(shù)組元素a[0]的值,所以此次(*q)++即2+1,所以a[O]的值變?yōu)?;……直到i=4時,執(zhí)行(*q)++(即5+1)后a[0]的值變?yōu)?。所以最后的輸出結(jié)果為:6,2,3,4…5
65.CC語言的存儲類型為auto、register、extern、static。下面分別解釋每種存儲類型的含義。auto:函數(shù)中的局部變量,動態(tài)地分配存儲空間,數(shù)據(jù)存儲在動態(tài)存儲區(qū)中,在調(diào)用該函數(shù)時,系統(tǒng)會給它們分配存儲空間,在函數(shù)調(diào)用結(jié)束后自動釋放這些存儲空間。register:為了提髙效率,C語言允許將局部變量的值放在CPU的寄存器中,這種變量叫“寄存器變量”,只有局部自動變量和形參可以作為寄存器變量。extern:外部變量(即全局變量)是在函數(shù)的外部定義的,它的作用域為從變量定義處開始到本程序文件的末尾。如果外部變量不在文件的開頭定義,其有效的作用范圍只限于定義處到文件末尾。static:靜態(tài)局部變量,屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元,在程序整個運行期間都不釋放。故本題答案為C選項。
66.D
67.D軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,測試要以查找錯誤為中心,而不是為了演示軟件的正確功能,也不是為了評估軟件或改正錯誤,因此本題答案為D)。
68.A解析:本題考查的重點是typedef的理解運用。C語言允許通過typedef為數(shù)據(jù)類型定義新名字,但是,它并非是生成新的數(shù)據(jù)類型,因此選項A是錯誤的。
69.D
\n程序執(zhí)行在for循環(huán),當(dāng)i=p時,i中放的是P的地址,類型不符合,因此輸出隨機(jī)數(shù),故選擇D進(jìn)項.
\n
70.D程序調(diào)試是由程序開發(fā)者完成診斷和改正程序中的錯誤的過程;軟件測試是由專門的測試人員完成,是發(fā)現(xiàn)錯誤而執(zhí)行程序的過程;軟件維護(hù)是指軟件系統(tǒng)交付使用以后,為了改正錯誤或滿足新的需要而修改軟件的過程,是軟件生存周期中非常重要的一個階段。
71.B本題中a>b的條件不滿足,所以不執(zhí)行逗號表達(dá)式a=b,b=c;的操作,而是執(zhí)行c=a操作,即c的值勾10。
72.C耦合性與內(nèi)聚性是模塊獨立與否的兩個定性標(biāo)準(zhǔn),耦合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各模塊的內(nèi)聚性越強(qiáng),則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計,應(yīng)盡量做到高內(nèi)蒙、低耦合,即減弱模塊之間的耦合性而提高模塊內(nèi)的內(nèi)聚性,這樣有利于提高模塊的獨立性。
73.B
74.D解析:要正確計算函數(shù)f=n!,由n!的數(shù)學(xué)定義可知n!=n*(n-1)*(n-2)*……*1。在選項A)中,由于f的初值為0,在for循環(huán)語句中,f依次乘以1,2,3,……,n。最后計算f=n!=O,所以選項A)不正確。在選項B)中,f的初值為1,在for循環(huán)語句中,f依次乘以1,2,3,……,(n-1)。最后計算得到f=(n-1)!,所以選項B)不正確。在選項C)中,f的初值為1,在for循環(huán)語句中,f依次乘以n,n+1,n+2,……,所以選項C)不正確。在選項D)中,f的初值為1,在for循環(huán)語句中,f依次乘以n,n-1,n-2,……,2。最后計算f=n!,所以選項D)正確。
75.A
76.A解析:本題中定義一個全局變量a和一個局部變量a。局部變量和全局變量的不同在于,局部變量的存儲單元都是在進(jìn)入這些局部變量所在的函數(shù)體(或復(fù)合語句)時生成,退出其所在的函數(shù)體(或復(fù)合語句)時消失,而全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域從變量定義的位置開始,到整個源文件結(jié)束為止。若全局變量和某一函數(shù)中的局部變量同名,則在該函數(shù)中,此全局變量被屏蔽,在該函數(shù)內(nèi),起作用的將是局部變量,與同名的全局變量不發(fā)生任何關(guān)系。在程序中首先定義了變量s并賦值為0,接著在嵌套的復(fù)合語句{}中定義了變量a并賦初值為5,接著執(zhí)行語句s+=a+a;在這條語句中a加1,但表達(dá)式a++還是原來的值,故s=s+5,s為5,程序執(zhí)行到外層,此時{}內(nèi)定義的變量a不再有效,此時的變量a為{}之前定義的且初值為3,接著執(zhí)行{}后面的語句s+=a++;相當(dāng)于執(zhí)行語句s=s+(++);即s=5+3,最后值為8,所以最后輸出的s值為8。所以4個選項中A正確。
77.D
78.D第一次:x=0,y=5,z=3,z>0,z--=2,++x=1<5,所以執(zhí)行y--=4,y=y-1=4-1=3;
第二次:x=1,y=4,z=2,z>0,z--=1,++x=2<5,所以執(zhí)行y--=2,y=y-1=2-1=1;
第三次:x=2,y=3,z=1,z>0,z--=0,++x=3<5,所以執(zhí)行y--=0,y=y-1=0-1=-1;
第四次:x=3,y=2,z=0,z>0不成立,z--=-1,y--=-2退出循環(huán)。
79.D
80.C
81.(1)錯誤:fun(intn);
正確:fun(intn)
(2)錯誤:if(n=1)
正確:if(n==1)
【解析】根據(jù)C語言的語法規(guī)則,函數(shù)定義之后是不加分號的。由整個程序看,函數(shù)fun()是函數(shù)定義。因此“fun(intn);”應(yīng)改為“fun(intn)”;表達(dá)式n-1表示的是將1賦給變量n,顯’然是不對的。這里應(yīng)該判斷變量n是否等于l,因此“if(n=1)”應(yīng)改為“if(n==1)”。
82.
【解析】本題考查的是for循環(huán)和指針變量。通過for循環(huán)實現(xiàn)對數(shù)組的遍歷,形參iilax和d都是指針型變量,所以引用它們指向的變量時要進(jìn)行指針運算。先有*max=a[0],在遍歷中如果遇到比max大的元素,則將a[i]賦值給max,下標(biāo)i賦值給*d。循環(huán)語句用來遍歷數(shù)組元素,然后通過條件語句比較數(shù)組元素找到最大值。
2021年廣東省廣州市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.有下列程序:
程序執(zhí)行后的輸出結(jié)果是()。A.3,7,3,7B.7,3,7,3C.3,7,7,3D.7,3,3,7
2.簡單的交換排序方法是()。
A.快速排序B.選擇排序C.堆排序D.冒泡排序
3.若變量均已正確定義并賦值,以下合法的C語言賦值語句是()。
A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:
4.若有定義“doublex,y,*px,*py;”,執(zhí)行了“px=&x;py=&y;”之后,正確的輸入語句是()。
A.scanf(“%lf%le”,px,py);
B.scanf(“%f%f”,&x,&y);
C.scanf(“%f%f”,x,y);
D.scanf(“%lf%lf”,x,y);
5.現(xiàn)在有16枚外形相同的硬幣,其中一枚是假幣,且已知假幣比真幣重量輕。先給定一架沒有砝碼的天平,問至少需要多少次稱量才能找到這枚假幣?
A.3B.4C.5D.6
6.循環(huán)隊列存儲在數(shù)組A[0..m]中,則入隊時的操作為()。
A.rear=rear+1
B.rear=(rear+1)mod(m-1)
C.rear=(rear+1)modm
D.rear=(rear+1)mod(m+1)
7.運行下列程序,若從鍵盤輸入字符“a”,則輸出結(jié)果是()。
charc;
c=getchar;
if(c>=a&&c<=g)c=c+4:
elseif(c>=9&&c<=2)c=c-21:
elseprintf("inputerror!\n");
putchar(c);
A.fB.tC.eD.d
8.
9.算法的空間復(fù)雜度是指()。
A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.執(zhí)行算法所需要的存儲空間
10.隊和棧的主要區(qū)別是________
A.邏輯結(jié)構(gòu)不同B.存儲結(jié)構(gòu)不同C.所包含的運算個數(shù)不同D.限定插入和刪除的位置不同
11.在下列幾種排序方法中,要求內(nèi)存量最大的是______。
A.插入排序B.選擇排序C.快速排序D.歸并排序
12.在長度為n的順序存儲的線性表中,刪除第i個元素(1≤i≤n)時,需要從前向后依次前移____個元素。
A.n-iB.n-i+1C.n-i-1D.i
13.有三個關(guān)系R、S和T如下:由關(guān)系R和S得到關(guān)系T的操作是()。A.自然連接B.交C.除D.并
14.以下有關(guān)scanf函數(shù)的敘述中錯誤的是()。
A.在scanf函數(shù)的格式字符前既可以加入正整數(shù)指定輸入數(shù)據(jù)所占的寬度,也可以對實數(shù)指定小數(shù)位的寬度
B.scanf函數(shù)有返回值,其值就是本次調(diào)用scanf函數(shù)時正確讀入的數(shù)據(jù)項個數(shù)
C.scanf函數(shù)從輸入字符流中按照格式控制指定的格式解析出相應(yīng)數(shù)據(jù),送到指定地址中
D.在scanf函數(shù)中的格式控制字符串不會輸出到屏幕上
15.有以下程序:#include<stdio.h>main(){inta=-2,b=0;while(a++++b);printf("%d,%d\n",a,b);}程序運行后的輸出結(jié)果是()。A.1,3B.0,2C.0,3D.1,2
16.為了避免在嵌套的條件語句ifelse中產(chǎn)生二義性,C語言規(guī)定,else子句總是與()配對。
A.縮排位置相同ifB.其前面最近的ifC.其后面最近的ifD.同一行上的if
17.下列運算符中優(yōu)先級最高的是()。
A.!B.%C.-=D.&&
18.在數(shù)據(jù)庫設(shè)計中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()。A.需求分析階段B.概念設(shè)計階段C.邏輯設(shè)計階段D.物理設(shè)計階段
19.已知各變量的類型說明如下則以下不符合C語言語法的表達(dá)式是()。A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)
20.以下敘述中正確的是()。
A.預(yù)處理命令行必須位于C源程序的起始位置
B.在C語言中,預(yù)處理命令行都以“#”開頭
C.每個C程序必須在開頭包含預(yù)處理命令行:#include
D.C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能
二、2.填空題(20題)21.設(shè)有以下定義
stnctss
{intinfo;sEruc5ss*link;}x.y,z;
且已建立如下圖所示鏈表結(jié)構(gòu):
請寫出刪除結(jié)點y的賦值語句______。
22.下列程序的輸出結(jié)果是【】。
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
dp=x*x-y*y;
}
main()
{inta=4,b=3,c=5,d=6;
t(a,b,c,d);
printf("%d\n",c,d);
}
23.數(shù)據(jù)的安全性是指保護(hù)數(shù)據(jù)以防止【】用戶的使用造成的數(shù)據(jù)泄密和破壞。
24.下面程序的功能是調(diào)用sub函數(shù)計算數(shù)組a中字符串的長度,請?zhí)羁铡?/p>
sub(chars[])
{intn;
for(n=0;【】n++);
return【】;
}
main()
{char*a;intk;
gets(a);
【】
printf("%d",k);
25.下面程序的運行結(jié)果是______。
#include<stdio.h>
#defineSIZE12
main()
{chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]]='A'+i+321;
sub(s,7,SLZE-1);
for(i=0;i<SIZE;i++)printf("%c",s[i]);
printf("\n");}
sub(char*a,inttl,intt2)
{charCh;
while(t1<t2)
{ch=*(a+t
26.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達(dá)式【】。
27.對于長度為n的順序存儲的線性表,當(dāng)隨機(jī)插入和刪除一個元素時,需平均移動元素的個數(shù)為【】。
28.若有定義inta=10,b=9,c=8;,接著順序執(zhí)行下列語句,變量b中的值是【】。
c=(a-=(b-5));
c=(a%11)+(b=3);
29.表達(dá)式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的數(shù)據(jù)類型為______。
30.在運算過程中,能夠使空表與非空表的運算統(tǒng)一的結(jié)構(gòu)是【】。
31.數(shù)據(jù)庫保護(hù)分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。
32.以下程序輸出的最后一個值是【】。
intff(intn)
{staticintf=1;
f=f*n;
returnf;
}
main()
{inti;
for(i=1;i<5;i++)printf("%d\n",ff(i));}
33.表示""整數(shù)x的絕對值大于5""時值為""真""的C語言表達(dá)式是【】。
34.與結(jié)構(gòu)化需求分析方法相對應(yīng)的是【】方法。
35.一個模塊直接訪問另一個模塊的內(nèi)容,稱為【】藕合。
36.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>
main()
{inti,j,k;
k=0;i=j=【】;
k+=-(i+j);printf("%d\n",k);
}
37.數(shù)據(jù)庫系統(tǒng)的主要特點為數(shù)據(jù)集成性、數(shù)據(jù)的高_(dá)_____和低冗余性、數(shù)據(jù)獨立性和數(shù)據(jù)統(tǒng)一管理和控制。
38.下面程序執(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);
}
39.若a是int型變量,則表達(dá)式(a=2*3,a*2),a+6的值為______。
40.在兩種基本測試方法中,【】測試的原則之一是保證所測模塊中每一個獨立路徑至少要執(zhí)行一次。
三、1.選擇題(20題)41.已知字符′A′的ASCII碼值是65,字符變量cl的值是′A′,c2的值是′D′。執(zhí)行語句printf("%d,%d",c1,c2-2);后,輸出結(jié)果是
A.A,BB.A,68C.65,66D.65,68
42.有以下程序:main(){intm,n,P;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d\n",m,n,p);}若想從鍵盤上輸入數(shù)據(jù),使變量m中的值為123,n中的值為456,p中的值為789,則王確的輸入是()。
A.m=123n=456p=789
B.m=123n=456p=789
C.m=123,n=456,P=789
D.123456789
43.執(zhí)行下列程序后,輸出的結(jié)果是()。
#include<stdio.h>
#defineS(X)X*X
voidmain()
{ihta=9,k=3,m=2;
a/=S(k+m)/S(k+m);
printf("%d",A);
}
A.1B.4C.9D.0
44.以下程序段的輸出結(jié)果為()。staticchara[]="programme";char*p;p=a;for(p=a;p<a+8;p+=2)putchar(*p);
A.programmeB.pormC.有語法錯誤D.prog
45.若有下列定義(設(shè)int類型變量占2個字節(jié)):
inti=8,j=9;
則下列語句:
printf("i=%u,j=%x\n".i,j);
輸出的結(jié)果是()。
A.i=8,j=9B.8.9C.89D.i=8,i=8
46.若變量x、y已正確定義并賦值,以下符合C語言語法的表達(dá)式是A.++x,y=x--B.x+1=yC.x=x+10=x+yD.double(x)/10
47.冒泡排序在最壞情況下的比較次數(shù)是()。
A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2
48.將E-R圖轉(zhuǎn)換到關(guān)系模式時,實體與聯(lián)系都可以表示成()
A.屬性B.關(guān)系C.記錄D.碼
49.有以下程序main(){inta=7,b=8,*p,*q,*r;p-&a;q=&b;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q,a,b);程序運行后的輸出結(jié)果是
A.8,7,8,7B.7,8,7,8C.8,7,7,8D.7,8,8,7
50.有定義語句:chars[10];,若要從終端給s輸入5個字符,錯誤的輸入語句是
A.sets(&s[0]);
B.scarf("%s",s+1);
C.gets(s);
D.scanf("%s",s[1]);
51.設(shè)有如下定義intx=10,y=3,z;則語句printf("%d\n",z=(x%y,x/y));的輸出結(jié)果是()
A.3B.0C.4D.1
52.閱讀下列程序,則執(zhí)行后的結(jié)果為#include"stdio.h"main(){intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf("%x,%x\n",c[2][2],*(*(c+1)+1));}
A.3e,6B.62,5C.56,5D.3E,6
53.設(shè)fp為指向某二進(jìn)制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp)的返回值為______。A.EOFB.非0值C.0D.NULL
54.請讀程序:#include<stdio.h>main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}printf("%d\n",a);}上面程序的輸出結(jié)果是()。
A.7B.8C.9D.10
55.閱讀下面程序段,則執(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;}
A.AB.MC.ND.L
56.若有以下的定義和語句:main(){inta[4][3]*p[4],j;for(j=0;j<4;j++)p[j]=a[j];}則能表示數(shù)組元素的表達(dá)式是______。
A.*(p[1])B.a[4][3]C.a[1]D.*(p+4)[1]
57.若有以下定義和語句#include<stdio.h>inta=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NULL;則以下選項中錯誤的語句是
A.*q=0;B.w=p;C.*p=a;D.*p=*w;
58.若有下列說明和語句,則對結(jié)構(gòu)體變量st中成員i的引用方式不正確的是()。Structstu{inti;intname;}st,*p;p=&st;
A.st.iB.*p.iC.(*p).iD.p->i
59.對下述程序,正確的判斷是()。main(){inta,b;scanf("%d",&a);scanf("%d",&b);if(a>b)a+=b;b++;elseb+=a;a++;printf("%d,%d",a,b);}
A.有語法錯誤,不能通過編譯
B.若輸入數(shù)據(jù)2和5,則輸出3和7
C.若輸入數(shù)據(jù)5和2,則輸出7和3
D.若輸入數(shù)據(jù)5和5,則輸出6和10
60.有以下程序段:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是
A.5B.6C.8D.9
四、選擇題(20題)61.有以下程序
#defineN15
fun(inta[],intn,intm)
{inti,j;
for(i=m;i>=n;i--)
a[i+1]=a[i];
}
main()
{inti,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,3,7);
for(i=3;i<8;i++)
printf("%d",a[i]);
}
程序的運行結(jié)果是A.A.45678
B.44567
C.45567
D.45677
62.
63.要求以下程序的功能是計算:s=1+1/2+1/3+…+1/100。
程序運行后輸出結(jié)果錯誤,導(dǎo)致錯誤結(jié)果的程序行是()。
A.s=1.0;
B.
C.S=S+1/n;
D.
64.有以下程序:
程序運行后的輸出結(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,
65.在c語言中,只有在使用時才占用內(nèi)存單元的變量,其存儲類型是()。
A.auto和static
B.extern和register
C.auto和register
D.static和register
66.
67.軟件測試的目的是()。
A.評估軟件可靠性B.發(fā)現(xiàn)并改正程序中的錯誤C.改正程序中的錯誤D.發(fā)現(xiàn)程序中的錯誤
68.以下關(guān)于typedef的敘述錯誤的是()。
A.用typedef可以增加新類型
B.typedef只是將已存在的類型用一個新的名字來代表
C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名
D.用typedef為類型說明一個新名,通常可以增加程序的可讀性
69.
下列程序執(zhí)行后的輸出結(jié)果是()。
main
{inta[3][3],*p,i};
p=&a[0][0];
for(i=p;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
A.3B.6C.9D.隨機(jī)數(shù)
70.下列敘述中正確的是()。
A.軟件測試應(yīng)該由程序開發(fā)者來完成
B.程序經(jīng)調(diào)試后一般不需要測試
C.軟件維護(hù)只包括對程序代碼的維護(hù)
D.以上三種說法都不對
71.有以下程序段:
程序運行后的輸出結(jié)果是()。
A.a=10b=50C=30
B.a=10b=50c=10
C.a=10b=30c=10
D.a=50b=30c:50
72.軟件設(shè)計中衡量模塊獨立性的度量標(biāo)準(zhǔn)是()。
A.抽象和信息隱蔽B.局部化和封裝化C.內(nèi)聚性和耦合性D.激活機(jī)制和控制方法
73.
74.設(shè)變量已正確定義,則下列能正確計算f=n!的程序段是()。
A.f=0;for(i=1;i<=n;i++)f*=i;
B.f=1;for(i=1;i<n;i++)f*=i;
C.f=1;for(i=n;i>1;i++)f*=i;
D.f=1;for(i=n;i>=2;i--)f*=i;
75.
76.有以下程序inta=3;main(){ints=0;{inta=5;s+=a++;}s+=a++;printf("%d\n",s);}程序運行后的輸出結(jié)果是______。
A.8B.10C.7D.11
77.
78.有以下程序:
main()
{intx=0,y=5,z=3;
while(z-->0&&++x<5?x:y--)y=y-1
Printf("%d,%d,%d\n",x,y,z);
}
程序執(zhí)行后的輸出結(jié)果是()。
A.3,2,0B.3,2,-1C.4,3,-1D.3,-1,-2
79.
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是按以下遞歸公式求函數(shù)值。例如,當(dāng)給n輸入3時,函數(shù)值為60;當(dāng)給n輸入6時,函數(shù)值為480。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫函數(shù)fun,其功能是:找出一維整型數(shù)組元素中最大的值所在的下標(biāo),并通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。
主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值。index存放最大值所在元素的下標(biāo)。
注意:部分源程序給出如下。
請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。
試題程序:
參考答案
1.C程序定義兩個整型變量i、j,初值為3,7。另外,定義兩個整型指針變量p、q,其中p指向i,q指向j。將i、j的地址傳給swap函數(shù)。在swap函數(shù)中,a指向i,b指向j。通過臨時變量t交換a和b指向的值,此時a指向的實參i、b指向的實參j的值發(fā)生了交換。即a指向i的值為7,b指向j的值為3;再通過臨時變量tp交換a和b的指針值,使得a指向j,b指向i。所以swap中輸出a指向的值為3(j),b指向的值為7(i);swap函數(shù)調(diào)用結(jié)束后,輸出p和q指向的值,即i、j的值為7、3。所以程序輸出:3,7,7,3。本題答案為C選項。
2.D解析:所謂的交換類排序方法是指借助數(shù)據(jù)元素之間的互相交換進(jìn)行排序的一種方法,包括冒泡排序和快速排序,冒泡排序是一種最簡單的交換排序方法,它通過相鄰元素的交換,逐步將線性表變成有序。
3.AB選項中運算符“%”的運算對象為整數(shù)。C選項中不能將變量賦給表達(dá)式“x+n”。D選項中不能將表達(dá)式“4+1”賦給常量5。故本題答案為A選項。
4.A因為x和y都是double型數(shù)據(jù),輸入時的格式字符應(yīng)為%lf,B、C選項錯誤。D選項中的“scanf(“%lf%lf”,x,y);”應(yīng)為“scanf(“%lf%lf”,&x,&y);”。故本題答案為A選項。
5.A
6.D
7.C
\ngetchar函數(shù)是讀取鍵盤的輸入函數(shù),本題中輸入字母“a”,則c=a,判斷if條件,發(fā)現(xiàn)a>=a&&a<=g成立,則執(zhí)行下列語句:C=C+4,C得到的字符的ASCII碼值,退出if語句,通過putchar函數(shù)輸出字符。
8.C
9.D解析:算法的復(fù)雜度主要包括算法的時間復(fù)雜度和算法的空間復(fù)雜度。所謂算法的時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量;算法的空間復(fù)雜度一般是指執(zhí)行這個算法所需要的內(nèi)存空間。
10.D
11.D解析:快速排序的基本思想是,通過一趟排序?qū)⑴判蛴涗浄指畛瑟毩⒌膬刹?/p>
分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,再分別對這兩部分記錄繼
續(xù)進(jìn)行排序,以達(dá)到整個序列有序;插入排序的基本操作是指將無序序列中的各元素依
次插入到已經(jīng)有序的線性表中,從而得到一個新的序列;選擇排序的基本思想是:掃描整
個線性表,從中選出最小的元素,將它交換到表的最前面(這是它應(yīng)有的位置),然后對剩
下的于表采用同樣的方法,直到表空為止;歸并:排序是將兩個或兩個以上的有序表組合
成一個新的有序表。
注意:各種排序方法實現(xiàn)過程及實現(xiàn)機(jī)制。
12.A
13.C由圖所知,其中,C中
溫馨提示
- 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é)街舞課題申報書范文
- 課題申報書檢索怎么寫
- 體育校級課題申報書模板
- 單位家電清洗合同范例
- 課題申報書作業(yè)設(shè)計模板
- 廚房砌磚合同范本
- 體育強(qiáng)國課題申報書
- 數(shù)學(xué)作業(yè)課題申報書格式
- 買隨車吊合同范本
- 華為機(jī)器視覺好望系列產(chǎn)品介紹
- 多重耐藥護(hù)理查房
- 《旅游經(jīng)濟(jì)學(xué)》全書PPT課件
- 中國醫(yī)院質(zhì)量安全管理 第3-5部分:醫(yī)療保障 消毒供應(yīng) T∕CHAS 10-3-5-2019
- 安全評價理論與方法第五章-事故樹分析評價法
- CoDeSys編程手冊
- 幼兒園一日活動流程表
- 中國民俗知識競賽題(附答案和詳細(xì)解析)
- 散裝水泥罐體標(biāo)準(zhǔn)資料
- 原發(fā)性肝癌臨床路徑最新版
- 第3章一氧化碳變換
評論
0/150
提交評論