版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021-2022年貴州省遵義市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.
2.
3.
4.關(guān)于C語言中數(shù)的表示,以下敘述中正確的是()。
A.只有整型數(shù)在允許范圍內(nèi)能精確無誤地表示,實型數(shù)會有誤差
B.只要在允許范圍內(nèi)整型數(shù)和實型數(shù)都能精確地表示
C.只有實型數(shù)在允許范圍內(nèi)能精確無誤地表示,整形數(shù)會有誤差
D.只有用八進(jìn)制表示的數(shù)才不會有誤差
5.以下選項中合法的C語言常量是()。
A.2.0KbB.”C++’C.”\2.0D.1.01
6.與“y=(x>0?1:x<0?-1:0)”;的功能相同的if語句是()。A.A.if(x>0)y=1;elseif(x<0)y=1;else=""y="0;
B."x="">0)y=1;elseif(x<0)y=-l;else=""y="0;"
C.y="-l"x="">O)y=1;elseif(x=-0)y=0;elsey=-l;
D.y=0;if(x>=0)if(x>=0)y=1;elsey=-l;
7.有以下程序段:inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){casel:case3:printf("%d\n",n);break;case2:case4:print?("%d\n",n);continue;case():exit(0);}printf("%d\n",n);}以下關(guān)于程序段執(zhí)行情況的敘述,正確的是()。A.for循環(huán)語句固定執(zhí)行8次
B.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時結(jié)束循環(huán)操作
C.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時不做任何操作
D.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時結(jié)束程序運行
8.若有函數(shù)首部“intfun(doublex[10],int*n)”,則下列針對此函數(shù)的函數(shù)聲明語句中正確的是()。
A.intfun(double,int);
B.intfun(double*,int*);
C.intfun(double*x,intn);
D.intfun(doublex,int*n);
9.
10.在供應(yīng)關(guān)系中,實體供應(yīng)商和實體零件之間的聯(lián)系是()。
A.多對多B.一對一C.多對一D.一對多
11.在下列語句中,其含義為“q是一個函數(shù)指針,該指針指向整型數(shù)據(jù)”的定義語句是()。
A.int**q;B.int(*q);C.int*q;D.int*q;
12.若以下選項中的變量已正確定義,則正確的賦值語句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
13.已知各變量的類型說明如下則以下符合C語言語法的表達(dá)式是()。A.a+=a-=(b=4)*(a=3)B.a=a*3=2C.x%(-3)D.y=f1oat(i)
14.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當(dāng)運行時輸入:a<回車>后,以下敘述正確的是()。
A.變量c1被賦予字符a,c2被賦予回車符
B.程序?qū)⒌却脩糨斎氲?個字符
C.變量c1被賦予字符a,c2中仍是原有字符2
D.變量c1被賦予字符a,c2中將無確定值
15.設(shè)二叉排序樹中有n個結(jié)點,則二叉排序樹的平均查找長度為()。A.O(1)
B.O(log2n)
C.O(n)
D.(n2)
16.
17.第
11
題
若有定義:char*st="howareyou";下列程序段中正確的是
A.chara[11],*p;strcpy(p=a+1,&st[4]);
B.chara[11];strcpy(++a,st);
C.chara[11];strcpy(a,st);
D.chara[],*p;strcpy(p=&a[1],st+2);
18.已知各變量的類型說明如下則以下不符合C語言語法的表達(dá)式是()。A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)
19.若有以下定義和語句:chars[10]="abcd!",*s2="\nl23\\";Drintf("%d%d\n",strlen(sl),strlen(s2));則輸出結(jié)果是()。A.55B.105C.107D.58
20.下列能正確定義且賦初值的語句是()。
A.intn1=n2=1;
B.charC=99;
C.floatf=f+1;
D.doublex=1.2E5.6;
二、2.填空題(20題)21.在結(jié)構(gòu)化設(shè)計方法中,數(shù)據(jù)流圖表達(dá)了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個______實際上對應(yīng)一個處理模塊。
22.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>
main()
{inti,j,k;
k=0;i=j=【】;
k+=-(i+j);printf("%d\n",k);
}
23.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
#defineM5
#defineNM+M
main()
{intk;
k;N*N*5;printf("%d\n"k);
}
24.以下程序的功能是從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>
majn()
{FILE*fp;charch;
fp=fopen(______);
ch=fgetc(fp);
whle(!feof(fp)){putchar(ch);ch=f8etc(fp);}
putchar('\n');fclose(fp);
}
25.近年來形成了軟件開發(fā)的多種模式,大致有3種類型:基于瀑布模型的結(jié)構(gòu)化生命周期方法、基于動態(tài)定義需求的【】方法和基于結(jié)構(gòu)的面向?qū)ο蟮能浖_發(fā)方法。
26.“printf("%d\n",strlen("\t\"\023\xAB\nC"));”語句的輸出結(jié)果是()。
27.以下程序運行后的輸出結(jié)果是______。
fun(inta)
{intb=0;staticintc=3;
b++;c++;
return(a+b+c);
}
main()
{inti,a=5;
for(i=0;i<3;i++)printf("%d%d",i,fun(a));
printf("\n");
}
28.以下程序運行后的輸出結(jié)果是______。
voidswap(intx,inty)
{intt;
t=x;x=y;y=t;printf("%d%d",x,y);
}
main()
{inta=3,b=4;
swap(a,b);printf("%d%d\n",a,b);
}
29.以下程序通過函數(shù)指針p調(diào)用函數(shù)fun,請在填空欄內(nèi)寫出定義變量p的語句。
voidfun(int*x,int*y)
{……}
main()
{inta=10,b=20;
【】:
p=fun;p(&a,&b);
……
}
30.開發(fā)軟件所需要的高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象被人們稱之為【】。
31.—個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。
32.下列程序段的運行結(jié)果是______。
charstr[]="ABCD",*p=str;
printf("%d\n",*(p+3));
33.下面的程序是將從終端讀入的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(【】);
}
34.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。
35.表示“整數(shù)x的絕對值大于5”時值為“假”的C語言表達(dá)式是______。
36.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型的動態(tài)存儲單元______。
37.有以下程序:
intfa(intx){returnx*x;}
intfb(intx){returnx*x*x;}
intf(int(*f1)(),int(*f2)(),(intx)
{returnf2(x)-f1(x);}
main()
{inti;i=f(fa,fb,2);printf("%d\n",i);}
程序運行后,輸出結(jié)果是【】。
38.算法的復(fù)雜度主要包括【】復(fù)雜度和空間復(fù)雜度。
39.設(shè)x和y均為int型變量,且x=1,y=2,則表達(dá)式double(1+x/y)的值為【】。
40.若有下列定義和語句:
char*s1="12345",*s2="1234";
printf("%d\n",strlen(strcpy(s1,s2)));
則輸出結(jié)果為______。
三、1.選擇題(20題)41.下列二維數(shù)組初始化語句中,正確且與語句floata[][3]={0,3,8,0,9};等價的是
A.floata[2][]={{0,3,8},{0,9}};
B.floata[][3]={0,3,8,0,9,0};
C.floata[][3]={{0,3},{8,0},{9,0}};
D.floata[2][]={{0,3,8},{0,9,0}};
42.軟件工程的出現(xiàn)是由于()。A.A.程序設(shè)計方法學(xué)的影響B(tài).軟件產(chǎn)業(yè)化的需要C.軟件危機(jī)的出現(xiàn)D.計算機(jī)的發(fā)展
43.以下程序的輸出結(jié)果是______。main(){char*s="121";intk=0,a=0,b=0;do{k++;if(k%2==0){a=a+s[k]-'\0';continue;}b=b+s[k]-'\0';a=a+s[k]-'\0';}while(s[k+1]);printf("k=%da=%db=%d\n",k,a,b);}
A.k=3a=98b=49
B.k=3a=99b=50
C.k=2a=99b=50
D.k=2a=98b=49
44.在計算機(jī)中,算法是指()。
A.查詢方法B.加工方法C.解題方案的準(zhǔn)確而完整的描述D.排序方法
45.有以下程序main(){union{unsignedintn;unsignedcharC;}ul;u1.C='A';printf("%c\n",u1.n);}執(zhí)行后輸出結(jié)果是
A.產(chǎn)生語法錯B.隨機(jī)值C.AD.65
46.有下列程序main(){intt,a=1,b=5,c=-2;while(a>b>c){t=a;a=b;b=t;c++;}printf("%d,%d,%d",a,b,c);}程序輸出的結(jié)果是()。
A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2
47.結(jié)構(gòu)化分析方法是面向()的自頂向下、逐步求精進(jìn)行需求分析的方法
A.對象B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)流D.目標(biāo)
48.若有說明inta[3][4];,則a數(shù)組元素的非法引用是()A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]
49.設(shè)變量均已正確定義,若要通過scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式正確的是(注:□代表空格字符)()。
A.10□X□20□Y<回車>
B.10□X20□Y<回車>
C.10□X<回車>
D.10X<回車>20□Y<回車>20Y<回車>
50.下列程序是用來判斷數(shù)組中特定元素的位置所在。如果輸入如下整數(shù):876675896101301401980431451777#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,45l,777},k;clrscr();fun(a,10,&k);printf("%d,%d\n",k,a[k]);}則輸出結(jié)果為
A.7,431B.6C.980D.6,980
51.以下選項中非法的表達(dá)式是()。
A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1
52.以下正確的說法是
A.定義函數(shù)時,形參的類型說明可以放在函數(shù)體內(nèi)
B.return后邊的值不能為表達(dá)式
C.如果函數(shù)值的類型與返回值類型不一致,以函數(shù)值類型為準(zhǔn)
D.如果形參與實參類型不一致,以實參類型為準(zhǔn)
53.對于下述說明,不能使變量p->b的值增1的表達(dá)式是______。structexm{inta;intb;floatc}*p;
A.++p->bB.++(p++)->bC.p->b++D.(++p)->b++
54.有下列函數(shù):intfun(char*s){char*t=s;while(*t++);return(t-s);}該函數(shù)的功能是()。
A.比較兩個字符串的大小
B.計算s所指字符串占用內(nèi)存字節(jié)的個數(shù)
C.計算s所指字符串的長度
D.將s所指字符串復(fù)制到字符串t中
55.已有定義:inti,a[10],*p;則合法的賦值語句是()。
A.p=100;B.p=a[5];C.p=a[2]+2;D.p=a+2;
56.設(shè)有定義:int(*ptr)();則以下敘述中正確的是()
A.ptr是指向一維數(shù)組的指針變量
B.ptr是指向int型數(shù)據(jù)的指針變量
C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int數(shù)據(jù)
D.prt是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針
57.在結(jié)構(gòu)化程序設(shè)計方法中,下面哪種內(nèi)聚性最弱?
A.邏輯內(nèi)聚B.時間內(nèi)聚C.偶然內(nèi)聚D.過程內(nèi)聚
58.設(shè)有以下語句inta=1,b=2,c;c=a^(b<<2);執(zhí)行后,c的值為______。A.6B.7C.8D.9
59.在數(shù)據(jù)庫的兩級映射中,從概念模式到內(nèi)模式的映射一般由______實現(xiàn)。
A.數(shù)據(jù)庫系統(tǒng)B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫管理員D.數(shù)據(jù)庫操作系統(tǒng)
60.對長度為n的線性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為()。
A.log2nB.n/2C.nD.n+1
四、選擇題(20題)61.若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是
A.’a’<=c<=’z’B.(c>=’a’)||(c<=’z’)
C.(’a’<=c)and(’z’>=c)D.(c>=’a’)&&(c<=’z’)
62.分布式數(shù)據(jù)庫系統(tǒng)不具有的特點是
A.?dāng)?shù)據(jù)的物理分布性和邏輯整體性B.位置透明性和復(fù)制透明性
C.事物管理的集中性D.?dāng)?shù)據(jù)冗余
63.以下是正確C語言實型常量的是()。
A..e—1B.e一1C.一1eD.1e一1
64.若有定義和語句:
int*(*pp),*P,a=20,b=10;
pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,**PP);
則輸出結(jié)果是()。A.A.20,10B.20,20C.10,20D.10,10
65.有以下程序
A.357B.753C.369D.751
66.若函數(shù)調(diào)用時的實參為變量時,以下關(guān)于函數(shù)形參和實參的敘述中正確的是()。
A.函數(shù)的形參和實參分別占用不同的存儲單元
B.形參只是形式上的存在,不占用具體存儲單元
C.同名的實參和形參占同一存儲單元
D.函數(shù)的實參和其對應(yīng)的形參共占同一存儲單元
67.下面不屬于軟件設(shè)計原則的是()。
A.抽象B.模塊化C.自底向上D.信息隱蔽
68.若有說明:inta[3][4]={0};,則下面正確的敘述是
A.只初始化了第一個元素,即a[0][0]可得到初值0
B.此初始化語句不正確
C.?dāng)?shù)組a中各元素都可得到初值,但其值不一定為0
D.?dāng)?shù)組a中每個元素均可得到初值0
69.有以下程序
#include<stdio.h>
#defineP24;
#defineS(x)P*x+x;
main()
{inta=2,b=2;
printf("%d\n",S(a+b));
}
程序的運行結(jié)果是
A.程序編譯運行時報錯,無法輸出B.54
C.96D.100
70.以下選項中與
71.
72.HTTP協(xié)議的消息有()兩種類型。
A.發(fā)送消息和接收消息B.請求消息和響應(yīng)消息C.消息頭和消息體D.實體消息和控制消息
73.
若有下列定義(設(shè)int類型變量占2個字節(jié)):
inti=8,j=9;
則下列語句:
printf("i=%%d,j=%%d\n",i,j);
輸出的結(jié)果是()。
A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9
74.
75.
76.C語言中的標(biāo)識符分為關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符,以下敘述正確的是()。
A.預(yù)定義標(biāo)識符(如庫函數(shù)中的函數(shù)名)可用做用戶標(biāo)識符,但失去原有含義
B.用戶標(biāo)識符可以由字母和數(shù)字任意順序組成
C.在標(biāo)識符中大寫字母和小寫字母被認(rèn)為是相同的字符
D.關(guān)鍵字可用做用戶標(biāo)識符,但失去原有含義
77.下列敘述中正確的是()。
A.為了建立一個關(guān)系,首先要構(gòu)造數(shù)據(jù)的邏輯關(guān)系
B.表示關(guān)系的二維表中各元組的每一個分量還可以分成若干數(shù)據(jù)項
C.一個關(guān)系的屬性名表稱為關(guān)系模式
D.一個關(guān)系可以包括多個二維表
78.有以下程序:
fun(inta[],intm,intn)
{inti;
for(i=m;i<n;i++)
a[i+1]=a[i]+3;
returna[i+1];
}
voidmain()
{
inti,a[6]={2,4,6,8,10,12};
fun(a,2,5);
for(i=0;i<6;i++)
printf("%d",a[i]);
}
程序運行后輸出的結(jié)果是()。
A.24691315B.24691215C.249121518D.249121415
79.
有下列程序:
main
{intk=5,n=0;
while(k>0)
{switch(k)
{dcfault:break;
case1:n=n+k;
case2:
case3:n+=k;
}
k--;
}
printf("%d\n".n);
}
程序運行后的輸出結(jié)果足()。
A.0B.4C.6D.7
80.以下結(jié)構(gòu)體類型說明和變量定義中正確的是()。
A.
B.
C.
D.
五、程序改錯題(1題)81.給定程序中,函數(shù)proc()的功能是:使數(shù)組中的元素的值增加10倍。修改其中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),其功能是:利用以下所示的簡單迭代方法求方程cos(x)-x=0的一個實根。
xn+1=COS(xn)
迭代步驟如下:
(1)取x1初始值為0.0;
(2)x0=x1,把?X1的值賦給x0;
(3)x1=cos(xO),求出一個新的x1;
(4)若x0-x1的絕對值小于0.000001,則執(zhí)行步驟
(5),否則執(zhí)行步驟(2);
(5)所求x1就是方程cos(x)-x=0的一個實根,作為函數(shù)值返回。
程序?qū)⑤敵鼋Y(jié)果root=0.739085。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
參考答案
1.D
2.A
3.C
4.A當(dāng)數(shù)據(jù)類型是實數(shù)時,在存儲過程中,當(dāng)小數(shù)部分無限長時,會存在小數(shù)部分的截斷,會存在誤差,所以答案選擇A。
5.DC語言中,常量有整型常量、實型常量、字符常量和字符串常量等。整型常量和實型常量又稱為數(shù)值型常量。其中整型常量只能用數(shù)字表示,不帶小數(shù)點。實型常量必須用帶小數(shù)點的數(shù)表示,所以選項A錯誤,選項D正確;字符型常量是用單引號標(biāo)注的單個字符,字符串常量是用雙引號標(biāo)注的若干個字符,選項B、C錯誤。故本題答案為D選項。
6.By=(x=)071:x<0?-1:0)中有兩個三目運算符,因此按從右到在的順序運算,可寫成y=(x>071:(x<0?-1:0)),故選擇8選項。
7.A程序中的if循環(huán)是固定地執(zhí)行8次,屬于計數(shù)器,程序是從中隨機(jī)抽取一個數(shù),然后對5進(jìn)行求余再輸出,共抽取8個數(shù)。所以答案為A。
8.B函數(shù)聲明有兩種形式:①類型說明符函數(shù)名(類型形參,類型形參……);②類型說明符被調(diào)函數(shù)名(類型,類型……)。由于函數(shù)首部為“intfun(doublex[10],int*n)”。故本題答案為B選項。
9.D
10.A一家供應(yīng)商可提供多種零件,一種零件也可被多家供應(yīng)商提供。所以實體供應(yīng)商和實體零件之間的聯(lián)系是多對多。本題答案為A選項。
11.B本題考查指針函數(shù)。其定義的基本格式為:類型說明符(*函數(shù)名)?!邦愋驼f明符”表示返回的指針值指向的數(shù)據(jù)類型。
12.C解析:賦值的一般形式為:變量名:表達(dá)式;,賦值的方向為由右向左,即將:右側(cè)表達(dá)式的值賦給:左側(cè)的變量,執(zhí)行步驟是先計算再賦值。選項A中運算符%的運算對象必須為整數(shù),而選項A中26.8不為整數(shù),故選項A不正確;選項B將一個變量賦值給一個常量,這在C語言中是不允許的,故選項B不正確;選項D中也是將一個常量3賦值給一個常量,故選項D不正確;所以,4個選項中選項C符合題意。
13.A
14.A解析:本題考查的是getchar()函數(shù)。getchar()函數(shù)執(zhí)行時將從鍵盤緩沖區(qū)中讀取用戶的輸入,而不管輸入的是否可打印字符,所以當(dāng)輸入a<回車>后,鍵盤緩沖區(qū)被輸入的實際上是兩個字符:'a'和'\\n'。故選項A的說法是正確的。
15.B
16.A
17.A本題綜合考查字符數(shù)組的賦值和strcpy函數(shù)的用法。C語言不允許用賦值表達(dá)式對字符數(shù)組賦值,如下面的語句就是非法的:str1='China',如果想把“China”這5個字符放到數(shù)組str1中,除了逐個輸入外,還能使用strcpy函數(shù),該函數(shù)的功能是將一個字符串復(fù)制到一字符數(shù)組中。例如,strcpy(str1,'China');或strcpy(str1,str2);注意,不能企圖用以下語句來實行賦值(將str2的值傳給str1):str1=str2;不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。
strcpy函數(shù)的結(jié)構(gòu)是:strcpy(字符數(shù)組1,字符串2)
其中,需要注意的是,字符數(shù)組1的長度不應(yīng)小于字符串2的長度,“字符數(shù)組1”必須寫成數(shù)組名形式,如(str1),“字符串2”可以是字符數(shù)組名,也可以是字符串常量,不能用賦值語句將一個字符串常量或字符數(shù)組直接給一個字符數(shù)組。
18.A
19.A\\n和\\\\分別為轉(zhuǎn)義字符,各占據(jù)一個字符的位置。
20.B在c語言規(guī)定中,可以在定義變量的同時給變量賦初值,選項A中n2沒有定義;選項C中不能在賦值表達(dá)式的右邊出現(xiàn)變量本身,選項D中字母E后面的數(shù)應(yīng)該為整數(shù),所以不對。
21.加工加工解析:數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。其中的每一個加工對應(yīng)一個處理模塊。
22.-2-2解析:題目中定義并初始化了變量k為0,最后輸出k的值,要求為4,而在此期間只有k+=-(i+j);這條語句改變了k的值,即要求表達(dá)式-(i+j)的值為4。所以,答案應(yīng)該為-2,因為只有i=j=-2時,表達(dá)式-(i+j)的值才為4。
23.5555解析:宏替換不是函數(shù)調(diào)用,所以不能因為M被定義為5,而N被定義為M+M而武斷地認(rèn)為N的值就是5+5=10。宏替換就是簡單的字符串替換,以本題為例:因為N被定義為M+M,所以k=N*N*5;語句展開后為k=M+M*M+M*5;。又因為M被定義為5,所以再展開后為k=5+5*5+5*5;。現(xiàn)在不難計算出,這個表達(dá)式的結(jié)果為k=55。故最終輸出結(jié)果是55。
24.
25.原型化原型化
26.66解析:strlen()函數(shù)的作用是計算字符串的長度并作為函數(shù)的返回值,這里的長度不包括串尾的結(jié)束標(biāo)志\'\\0\'。\'\\t\'是轉(zhuǎn)義字符,代表橫向跳若干格;\'\\'\'是轉(zhuǎn)義字符,代表雙引號:\'\\023\'也只代表一個字符,而不管轉(zhuǎn)義字符后面有幾個符;\'\\xAB\'是以兩位十六進(jìn)制數(shù)AB表示的ASCII碼字符,只代表一個字符;\'\\n\'是轉(zhuǎn)義字符,代表回車換行。題中語句中的字符串有5個字符常量各代表一個字符,再加上字母C,所以返回的長度是6。
27.010111212010111212解析:本題考查的是靜態(tài)局部變量的運用。靜態(tài)局部變量的作用域與普通局部變量一樣,但它的生存期將延長到程序運行結(jié)束。本題的主函數(shù)中使用一個for循環(huán)輸出循環(huán)變量i和fun(a)的值,由于a的值一直沒被修改過,所以三次調(diào)用的都是fun(5)。第1次調(diào)用,b=0,c=3,所以返回值為5+1+4=10;第2次調(diào)用,因為c是靜態(tài)局部變量,它仍然保存著上次調(diào)用結(jié)束時的值4,而b重新被創(chuàng)建和初始化為0,所以返回值為5+1+5=11;同理,第3次調(diào)用返回的是12。所以,程序最終輸出為:010111212。
28.4334
29.void(*p)();void(*p)();解析:要定義p為指向函數(shù)的指針變量,需寫成void(*p)();,注意*p兩側(cè)的括弧不可以省略,表示P先與*結(jié)合,是指針變量,再與后面的()結(jié)合,表示此指針變量指向函數(shù),這個函數(shù)無返回值(同fun()函數(shù))。
30.軟件危機(jī)軟件危機(jī)
31.可重用性可重用性解析:繼承的優(yōu)點:相似的對象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從而大大減少了程序中的冗余,提高軟件的可重用性。
32.6868解析:本題考查如何用指針引用數(shù)組元素。本題先定義了一個指向字符型數(shù)組str的指針p,指針p指向數(shù)組str的首地址,p+3將指針指向str[3],*(p+3)指的是字符“D”,輸出時是以“%d”格式輸出的,即輸出其相應(yīng)ASCII碼值68。
33.\0s*p++\\0\r\ns\r\n*p++解析:本題先通過for循環(huán)從鍵盤讀入20個字符,然后賦值'\\0'作為字符串結(jié)束標(biāo)志,再使指針p指向字符串的首地址,最后通過while循環(huán)對字符串進(jìn)行掃描并輸出。
34.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DBMS)
35.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本題考查基本邏輯表達(dá),“整數(shù)x的絕對值大于5”時值為“假”,即整數(shù)x的絕對值小于等于5,也就是整數(shù)x要大于等于-5且要小于等于5。這里“且”用“與(&&)”表示,所以C語言表達(dá)式為:(x>-5)&&(x<5)。
36.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函數(shù)只有一個參數(shù),該參數(shù)指定了需要分配多少字節(jié)的內(nèi)存。然后將分配好的內(nèi)存塊的首地址作為void*(未知類型指針)返回.故標(biāo)準(zhǔn)的調(diào)用形式應(yīng)該寫成:
p(double*)malloc(sizeof(double));
37.44解析:在主函數(shù)中調(diào)用函數(shù)f,函數(shù)f有三個參數(shù),形參f1與f2分別是兩個指向函數(shù)的指針。在f中執(zhí)行f2(x)-f1(x),實際上是執(zhí)行了fb(2)-fa(2),故執(zhí)行i=(fa,fb,2)后i的值為23-22=4。
38.時間時間解析:算法的復(fù)雜度主要指時間復(fù)雜度和空間復(fù)雜度。所謂算法的時間復(fù)雜度,是指執(zhí)行算法所需要的計算工作量;算法的空間復(fù)雜度,一般是指執(zhí)行這個算法所需要的內(nèi)存空間。
39.11解析:本題考查兩個知識點:一是x/y的值為整型,即為0;二是數(shù)1是double類型。
40.44解析:strcpy(s1,s2)函數(shù)的作用是將字符串s2中的內(nèi)容拷貝到字符串s1中的內(nèi)容覆蓋。strlen()函數(shù)是求字符串的長度。本題實際上是要求s2字符串的長度,即是4。
41.B解析:在選項B)中,因為數(shù)組的第一維的數(shù)目不明確,所以理解會有歧義,可以理解為1行3列,或者2行3列等。所以選項B)錯誤。注意:數(shù)組中元素的引用。
42.C解析:軟件工程的基本概念。軟件工程概念的出現(xiàn)源自于軟件危機(jī)。為了消除軟件危機(jī),通過認(rèn)真研究解決軟件危機(jī)的方法,認(rèn)識到軟件工程是使計算機(jī)軟件走向工程科學(xué)的途徑,逐步形成了軟件工程的概念。
43.C解析:第1次循環(huán)中,k=1,不執(zhí)行if分支,s[k]=‘2’,因此b=2,a=2因s[k+1]=‘1’進(jìn)入第2次循環(huán),k=2,執(zhí)行if分支,s[k]=‘1’,使a=3,進(jìn)而提前結(jié)束本次循環(huán),s[k+1]=‘\\0’,則退出循環(huán),所以k=2,a=3,b=2。
44.CC?!窘馕觥坑嬎銠C(jī)算法是指解題方案的準(zhǔn)確而完整的描述,它的基本特征分別是:可行性、確定性、有窮性和擁有足夠的情報。
45.C解析:在定義共用體的同時,定義了一個共用體型變量u1,共占兩個字節(jié),有兩個成員n和c,兩個成員的首地址是相同的.因此給u1.c賦一個“A”,其實就是給無符號整型成員u1.n的低字節(jié)賦一個“A”,輸出u1.n的時候是以字符型的形式輸出,只輸出它的低地址的一個字節(jié),因此為“A”。所以,C選項為所選。
46.A解析:本題考查while循環(huán)。先判斷while循環(huán)的控制表達(dá)式是否成亢,發(fā)現(xiàn)a>b>c不成立,所以不執(zhí)行循環(huán)。直接輸出a、b、c的值。
47.CC?!窘馕觥拷Y(jié)構(gòu)化分析方法是面向數(shù)據(jù)流進(jìn)行需求分析的方法,采用自頂向下、逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。
48.D解析:本題定義a為3行×4列的數(shù)組,它可用的行下標(biāo)最大為2,列下標(biāo)最大為3。注意:a[0][4]超過了數(shù)組的范圍。注意:數(shù)組的下標(biāo)是從0開始的。
49.D解析:當(dāng)從鍵盤輸入字符,并且在格式說明中未制定寬度時,輸入字符(包括空格符、回車符、Tab符)將按順序賦予各輸入項。也就是說,輸入字符之間沒有間隔符,所以選項D是正確的。
50.D解析:本題中直接使用指針變量k,但在使用時要注意對k的指針運算。此外,一開始應(yīng)知道*k的值為數(shù)組中的某一下標(biāo)值,即*k=0,本函數(shù)的功能是找出數(shù)組中的最大元素的位置及最大元素的值。
51.D解析:選項A)在C語言中是一個合法的關(guān)系表達(dá)式,但它并不代表數(shù)學(xué)式o<=x<100。計算0<=x<100時,從左到右結(jié)合,先計算0<=x,其結(jié)果只能是0或1,然后再比較0<100或1<100。根據(jù)運算符的優(yōu)先級,選項B)先判斷j==0是否成立,其結(jié)果只能是0或1,然后再將0或1賦給i。選項C)中,(char)(65+3)為類型強(qiáng)制轉(zhuǎn)換,將整數(shù)型數(shù)據(jù)轉(zhuǎn)換為字符型。選項D)是將一個數(shù)據(jù)賦給一個表達(dá)式,等號左邊不合要求,所以錯誤。
52.C解析:選項A)中定義函數(shù)時,形參的類型說明應(yīng)該放在形參表列內(nèi)說明。老版本C語言中,對形參類型的聲明是放在函數(shù)定義的第2行,也就是不在第1行的括號內(nèi)指定形參的類型,而在括號外單獨指定。選項B)中return后面的值可以是一個表達(dá)式。選項D)中實參與形參的類型應(yīng)相同或賦值兼容。如果實參為整型而形參為實型,或者相反,則按不同類型數(shù)值的賦值規(guī)則進(jìn)行轉(zhuǎn)換,以形參類型為準(zhǔn)。
53.D解析:p->b應(yīng)作為一個整體看待,++p->b和p->b++都使變量b增1,++(p++)->b先使b增1,再使p后移,D中表達(dá)式的含義是使p+1所指結(jié)構(gòu)體變量中的成員b的值增1。
54.C解析:在函數(shù)fun(char*s)中,首先用字符指針變量t指向s,而循環(huán)語句while(*t++);的功能是使指針變量t指向字符串變量s的末尾,這時退出循環(huán),因而語句return(t-s);返回的就是字符串s所指字符串的長度。
55.D解析:本題考核的知識點是指針變量的賦值。本題中定義了一個整型數(shù)組a和一個整型指針變量P。選項A中將一個整型數(shù)賦值給一個指針變量,C語言規(guī)定,只能特地址賦給指針指針變量,故選項A不正確:選項B中a[5]為一數(shù)組元素,同樣不是一個地址,故選項B不正確;選項c中a[2]為一數(shù)組元素,同樣是一個整型數(shù)據(jù),不是個地址,故選項C不正確:選項D中數(shù)蛆名a代表數(shù)組首地址加2,代表第三個元素的地址,故選項D正確,所以,4個選項中選項D符合題意。
56.C
57.C解析:內(nèi)聚有很多種類,其中內(nèi)聚性由弱到強(qiáng)的順序為:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚。
58.D解析:此題考核的是C語言的位運算,有括號的先算括號內(nèi)的數(shù)據(jù),所以先對b進(jìn)行左移運算:b換算成二進(jìn)制0000\u30000010,左移后變?yōu)?000\u30001000,然后再與a進(jìn)行異或運算(參與運算的兩個對應(yīng)位相同,則為0,相異則為1)結(jié)果為0000\u30001001,換算成是進(jìn)制數(shù)結(jié)果為9。對于左移運算也可直接用此規(guī)則:左移1位相當(dāng)于該數(shù)乘以2,左移2位相當(dāng)于該數(shù)乘以22(上標(biāo))=4,依此類推。所以答案選D。
59.B解析:從概念模式到內(nèi)模式的映射一般由數(shù)據(jù)庫管理系統(tǒng)(DBMS)實現(xiàn)。
60.C本題考查的是順序查找。在進(jìn)行順序查找過程中,如果線性表中的第一個元素就是被查找元素,則只需做一次比較就查找成功,查找效率最高;但如果被查找的元素是線性表中的最后一個元素,或者被查找的元素根本就不在線性表中,則為了查找這個元素需要與線性表中所有的元素進(jìn)行比較,這是順序查找的最壞情況。所以對長度為n的線性表進(jìn)行順序查找,在最壞情況下需要比較n次。故本題答案為C。
61.D在本題中,首先定義了一個字符型變量c,然后要求找出能判斷c中字符為小寫字母的表達(dá)式。
選項A的表達(dá)式′a′<=c<=′z′是一個錯誤的表達(dá)式,系統(tǒng)在編譯時,會因為該語句報錯。
選項B的表達(dá)式(c>=′a′)||(c<=′z′)是判定變量c的字符是大于等于字符a的字符或者小于等于z的字符,這其實相當(dāng)于ASCII碼中所有的字符,不能完成題目的要求。
選項C的表達(dá)式(′a′<=c)and(′z′>=c)是一個錯誤的表達(dá)式,在C語言中,沒有定義一個and關(guān)鍵字,系統(tǒng)在編譯時會報錯。
選項D的表達(dá)式(c>=′a′)&&(c<=′z′)是判定變量c的字符同時具有大于等于字符a和小于等于z的特點,很顯然,這樣的字符是小寫字母。
通過上面的分析,我們可以知道本題正確的答案是D。
62.C分布式數(shù)據(jù)庫是一種將數(shù)據(jù)分布存儲,但數(shù)據(jù)在邏輯上保持整體性的一種數(shù)據(jù)庫。分布式數(shù)據(jù)庫系統(tǒng)具有以下幾個特點:
(1)數(shù)據(jù)的物理分布性。分布式數(shù)據(jù)庫的數(shù)據(jù)不是存儲在一個場地上,不是集中存儲,而是存儲在計算機(jī)網(wǎng)絡(luò)上多個場的設(shè)備上。
(2)數(shù)據(jù)的邏輯整體性。雖然數(shù)據(jù)分布在各個場地,但邏輯上是一個整體,它們被所有的用戶共享,并由一個DDBMS統(tǒng)一管理。
(3)位置透明性和復(fù)制透明性。位置透明性是指用戶不必關(guān)心數(shù)據(jù)的邏輯分區(qū),不必關(guān)心數(shù)據(jù)物理位置分布的細(xì)節(jié);而復(fù)制透明性是指用戶不用關(guān)心數(shù)據(jù)庫在網(wǎng)絡(luò)中各個結(jié)點的復(fù)制情況,被復(fù)制的數(shù)據(jù)的更新都由系統(tǒng)自動完成。
(4)場地自治性。各場地的數(shù)據(jù)由本地DBMS管理,具有自治處理能力,能執(zhí)行局部的應(yīng)用請求。
(5)數(shù)據(jù)冗余及冗余透明性。與集中式數(shù)據(jù)庫系統(tǒng)追求低冗余度不同,DDBS通過數(shù)據(jù)的適當(dāng)冗余來提高系統(tǒng)的可靠性、可用性和改善系統(tǒng)性能。但這種冗余對用戶是透明的,即用戶不必知道冗余的存在,冗余副本之間的數(shù)據(jù)一致性問題由系統(tǒng)負(fù)責(zé)。
(6)事務(wù)管理的分布性。數(shù)據(jù)的分布性必然造成事務(wù)執(zhí)行和管理的分布性,即一個全局事務(wù)的執(zhí)行可分解為在若干場地上子事務(wù)(局部事務(wù))的執(zhí)行。事務(wù)的原子性、一致性、隔離性、持久性以及事務(wù)的恢復(fù)也都具有分布性特點。
63.D所謂常量是指在程序運行過程中,其值不能被改變的量。在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。實型常量有兩種表示形式:十進(jìn)制小數(shù)形式、指數(shù)形式。指數(shù)形式中e后面的指數(shù)必須是整數(shù),階碼標(biāo)志e之前需要有數(shù)字,由此可知選項A,B,C錯誤。答案為D選項
64.D本題考查指針變量的賦值。**PP是定義一個指針變量,語句pp=&p是將pp指向指針P,*P和**PP都是指針P所指的內(nèi)存空間的內(nèi)容,即b的值。
65.A二維數(shù)組定義行數(shù)可以省略,列數(shù)不能省略,所以答案選擇A)。
66.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選項正確。
67.C解析:軟件設(shè)計遵循軟件工程的基本目標(biāo)和原則,建立了適用于在軟件設(shè)計中應(yīng)該遵循的基本原理和與軟件設(shè)計有關(guān)的概念。①抽象是一種思維工具,就是把事物本質(zhì)的共同特性抽出來而不考慮其他細(xì)節(jié)。②模塊是指可以單獨命名且可編址的元素。如高級語言中的過程、函數(shù)、子程序等。③信息隱蔽是指在一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。④模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。因此,本題的正確答案是C。
68.D二維數(shù)組進(jìn)行初始化時可以按照分段進(jìn)行賦值,將每一行看成一段,每一段的個數(shù)為列數(shù)。也可以按行連續(xù)賦值,不用分段,將所有的數(shù)值寫成一行,系統(tǒng)會在數(shù)組每一行的元素個數(shù)與列數(shù)相同時,從下一行開始繼續(xù)賦值。也可以對部分?jǐn)?shù)組賦初值,未賦初值的元素自動取0。題目中可以看成是對數(shù)組按行進(jìn)行連續(xù)賦值,并且只給出了第一行第一列的數(shù)值0,對于未賦值的元素,系統(tǒng)自動取0,故整個數(shù)組中的每個元素都可以取初值0。
69.A本題主要考查宏的定義。宏定義用一個標(biāo)識符來表示一個字符串,這個字符串可以是常量、變量或表達(dá)式。在宏調(diào)用中將用該字符串代換宏名。宏定義中,我們主要需要注意以下幾點:
(1)同一宏名不能重復(fù)定義,除非這兩個宏定義命令行完全一致。
(2)定義宏時,記得其結(jié)尾處不要用分號隔開。
(3)替換帶參數(shù)的宏名時,一對圓括號必不可少,圓括號中實參個數(shù)應(yīng)該與形參個數(shù)相同,若有多個參數(shù),它們之間用逗號隔開。
(4)宏定義中的字符串應(yīng)加括號,字符串中出現(xiàn)的形式參數(shù)兩邊也應(yīng)加括號。
在本題中,定義宏時,出現(xiàn)了一個明顯的錯誤,即在宏的定義后面用分號表示結(jié)束,這顯然是不對的。程序編譯時,系統(tǒng)會報錯,無法完成輸出。因此,本題的正確答案是A。
70.A如果a==1則執(zhí)行a=b;否則a++;選項A)不符,所以選擇A)。
71.D
72.B
73.B解析:本題考查printf函數(shù)的格式。在printf函數(shù)中,如果格式說明符中有兩個%說明,則將第1個%后面的字符原樣輸出,并不輸出其對應(yīng)的變量值。
74.C
75.D
76.A用戶標(biāo)識符不能以數(shù)字開頭,C語言中標(biāo)識符是區(qū)分大小寫的,關(guān)鍵字不能用做用戶標(biāo)識符。
77.C解析:在格式化模型中,要事先根據(jù)應(yīng)用的需要,確定數(shù)據(jù)之間的邏輯關(guān)系,即先對數(shù)據(jù)進(jìn)行結(jié)構(gòu)化。在關(guān)系模型中,不需要事先構(gòu)造數(shù)據(jù)的邏輯關(guān)系,只要將數(shù)據(jù)按照一定的關(guān)系存入計算機(jī),也就是建立關(guān)系。所以選項A錯誤。對于一個表示關(guān)系的二維表,其最基本的要求是表中元組的每一個分量必須是不可分的數(shù)據(jù)項,即不允許表中再有表。所以,選項B、D說法是錯誤的。一個關(guān)系的屬性名表稱為關(guān)系模式,也就是二維表的表框架,相當(dāng)于記錄型。因此,選項C說法正確。
78.B函數(shù)的功能是將數(shù)組的某個區(qū)域內(nèi)的元素加3,賦給后一個元素,然后返回;題目是從a[2]到a[5]調(diào)用函數(shù),a[2]=6,所以a[3]=6+3=9,a[4]=9+3=12,a[5]=12+3=15,所以結(jié)果為B
79.D
\n本題主要考查while循環(huán)語句和switchcase語句的使用方法。其執(zhí)行步驟為:k=5時,跳出switch語句,然后k自減1;當(dāng)k=4時,跳出switch語句,然后k自減1;當(dāng)k=3時,n=13+k=0+3=3,跳出switch語句,然后k自減1;當(dāng)k=2時n=n+k=3+2=5,跳出switch語句,然后k自減l;當(dāng)k=1時,case1:n=n+k一5+1=6,沒有break繼續(xù)執(zhí)行CaSe3;n=n+k=6+1=7,跳出switch語句,然后k自減1;當(dāng)k=0時,退出循環(huán),所以輸出結(jié)果為7。
\n
80.A本題考查的是typedef的用法和結(jié)構(gòu)體變量的定義方法。typedef可用于聲明結(jié)構(gòu)體類型,其格式為“typedefstruct{結(jié)構(gòu)元素定義}結(jié)構(gòu)類型;”。本題正確答案為A)。
81.錯誤:printf(”%3d”,mEj]*10);
正確:printf(”%3d”,m[j]=mLi]*10);
【解析】按照題目中要求,數(shù)組中的元素值增加10倍,應(yīng)該讓數(shù)組中的每一個元素乘以10放入原來的位置。因此,“printf(”%3d”。m[i]*10);”應(yīng)改為“printf(”%3d”,m[j]=m[j]*10);”。
82.
【解析】本題比較簡單,因為題目中已經(jīng)給出了算法,只要把題目中的說法轉(zhuǎn)換成C語言表達(dá)式基本上就出來了,本題最好用do-while循環(huán)來做,但要注意循環(huán)終止的條件。
2021-2022年貴州省遵義市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.
2.
3.
4.關(guān)于C語言中數(shù)的表示,以下敘述中正確的是()。
A.只有整型數(shù)在允許范圍內(nèi)能精確無誤地表示,實型數(shù)會有誤差
B.只要在允許范圍內(nèi)整型數(shù)和實型數(shù)都能精確地表示
C.只有實型數(shù)在允許范圍內(nèi)能精確無誤地表示,整形數(shù)會有誤差
D.只有用八進(jìn)制表示的數(shù)才不會有誤差
5.以下選項中合法的C語言常量是()。
A.2.0KbB.”C++’C.”\2.0D.1.01
6.與“y=(x>0?1:x<0?-1:0)”;的功能相同的if語句是()。A.A.if(x>0)y=1;elseif(x<0)y=1;else=""y="0;
B."x="">0)y=1;elseif(x<0)y=-l;else=""y="0;"
C.y="-l"x="">O)y=1;elseif(x=-0)y=0;elsey=-l;
D.y=0;if(x>=0)if(x>=0)y=1;elsey=-l;
7.有以下程序段:inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){casel:case3:printf("%d\n",n);break;case2:case4:print?("%d\n",n);continue;case():exit(0);}printf("%d\n",n);}以下關(guān)于程序段執(zhí)行情況的敘述,正確的是()。A.for循環(huán)語句固定執(zhí)行8次
B.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時結(jié)束循環(huán)操作
C.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時不做任何操作
D.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時結(jié)束程序運行
8.若有函數(shù)首部“intfun(doublex[10],int*n)”,則下列針對此函數(shù)的函數(shù)聲明語句中正確的是()。
A.intfun(double,int);
B.intfun(double*,int*);
C.intfun(double*x,intn);
D.intfun(doublex,int*n);
9.
10.在供應(yīng)關(guān)系中,實體供應(yīng)商和實體零件之間的聯(lián)系是()。
A.多對多B.一對一C.多對一D.一對多
11.在下列語句中,其含義為“q是一個函數(shù)指針,該指針指向整型數(shù)據(jù)”的定義語句是()。
A.int**q;B.int(*q);C.int*q;D.int*q;
12.若以下選項中的變量已正確定義,則正確的賦值語句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
13.已知各變量的類型說明如下則以下符合C語言語法的表達(dá)式是()。A.a+=a-=(b=4)*(a=3)B.a=a*3=2C.x%(-3)D.y=f1oat(i)
14.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當(dāng)運行時輸入:a<回車>后,以下敘述正確的是()。
A.變量c1被賦予字符a,c2被賦予回車符
B.程序?qū)⒌却脩糨斎氲?個字符
C.變量c1被賦予字符a,c2中仍是原有字符2
D.變量c1被賦予字符a,c2中將無確定值
15.設(shè)二叉排序樹中有n個結(jié)點,則二叉排序樹的平均查找長度為()。A.O(1)
B.O(log2n)
C.O(n)
D.(n2)
16.
17.第
11
題
若有定義:char*st="howareyou";下列程序段中正確的是
A.chara[11],*p;strcpy(p=a+1,&st[4]);
B.chara[11];strcpy(++a,st);
C.chara[11];strcpy(a,st);
D.chara[],*p;strcpy(p=&a[1],st+2);
18.已知各變量的類型說明如下則以下不符合C語言語法的表達(dá)式是()。A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)
19.若有以下定義和語句:chars[10]="abcd!",*s2="\nl23\\";Drintf("%d%d\n",strlen(sl),strlen(s2));則輸出結(jié)果是()。A.55B.105C.107D.58
20.下列能正確定義且賦初值的語句是()。
A.intn1=n2=1;
B.charC=99;
C.floatf=f+1;
D.doublex=1.2E5.6;
二、2.填空題(20題)21.在結(jié)構(gòu)化設(shè)計方法中,數(shù)據(jù)流圖表達(dá)了問題中的數(shù)據(jù)流與加工間的關(guān)系,并且每一個______實際上對應(yīng)一個處理模塊。
22.若下面程序的輸出結(jié)果是4,請?zhí)羁铡?/p>
main()
{inti,j,k;
k=0;i=j=【】;
k+=-(i+j);printf("%d\n",k);
}
23.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
#defineM5
#defineNM+M
main()
{intk;
k;N*N*5;printf("%d\n"k);
}
24.以下程序的功能是從名為filea.dat的文本文件中逐個讀入字符并顯示在屏幕上。請?zhí)羁铡?/p>
majn()
{FILE*fp;charch;
fp=fopen(______);
ch=fgetc(fp);
whle(!feof(fp)){putchar(ch);ch=f8etc(fp);}
putchar('\n');fclose(fp);
}
25.近年來形成了軟件開發(fā)的多種模式,大致有3種類型:基于瀑布模型的結(jié)構(gòu)化生命周期方法、基于動態(tài)定義需求的【】方法和基于結(jié)構(gòu)的面向?qū)ο蟮能浖_發(fā)方法。
26.“printf("%d\n",strlen("\t\"\023\xAB\nC"));”語句的輸出結(jié)果是()。
27.以下程序運行后的輸出結(jié)果是______。
fun(inta)
{intb=0;staticintc=3;
b++;c++;
return(a+b+c);
}
main()
{inti,a=5;
for(i=0;i<3;i++)printf("%d%d",i,fun(a));
printf("\n");
}
28.以下程序運行后的輸出結(jié)果是______。
voidswap(intx,inty)
{intt;
t=x;x=y;y=t;printf("%d%d",x,y);
}
main()
{inta=3,b=4;
swap(a,b);printf("%d%d\n",a,b);
}
29.以下程序通過函數(shù)指針p調(diào)用函數(shù)fun,請在填空欄內(nèi)寫出定義變量p的語句。
voidfun(int*x,int*y)
{……}
main()
{inta=10,b=20;
【】:
p=fun;p(&a,&b);
……
}
30.開發(fā)軟件所需要的高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象被人們稱之為【】。
31.—個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。
32.下列程序段的運行結(jié)果是______。
charstr[]="ABCD",*p=str;
printf("%d\n",*(p+3));
33.下面的程序是將從終端讀入的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(【】);
}
34.數(shù)據(jù)庫系統(tǒng)中實現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。
35.表示“整數(shù)x的絕對值大于5”時值為“假”的C語言表達(dá)式是______。
36.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型的動態(tài)存儲單元______。
37.有以下程序:
intfa(intx){returnx*x;}
intfb(intx){returnx*x*x;}
intf(int(*f1)(),int(*f2)(),(intx)
{returnf2(x)-f1(x);}
main()
{inti;i=f(fa,fb,2);printf("%d\n",i);}
程序運行后,輸出結(jié)果是【】。
38.算法的復(fù)雜度主要包括【】復(fù)雜度和空間復(fù)雜度。
39.設(shè)x和y均為int型變量,且x=1,y=2,則表達(dá)式double(1+x/y)的值為【】。
40.若有下列定義和語句:
char*s1="12345",*s2="1234";
printf("%d\n",strlen(strcpy(s1,s2)));
則輸出結(jié)果為______。
三、1.選擇題(20題)41.下列二維數(shù)組初始化語句中,正確且與語句floata[][3]={0,3,8,0,9};等價的是
A.floata[2][]={{0,3,8},{0,9}};
B.floata[][3]={0,3,8,0,9,0};
C.floata[][3]={{0,3},{8,0},{9,0}};
D.floata[2][]={{0,3,8},{0,9,0}};
42.軟件工程的出現(xiàn)是由于()。A.A.程序設(shè)計方法學(xué)的影響B(tài).軟件產(chǎn)業(yè)化的需要C.軟件危機(jī)的出現(xiàn)D.計算機(jī)的發(fā)展
43.以下程序的輸出結(jié)果是______。main(){char*s="121";intk=0,a=0,b=0;do{k++;if(k%2==0){a=a+s[k]-'\0';continue;}b=b+s[k]-'\0';a=a+s[k]-'\0';}while(s[k+1]);printf("k=%da=%db=%d\n",k,a,b);}
A.k=3a=98b=49
B.k=3a=99b=50
C.k=2a=99b=50
D.k=2a=98b=49
44.在計算機(jī)中,算法是指()。
A.查詢方法B.加工方法C.解題方案的準(zhǔn)確而完整的描述D.排序方法
45.有以下程序main(){union{unsignedintn;unsignedcharC;}ul;u1.C='A';printf("%c\n",u1.n);}執(zhí)行后輸出結(jié)果是
A.產(chǎn)生語法錯B.隨機(jī)值C.AD.65
46.有下列程序main(){intt,a=1,b=5,c=-2;while(a>b>c){t=a;a=b;b=t;c++;}printf("%d,%d,%d",a,b,c);}程序輸出的結(jié)果是()。
A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2
47.結(jié)構(gòu)化分析方法是面向()的自頂向下、逐步求精進(jìn)行需求分析的方法
A.對象B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)流D.目標(biāo)
48.若有說明inta[3][4];,則a數(shù)組元素的非法引用是()A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]
49.設(shè)變量均已正確定義,若要通過scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式正確的是(注:□代表空格字符)()。
A.10□X□20□Y<回車>
B.10□X20□Y<回車>
C.10□X<回車>
D.10X<回車>20□Y<回車>20Y<回車>
50.下列程序是用來判斷數(shù)組中特定元素的位置所在。如果輸入如下整數(shù):876675896101301401980431451777#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,45l,777},k;clrscr();fun(a,10,&k);printf("%d,%d\n",k,a[k]);}則輸出結(jié)果為
A.7,431B.6C.980D.6,980
51.以下選項中非法的表達(dá)式是()。
A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1
52.以下正確的說法是
A.定義函數(shù)時,形參的類型說明可以放在函數(shù)體內(nèi)
B.return后邊的值不能為表達(dá)式
C.如果函數(shù)值的類型與返回值類型不一致,以函數(shù)值類型為準(zhǔn)
D.如果形參與實參類型不一致,以實參類型為準(zhǔn)
53.對于下述說明,不能使變量p->b的值增1的表達(dá)式是______。structexm{inta;intb;floatc}*p;
A.++p->bB.++(p++)->bC.p->b++D.(++p)->b++
54.有下列函數(shù):intfun(char*s){char*t=s;while(*t++);return(t-s);}該函數(shù)的功能是()。
A.比較兩個字符串的大小
B.計算s所指字符串占用內(nèi)存字節(jié)的個數(shù)
C.計算s所指字符串的長度
D.將s所指字符串復(fù)制到字符串t中
55.已有定義:inti,a[10],*p;則合法的賦值語句是()。
A.p=100;B.p=a[5];C.p=a[2]+2;D.p=a+2;
56.設(shè)有定義:int(*ptr)();則以下敘述中正確的是()
A.ptr是指向一維數(shù)組的指針變量
B.ptr是指向int型數(shù)據(jù)的指針變量
C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int數(shù)據(jù)
D.prt是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針
57.在結(jié)構(gòu)化程序設(shè)計方法中,下面哪種內(nèi)聚性最弱?
A.邏輯內(nèi)聚B.時間內(nèi)聚C.偶然內(nèi)聚D.過程內(nèi)聚
58.設(shè)有以下語句inta=1,b=2,c;c=a^(b<<2);執(zhí)行后,c的值為______。A.6B.7C.8D.9
59.在數(shù)據(jù)庫的兩級映射中,從概念模式到內(nèi)模式的映射一般由______實現(xiàn)。
A.數(shù)據(jù)庫系統(tǒng)B.數(shù)據(jù)庫管理系統(tǒng)C.數(shù)據(jù)庫管理員D.數(shù)據(jù)庫操作系統(tǒng)
60.對長度為n的線性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為()。
A.log2nB.n/2C.nD.n+1
四、選擇題(20題)61.若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是
A.’a’<=c<=’z’B.(c>=’a’)||(c<=’z’)
C.(’a’<=c)and(’z’>=c)D.(c>=’a’)&&(c<=’z’)
62.分布式數(shù)據(jù)庫系統(tǒng)不具有的特點是
A.?dāng)?shù)據(jù)的物理分布性和邏輯整體性B.位置透明性和復(fù)制透明性
C.事物管理的集中性D.?dāng)?shù)據(jù)冗余
63.以下是正確C語言實型常量的是()。
A..e—1B.e一1C.一1eD.1e一1
64.若有定義和語句:
int*(*pp),*P,a=20,b=10;
pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,**PP);
則輸出結(jié)果是()。A.A.20,10B.20,20C.10,20D.10,10
65.有以下程序
A.357B.753C.369D.751
66.若函數(shù)調(diào)用時的實參為變量時,以下關(guān)于函數(shù)形參和實參的敘述中正確的是()。
A.函數(shù)的形參和實參分別占用不同的存儲單元
B.形參只是形式上的存在,不占用具體存儲單元
C.同名的實參和形參占同一存儲單元
D.函數(shù)的實參和其對應(yīng)的形參共占同一存儲單元
67.下面不屬于軟件設(shè)計原則的是()。
A.抽象B.模塊化C.自底向上D.信息隱蔽
68.若有說明:inta[3][4]={0};,則下面正確的敘述是
A.只初始化了第一個元素,即a[0][0]可得到初值0
B.此初始化語句不正確
C.?dāng)?shù)組a中各元素都可得到初值,但其值不一定為0
D.?dāng)?shù)組a中每個元素均可得到初值0
69.有以下程序
#include<stdio.h>
#defineP24;
#defineS(x)P*x+x;
main()
{inta=2,b=2;
printf("%d\n",S(a+b));
}
程序的運行結(jié)果是
A.程序編譯運行時報錯,無法輸出B.54
C.96D.100
70.以下選項中與
71.
72.HTTP協(xié)議的消息有()兩種類型。
A.發(fā)送消息和接收消息B.請求消息和響應(yīng)消息C.消息頭和消息體D.實體消息和控制消息
73.
若有下列定義(設(shè)int類型變量占2個字節(jié)):
inti=8,j=9;
則下列語句:
printf("i=%%d,j=%%d\n",i,j);
輸出的結(jié)果是()。
A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9
74.
75.
76.C語言中的標(biāo)識符分為關(guān)鍵字、預(yù)定義標(biāo)識符和用戶標(biāo)識符,以下敘述正確的是()。
A.預(yù)定義標(biāo)識符(如庫函數(shù)中的函數(shù)名)可用做用戶標(biāo)識符,但失去原有含義
B.用戶標(biāo)識符可以由字母和數(shù)字任意順序組成
C.在標(biāo)識符中大寫字母和小寫字母被認(rèn)為是相同的字符
D.關(guān)鍵字可用做用戶標(biāo)識符,但失去原有含義
77.下列敘述中正確的是()。
A.為了建立一個關(guān)系,首先要構(gòu)造數(shù)據(jù)的邏輯關(guān)系
B.表示關(guān)系的二維表中各元組的每一個分量還可以分成若干數(shù)據(jù)項
C.一個關(guān)系的屬性名表稱為關(guān)系模式
D.一個關(guān)系可以包括多個二維表
78.有以下程序:
fun(inta[],intm,intn)
{inti;
for(i=m;i<n;i++)
a[i+1]=a[i]+3;
returna[i+1];
}
voidmain()
{
inti,a[6]={2,4,6,8,10,12};
fun(a,2,5);
for(i=0;i<6;i++)
printf("%d",a[i]);
}
程序運行后輸出的結(jié)果是()。
A.24691315B.24691215C.249121518D.249121415
79.
有下列程序:
main
{intk=5,n=0;
while(k>0)
{switch(k)
{dcfault:break;
case1:n=n+k;
case2:
case3:n+=k;
}
k--;
}
printf("%d\n".n);
}
程序運行后的輸出結(jié)果足()。
A.0B.4C.6D.7
80.以下結(jié)構(gòu)體類型說明和變量定義中正確的是()。
A.
B.
C.
D.
五、程序改錯題(1題)81.給定程序中,函數(shù)proc()的功能是:使數(shù)組中的元素的值增加10倍。修改其中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),其功能是:利用以下所示的簡單迭代方法求方程cos(x)-x=0的一個實根。
xn+1=COS(xn)
迭代步驟如下:
(1)取x1初始值為0.0;
(2)x0=x1,把?X1的值賦給x0;
(3)x1=cos(xO),求出一個新的x1;
(4)若x0-x1的絕對值小于0.000001,則執(zhí)行步驟
(5),否則執(zhí)行步驟(2);
(5)所求x1就是方程cos(x)-x=0的一個實根,作為函數(shù)值返回。
程序?qū)⑤敵鼋Y(jié)果root=0.739085。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
參考答案
1.D
2.A
3.C
4.A當(dāng)數(shù)據(jù)類型是實數(shù)時,在存儲過程中,當(dāng)小數(shù)部分無限長時,會存在小數(shù)部分的截斷,會存在誤差,所以答案選擇A。
5.DC語言中,常量有整型常量、實型常量、字符常量和字符串常量等。整型常量和實型常量又稱為數(shù)值型常量。其中整型常量只能用數(shù)字表示,不帶小數(shù)點。實型常量必須用帶小數(shù)點的數(shù)表示,所以選項A錯誤,選項D正確;字符型常量是用單引號標(biāo)注的單個字符,字符串常量是用雙引號標(biāo)注的若干個字符,選項B、C錯誤。故本題答案為D選項。
6.By=(x=)071:x<0?-1:0)中有兩個三目運算符,因此按從右到在的
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南省某廢鋼基地項目可行性研究報告
- 2024租賃期滿后購買選擇權(quán)協(xié)議
- 2025年度特色餐廳餐飲配送服務(wù)承包合同4篇
- 中國防水膠卷材項目投資可行性研究報告
- 2025年度個人創(chuàng)業(yè)貸款擔(dān)保合同樣本4篇
- 2025年涂裝勞務(wù)分包合同范本大全:涂裝工程安全3篇
- 2025年度個人房產(chǎn)抵押融資合同規(guī)范文本2篇
- 2025年度個人汽車貸款合同標(biāo)準(zhǔn)格式4篇
- 2025年度個人汽車租賃保險附加服務(wù)合同3篇
- 2025年江蘇海州發(fā)展集團(tuán)有限公司招聘筆試參考題庫含答案解析
- CNAS實驗室評審不符合項整改報告
- 農(nóng)民工考勤表(模板)
- 承臺混凝土施工技術(shù)交底
- 臥床患者更換床單-軸線翻身
- 計量基礎(chǔ)知識培訓(xùn)教材201309
- 中考英語 短文填詞、選詞填空練習(xí)
- 一汽集團(tuán)及各合資公司組織架構(gòu)
- 阿特拉斯基本擰緊技術(shù)ppt課件
- 初一至初三數(shù)學(xué)全部知識點
- 新課程理念下的班主任工作藝術(shù)
- (完整版)企業(yè)破產(chǎn)流程圖(四張)
評論
0/150
提交評論