版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021年四川省南充市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.和順序棧相比,鏈棧有一個比較明顯的優(yōu)勢是()。
A.通常不會出現(xiàn)棧滿的情況B.通常不會出現(xiàn)??盏那闆rC.插入操作更容易實現(xiàn)D.刪除操作更容易實現(xiàn)
2.
3.以下選項中的表達(dá)式調(diào)用庫函數(shù)依次求-4.5的絕對值、-4.0的平方根值、30°角的正弦值和2的3次方值。正確的調(diào)用是()
A.abs(-4.5)B.sqrt(-4.0)C.sin(3.1416/6.0)D.paw(2.0,3.0)
4.有以下程序:#include<stdio.h>main(){intk=5;while(--k)printf(“%d”,k-=3);printf(“\n”);}程序運行后的輸出結(jié)果是()。
A.1B.2C.4D.死循環(huán)
5.對如下二叉樹進(jìn)行后序遍歷的結(jié)果為()。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
6.下述程序的運行結(jié)果是()。#includedstdio.h>#includedstrin9.h>main{char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}A.正數(shù)B.負(fù)數(shù)C.零D.不確定的值
7.以下程序的輸出結(jié)果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147
8.C語言中,組成數(shù)據(jù)文件的成分是()。A.A.記錄
B.數(shù)據(jù)行
C.數(shù)據(jù)塊
D.字符(字節(jié))序列
9.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序運行后的輸出結(jié)果是______。
A.運行后報錯B.66C.611D.510
10.下面程序的輸出結(jié)果是()。chars()="ABCD",*p;main(){for(p=s;p<s+4;p++)printf("%s\n",p);)
A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA
11.面向?qū)ο蠓椒ㄖ校^承是指()。
A.一組對象所具有的相似性質(zhì)B.一個對象具有另一個對象的性質(zhì)C.各對象之間的共同性質(zhì)D.類之間共享屬性和操作的機(jī)制
12.下列定義數(shù)組的語句中正確的是()。
A.#defmeN10intx[N];
B.intN=10;intx[N];
C.intx[0..10];
D.intx[];
13.在位運算中,操作數(shù)每右移一位,其結(jié)果相當(dāng)于()
A.操作數(shù)乘以2B.操作數(shù)除以2C.操作數(shù)除以16D.操作數(shù)乘以16
14.在最壞情況下比較次數(shù)相同的是()。A.冒泡排序與快速排序B.簡單插入排序與希爾排序C.簡單選擇排序與堆排序D.快速排序與希爾排序
15.排序方法中,將整個無序序列分割成若干小的子序列并分別進(jìn)行插入排序的方法,稱______。
A.希爾排序B.冒泡排序C.插入排序D.選擇排序
16.
17.一個二維數(shù)組的定義語句為“inta[3][4]={{3,4},{2,8,6}};”,則元素a[1][2]的值為()。
A.2B.4C.6D.8
18.以下正確的字符串常量是()。A.“\\\”B.‘a(chǎn)bc’C.OlympicGamesD.“”
19.在含有n個項點有e條邊的無向圖的鄰接矩陣中,零元素的個數(shù)為________。
A.eB.2e9C.n2-eD.n2-2e
20.用單鏈表方式存儲的線性表,存儲每個結(jié)點需要兩個域,一個數(shù)據(jù)域,另一個是()。
A.當(dāng)前結(jié)點的所在地址B.后繼結(jié)點的所在地址C.空指針域D.空閑域
二、2.填空題(20題)21.下列程序的運行結(jié)果是______。
main()
{inti,a[10];
a[0]=a[1]=1;
for(i=2;i<5;i++)
a[i]=a[i-2]+a[i-1];
for(i=0;i<5;i++)
{if(i%2==0)printf("\n");
printf("%d",a[i]);
}
}
22.在樹形結(jié)構(gòu)中,樹根結(jié)點沒有______。
23.以下程序運行后的輸出結(jié)果是【】。
structNODE
{intk;
structNODE*link;
};
main()
{structNODEm[5],*p=m,*q=m+4;
inti=0;
while(p!=q){
p->k=++i;p++;
q->k=i++;q--;
}
q->k=i;
for(i=0;i<5;i++)printf("%d",m[i].k);
printf("\n");
}
24.下面程序的功能是將字符串a(chǎn)下標(biāo)值為偶數(shù)的元素由小到大排序,其他元素不變,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{chara[]="labchmfye",t;
inti,j;
for(i=0;i<7;i+=2)
for(j=i+2;j<9;【】)
if(【】)
{t=a[i];a[i]=a[j];a[j]=t;j++;}
puts(a);
printf("\n");
}
25.以下程序的輸出結(jié)果是【】。
voidfun()
{staticinta;
a+=2;
printf("%d",A);
}
main()
{intcc;
for(cc=1;cc<=4;cc++)fun();
printf("\n");
}
26.下列程序的運行結(jié)果是______。
#include<stdio.h>
main()
{inta,b,c;
a=3;b=4;c=5;
if(a>b)
if(a>c)
printf("%d",a);
elseprintf("%d",b);
printf("%d\n",c);
}
27.下列程序的輸出結(jié)果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<;y++)
z=(*(ptr+y)<x?*(ptr+y);x;
printf("%d\n",z);
}
28.以下程序的輸出結(jié)果是【】。
main()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}}
29.若有定義語句chars[100],d[100];intj=0,i==0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達(dá)式)
while(s[i]=【】;j++;}
d[j]=0;
30.設(shè)有以下定義
struetss
{intinfo;struetss*link;}x,y,z;
且已建立如下圖所示鏈表結(jié)構(gòu):
請寫出刪除結(jié)點y的賦值語句【】。
31.以下程序用來輸出結(jié)構(gòu)體變量ex所占存儲單元的字節(jié)數(shù):
structst
{charname[20];doublescore;};
main()
{structstex;
printf("exsize:%d\n",sizeof(【】));
}
32.數(shù)據(jù)流的類型有______和事務(wù)型。
33.算法復(fù)雜度主要包括時間復(fù)雜度和【】復(fù)雜度。
34.軟件危機(jī)出現(xiàn)于60年代末,為了解決軟件危機(jī),人們提出了【】的原理來設(shè)計軟件,這就是軟件工程誕生的基礎(chǔ)。
35.若從鍵盤輸入58,則以下程序輸出的結(jié)果是______。
main{)
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
36.若a是血型變量,且a的初值為4,則計算a+=a-=a*a表達(dá)式后a的值為______。
37.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及對數(shù)據(jù)的操作運算。
38.以下程序運行后的輸出結(jié)果是【】。
main()
{charm;
m='B'+32;printf("%c\n",m);
39.在面向?qū)ο蠓椒ㄖ?,類的實例稱為______。
40.在面向?qū)ο蠓椒ㄖ?,對象之間進(jìn)行通信的構(gòu)造稱為()。
三、1.選擇題(20題)41.數(shù)據(jù)庫、數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)之間的關(guān)系是()。
A.數(shù)據(jù)庫包括數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)
B.數(shù)據(jù)庫系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)
C.數(shù)據(jù)庫管理系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫系統(tǒng)
D.三者沒有明顯的包含關(guān)系
42.以下正確的數(shù)組定義語句是()
A.inty[1][4]={1,2,3,4,5,}
B.floatx[3][]={{1},{2},{3}}
C.longs[2][3]={{1},{1,2}{1,2,3,}}
D.doublet[][3]={0}
43.6.C語言中下列敘述正確的是()
A.不能使用do-while語句構(gòu)成的循環(huán)
B.do-while語句構(gòu)成的循環(huán),必須用break語句才能退出
C.do-while語句構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為非零時結(jié)束循環(huán)
D.do-while語句構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為零時結(jié)束循環(huán)
44.下列隊列的描述中,正確的是()
A.隊列屬于非線性表B.隊列在隊尾刪除數(shù)據(jù)C.隊列按“先進(jìn)后出”進(jìn)行數(shù)據(jù)操作D.隊列按“先進(jìn)先出”進(jìn)行數(shù)據(jù)操作
45.有下列二叉樹,對此二叉樹中序遍歷的結(jié)果為()。
A.BDYEACFXZB.DYBEAFCZXC.ABCDEFXYZD.ABDYECFXZ
46.下列敘述中不正確的是()。
A.在C語言中調(diào)用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參
B.在C的函數(shù)中,最好使用全局變量
C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)
D.自動變量實質(zhì)上是一個函數(shù)內(nèi)部的局部變量
47.有以下程序
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,
48.有以下程序main(){chara[]={'a','b','c','d','e','f','g','h','\0'};inti,j;i=sizeof(a);j=strlen(a);printf("%d,%d\n"i,j);}程序運行后的輸出結(jié)果是
A.9,9B.8,9C.1,8D.9,8
49.在16位IBM-PC機(jī)上使用C語言,若有如下定義structdata{inti;charch;doublef;}b;則結(jié)構(gòu)變量b占用內(nèi)存的字節(jié)數(shù)是
A.1B.2C.7D.11
50.下列敘述中,正確的是()。
A.用E—R圖能夠表示實體集間一對一的聯(lián)系、一對多的聯(lián)系和多對多的聯(lián)系
B.用E—R圖只能表示實體集之間一對一的聯(lián)系
C.用E—R圖只能表示實體集之間一對多的聯(lián)系
D.用E—R圖表示的概念數(shù)據(jù)模型只能轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型
51.有以下程序段:intn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;)while(t!=n);為使程序不陷入死循環(huán),從鍵盤輸入的數(shù)據(jù)應(yīng)該是______。
A.任意正奇數(shù)B.任意負(fù)偶數(shù)C.任意正偶數(shù)D.任意負(fù)奇數(shù)
52.若有說明:int*p,m=5,n;以下正確的程序段是
A.p=&n;scanf("%d",&p);
B.p=&n;scanf("%d",*p)
C.scanf("%d",&n);*p=n;
D.p=&n;*p=m;
53.下列敘述中正確的是A.程序設(shè)計就是編制程序
B.程序的測試必須由程序員自己去完成
C.程序經(jīng)調(diào)試改錯后還應(yīng)進(jìn)行再測試
D.程序經(jīng)調(diào)試改錯后不必進(jìn)行再測試
54.若有下面的說明和定義,則sizeof(structaa)的值是______。structaa{intr1;doubler2;floatr3;unionuu{charul[5];longu2[2]}ua;}mya;
A.30B.29C.24D.22
55.下列敘述錯誤的是()。
A.在C語言中的保留字必須小寫
B.變量的存儲類型決定了變量的存儲位置及其生存期
C.宏定義以#define開頭,行末必須加分號
D.在C語言中的注釋行可以出現(xiàn)在程序的任何位置
56.一個源文件中的外部變量的作用域為()。
A.本文件的全部范圍B.本程序的全部范圍C.本函數(shù)的全部范圍D.從定義該變量的位置開始到本文件結(jié)束
57.若有定義和語句:int**pp,*p,a=20,b=10;pp=&p;p=&a;p=&b;printf(%d,%d\n",*p,**pp);則輸出結(jié)果是()。
A.20,10B.20,20C.10,20D.10,10
58.以下敘述中正確的是()。
A.C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方
B.花括號"{"和"}"只能作為函數(shù)體的定界符
C.構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名
D.分號是C語句之間的分隔符,不是語句的一部分
59.以下程序的輸出結(jié)果是(){intx=05;charz='a';printf("%d\n",(x&1)&&(z<'z'));}
A.0B.1C.2D.3
60.以下敘述中錯誤的是()。
A.改變函數(shù)形參的值,不會改變對應(yīng)實參的值
B.函數(shù)可以返回地址值
C.可以給指針變量賦一個整數(shù)作為地址值.
D.當(dāng)在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL
四、選擇題(20題)61.下列函數(shù)的類型是()。fun(doublex){floaty;y=3*x-4;returny;}
A.intB.不確定C.voidD.float
62.
63.
64.閱讀下面程序段,則執(zhí)行后的結(jié)果為()。
A.64B.8C.56D.0
65.下列選項中,能夠滿足“只要字符串sl等于字符串s2,則執(zhí)行sT”要求的是()。程序執(zhí)行后的輸出結(jié)果是()。
A.2B.1C.3D.0
66.
67.設(shè)有如下說明
typedefstruct
{intnumber;charclass;doublescore;}student;
則以下選項中,能正確定義結(jié)構(gòu)體數(shù)組并賦初值的語句是()。
A.studenttt[2]={{189,’A’,62},{190,’B’,75}};
B.studenttt[2]={189,’"A",62,190,"B",75};
C.structtt[2]={{189,’A’},{190,’B’}};
D.structtt[2]={{189,"A",62.5},{190,"B",75.0}};
68.在面向?qū)ο蠓椒ㄖ?,一個對象請求另一對象為其服務(wù)的方式是通過發(fā)送()。A.調(diào)用語句B.命令C.口令D.消息
69.
以下程序的輸出結(jié)果是()。
main
{inti=0,S=0;
for(;;)
{
if(i==3||i==5)continue;
if(i==6)break;
i++;
s+=i:
};
printf("%d\n",s);
}
A.10B.13C.21D.程序陷入死循環(huán)
70.以下程序的輸出結(jié)果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staticintx=1;x*=x+1;printf("%d",x);}
A.33B.22C.26D.25
71.在軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是()。A.概要設(shè)計B.詳細(xì)設(shè)計C.可行性分析D.需求分析
72.有以下程序:
程序運行后的輸出結(jié)果是()。
A.9B.8C.7D.10
73.對于循環(huán)隊列,下列敘述中正確的是()。A.隊頭指針是固定不變的
B.隊頭指針—定大于隊尾指針
C.隊頭指針_定小于隊尾指針
D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針
74.若有以下函數(shù)首部:
intfun(doublex[10],int*n)
則下面針對此函數(shù)的函數(shù)聲明語句中正確的是()。
A.intfun(double,int);
B.intfun(double木,int*);
C.intmn(double*x,intn);
D.intfun(doublex,intint*n)
75.C語言的基本單位是()。
A.函數(shù)B.過程C.子程序D.子函數(shù)
76.(74)用鏈表表示線性表的優(yōu)點是()
A.便于插入和刪除操作
B.數(shù)據(jù)元素的物理順序與邏輯順序相同
C.花費的存儲空間較順序存儲少
D.便于隨機(jī)存取
77.有以下程序:
程序執(zhí)行后的輸出結(jié)果是()。
A.5,11B.5,5C.11,11D.11,5
78.若有說明:inti,j=7,*p=&i;,則與i=j;等價的語句是()。
A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;
79.
80.結(jié)構(gòu)化分析可以使用的工具是()。
A.N—s圖B.DFD圖C.PAD圖D.程序流程圖
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:在字符串的最前端加入m個*號,形成新串,并且覆蓋原串。例如,用戶輸入字符串a(chǎn)bcd(以Enter鍵結(jié)束),然后輸入m值為3,則結(jié)果為***abcd。注意:字符串的長度最長允許為79。請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能是:除了尾部的*號之外,將字符串中其他*號全部刪除。形參P已指向字符串中最后一個字母。在編寫函數(shù)時,不得使用C語言的字符串函數(shù)。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是abcdefg****。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填人所編寫的若干語句。試題程序:
參考答案
1.A
2.D
3.C
4.A“--k”是先自減再使用,所以第1次判斷條件即while(4),條件為真輸出k的值,k=4-3,結(jié)果為1;第2次判斷條件即while(0),條件為假,結(jié)束循環(huán),輸出回車換行符。故本題答案為A選項。
5.D解析:后序遍歷指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,道先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點:并且遍歷左、右子樹時,仍然先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點。
6.A本題考查符符串比較函數(shù)和兩個字符串比較的原則這兩個知識點。
(1)兩字符串比較的原則是依次比較兩個字符串同一位置的一對字符,若它們的ASCII碼值相同,則繼續(xù)比較下一對字符,若它們的ASCII碼值不同,則ASCII碼值較大的字符所在的字符串較大;若所有字符相同,則兩個字符串相等;若一個字符串全部i個字符與另一個字符串的前i個字符相同,則字符串較長的較大(2)strcmp(s1,s2)的返回值,當(dāng)str1<str2時,返回值為負(fù)數(shù);當(dāng)str1=str2時,返回0;當(dāng)str1>str2,返回值為正數(shù)。
7.B第一個for循環(huán)的作用是讓p指向每行的首地址,第二個for循環(huán)的作用是把它指向的字符串輸出,故選擇B選項。
8.D解析:C語言中的文件是流式文件。流式文件是一種無結(jié)構(gòu)文件,即整個文件是一串字符流或二進(jìn)制流。文件的存取以字符或字節(jié)為單位。
9.A解析:本題考核的知識點是通過指針引用數(shù)組的元素的方法.本題中首先定義了一個一維數(shù)組a并初始化,由于定義該數(shù)組的時候省略了長度,因此該數(shù)組的長度為初始化時候賦初值的個數(shù)即為12。數(shù)組名a代表數(shù)組的首地址,所以*p=a+5語句使得p指向數(shù)組的第6個元素,而在程序中定義了一個指針q并讓它指向空,實際上程序并沒有在內(nèi)存中為指針q開辟存儲空間,這樣給q賦值不允許的,故該程序運行后報錯。所以,4個選項中選項A符合題意。
10.A解析:p為指針型變量。第一次循環(huán),p=s,p的值為字符數(shù)組s的首地址,輸出字符串'ABCD'。p++,第二次循環(huán),p的值為字符數(shù)組s的首地址加1,輸出字符串'BCD'。p++,第三次循環(huán),p的值為字符數(shù)組s的首地址加2,輸出字符串'CD'。p++,第4次循環(huán),p的值為字符數(shù)組s的首地址加3,輸出字符串\'D'。
11.D繼承是面向?qū)ο蟮姆椒ǖ囊粋€主要特征,是使用已有的類的定義作為基礎(chǔ)建立新類的定義技術(shù)。廣義的說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們,所以說繼承是指類之間共享屬性和操作的機(jī)制。
12.A數(shù)組定義的一般形式為:類型說明符數(shù)組名[常量表達(dá)式]。B選項中N是變量,不能用變量定義數(shù)組長度。C選項中數(shù)組長度是一串非法的數(shù)字。定義數(shù)組時必須為其指明長度,D選項中的數(shù)組長度為空,所以非法。故本題答案為A選項。
13.B
14.A冒泡排序、快速排序、簡單插入排序、簡單選擇排序在最壞情況下比較次數(shù)均為n(n-1)/2,堆排序在最壞情況下比較次數(shù)為nlog2n,希爾排序在最壞情況下需要比較的次數(shù)是nr(1﹤r﹤2)。本題答案為A選項。
15.A解析:希爾排序法的基本思想是:將整個無序列分割成若干小的子序列分別進(jìn)行插入排序。
16.A
17.C
18.D在C語言中,字符串常量是用雙引號標(biāo)注的字符序列,因此B選項和C選項不正確。字符序列中可包含一些轉(zhuǎn)義字符,轉(zhuǎn)義字符以“\\”開頭。A選項中包含3個前兩個(\\\\)代表一個“\\”字符,后面一個為“””。因為\\”被看作一個“””,所以該字符串缺少一個結(jié)束的“””。因此A選項不正確。D選項的兩個“”之間沒有任何字符,代表的是一個空串,是合法的字符串常量,因此D選項正確。B選項的abc應(yīng)該使用雙引號標(biāo)注。故本題答案為D選項。
19.D
20.B
21.11<CR>23<CR>5(<CR代表換行)11<CR>23<CR>5(<CR,代表換行)解析:本題通過語句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”將數(shù)組中前面兩項的和賦值給數(shù)組當(dāng)前元素,得到a的值應(yīng)為(1,1,2,3,5)。語句if(i%2==0)pfintf('\\n')是要將數(shù)組中的元素以每行2個的形式輸出。
22.前件前件
23.1343113431解析:初始化時,指針p指向m[0]的地址,指針q指向m[4]的地址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[0].k=1,m[4].k=1,此時i=2,指針p指向m[1]的地址,指針q指向m[3]的地址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[1].k=3,k=3,此時i=4,指針q指向m[2]的地址,p==q不滿足循環(huán)條件,則退出循環(huán),m[2].k=4。所以最后輸出為13431。
24.j++a[i]>a[j]或a[j]<a[i]j++\r\na[i]>a[j]或a[j]<a[i]解析:題目要求排序的元素是下標(biāo)值為偶數(shù)的元素,外循環(huán)循環(huán)4次,i的值分別為0、2、4、6,所以內(nèi)循環(huán)也循環(huán)4次,i的值就應(yīng)為2、4、6、8,在循環(huán)體中已經(jīng)有了對j加1的操作,因此for后括號中的語句應(yīng)再對j加1,保證下標(biāo)為偶數(shù)。if語句的功能是如果后一個數(shù)比前一個數(shù)小則交換位置。
25.2468
26.55解析:分析程序,當(dāng)a=3;b=4;c=5時,判斷語句a>b不成立,所以不執(zhí)行后面的語句,直接執(zhí)行“printf('%d\\n',c);”語句,輸出c的值,輸出結(jié)果為5。
27.66解析:條件運算符的優(yōu)選級高于賦值運算符,因此本題先計算關(guān)系表達(dá)式(*ptr+y)<x)*(ptr+y):x的值,再賦給變量z。當(dāng)y=0時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=2,所以z=2;當(dāng)y=1時,*(ptr+y)=4,(*ptr+y)<x)條件為真,則整個條件表達(dá)式的值為*(ptr+y)=4,所以z=4:當(dāng)y=2時,*(ptr+y)=6,(*(ptr+y)<x條件為真,則整個條件表達(dá)式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。
28.852852解析:循環(huán)前,變量y的值為9,其中,循環(huán)語句在y大于0情況下循環(huán),每次循環(huán)后y的值都減1。循環(huán)體是當(dāng)y能被3整除時輸出表達(dá)式--y,輸出的是減1后的y值。這樣,第一次循環(huán)因y為9,能被3整除,輸出8,y也變成8。又經(jīng)兩次循環(huán),y的值變?yōu)?,又讓y減1變成5,并輸出5;又經(jīng)兩次循環(huán),y的值變成3,讓y減1變成2,輸出2;再經(jīng)兩次循環(huán)后,y的值變成0,結(jié)束循環(huán),所以程序輸出852。
29.s[i++]s[i++]解析:本題中為了能實現(xiàn)字符串的拷貝,需要使字符數(shù)組s從頭到尾依次遍歷其所有元素。本題應(yīng)使用i的自增后置來實現(xiàn)。
30.x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;解析:鏈表中結(jié)點的刪除,要刪除結(jié)點y,只需要讓結(jié)點x的指針域指向y結(jié)點的指針域所指向的后續(xù)結(jié)點就可,因此只需把結(jié)點z的地址賦給x的指針域就可以了,即讓結(jié)點x的指針域指向結(jié)點z。而結(jié)點z的地址保存在結(jié)點y的指針域中,因此只需把結(jié)點y的指針域賦值給結(jié)點x的指針域即可。
31.ex或structstex或structst解析:求一個變量所占的存儲單元數(shù),用sizeof函數(shù),參數(shù)為該變量名或其變量類型。
32.變換型變換型
33.空間空間解析:程序在計算機(jī)上運行時所耗費的時間由程序運行時所需輸入的數(shù)據(jù)總量、對源程序進(jìn)行編譯所需時間、計算機(jī)執(zhí)行每條指令所需時間、程序中的指令重復(fù)執(zhí)行的次數(shù)等決定。習(xí)慣上常常把語句重復(fù)執(zhí)行的次數(shù)作為算法運行時間的相對量度,稱作算法的時間復(fù)雜度。算法在運行過程中需輔助存儲空間的大小稱為算法的空間復(fù)雜度。
34.軟件工程學(xué)軟件工程學(xué)
35.585858585858解析:在程序中,執(zhí)行scanf()語句后,a被賦值為58。接著執(zhí)行第一個if語句,因為,a=58>50,執(zhí)行第一個訂語句后面的輸出語句,輸出58;接著執(zhí)行第二個if語句,因為,a=58>4O,執(zhí)行第二個if語句后面的輸出語句,輸出58;接著執(zhí)行第三個if語句,因為,a=58>30,執(zhí)行第三個if語句后面的輸出語句,輸出58,所以最后的輸出為585858。
36.-24-24解析:本題考查賦值運算符a+=b等價于a=a+b;a-=a*a等價于a-a-a*a=4-4*4=-12:a+=a,即a=a+a=-24。
37.存儲結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)包括3個方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)及對數(shù)據(jù)的操作運算。
38.bb解析:在ASCII碼表中,至少有3個值考生得記?。?,0,的ASCII碼為48;‘A’的ASCII碼為65;‘a(chǎn)’的ASCII碼為97。因為記住這3個后,其他字母和數(shù)字的ASCII碼就可以很容易推出來了。本題中,“B”的ASCII碼為‘A’+1=66,所以,字符類型m的ASCII為66+32=98=97+1=‘a(chǎn)’+1,所以最后輸出的結(jié)果為字符‘b’。
39.對象對象解析:類描述的是具有相似性質(zhì)的一組對象。例如,每本具體的書是一個對象,而這些具體的書都有共同的性質(zhì),它們都屬于更一般的概念“書”這一類對象。一個具體對象稱為類的實例。
40.消息消息解析:對象之間進(jìn)行通信的構(gòu)造叫做消息,它請求對象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。
41.B數(shù)據(jù)庫可以看成是長期存儲在計算機(jī)內(nèi)的、大量的、有結(jié)構(gòu)的和可共享的數(shù)據(jù)集合。數(shù)據(jù)庫可以被直觀地理解為存放數(shù)據(jù)的倉庫,只不過這個倉庫在計算機(jī)的大容量存儲器上,例如,硬盤就是一種最常見的計算機(jī)大容量存儲設(shè)備。數(shù)據(jù)必須按一定的格式存放,因為它不僅需要存放,而且還要便于查找和使用。
數(shù)據(jù)庫管理系統(tǒng)(DBMS)是位于用戶與操作系統(tǒng)之間的完成數(shù)據(jù)管理的系統(tǒng)軟件。它是用戶與數(shù)據(jù)庫的接口。應(yīng)用程序一般要通過DBMS才能訪問數(shù)據(jù)庫。在數(shù)據(jù)庫建立、運用和維護(hù)時對數(shù)據(jù)庫進(jìn)行統(tǒng)一控制。
數(shù)據(jù)庫系統(tǒng)是指在計算機(jī)系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng),一般由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)(及其開發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理員和用戶構(gòu)成。數(shù)據(jù)庫是整個數(shù)據(jù)庫系統(tǒng)最基本的成分。數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心。數(shù)據(jù)庫管理員是數(shù)據(jù)庫系統(tǒng)的責(zé)任維護(hù)者,負(fù)責(zé)對數(shù)據(jù)庫系統(tǒng)的整體維護(hù)。
綜上所述,本題中只有B選項的描述是正確的。
42.D解析:選項A二維數(shù)組行下標(biāo)為1,即數(shù)組有一行元素,列下標(biāo)為4表示一行中包含4個元素,而初值列表中有5個元素,故A錯。選項B省略了列下標(biāo)故錯誤。選項C二維數(shù)組行下標(biāo)為2,數(shù)組有2行元素,而初值列表中有3行元素,故C錯誤。故D為所選。
43.D解析:本題考查do-while語句。C語言支持do-while語句,選項A)錯誤;do-while構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為零時結(jié)束循環(huán),故選項B)、C)都是錯誤的。
44.DD)【解析】隊列是只允許在一端刪除,在另一端插入的順序表,允許刪除的一端叫做隊頭,允許插入的一端叫做隊尾。隊列的操作數(shù)是依據(jù)先進(jìn)先出的原則進(jìn)行的。因此隊列亦稱作先進(jìn)先出的線性表,或后進(jìn)后出的線性表。
45.B對二叉樹的中序遍歷是指:首先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹。在遍歷左、右子樹時,注意依舊按照“左子樹一根結(jié)點一右子樹”的順序。本題的遍歷順序是這樣的:①首先訪問左予樹:BDEY;②在左子樹BDEY中,也按中序遍歷,先訪問左子樹DY;在左子樹DY中,也按中序遍歷,先訪問左子樹,左子樹沒有,則訪問根結(jié)點D,然后訪問右子樹Y;③接著訪問根B,再訪問右子樹E;④訪問左子樹BDEY后,接著訪問根結(jié)點A,接著訪問右子樹CFXZ;⑤右子樹CFXZ的訪問順序同理可得:FCZX。
46.B解析:編譯時,編譯系統(tǒng)不為局部變量分配內(nèi)存單元,而是在程序運行中,當(dāng)局部變量所在的函數(shù)被調(diào)用時,編譯系統(tǒng)根據(jù)需要要臨時分配內(nèi)存,調(diào)用結(jié)束空間釋放;全局變量一經(jīng)定義,編譯系統(tǒng)為其分配固定的內(nèi)存單元,在程序運行的自始至終都占用固定的單元。在考慮內(nèi)存不定的情況下,最好使用全局變量。
47.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'。
48.D解析:本題中首先定義了字符數(shù)組a,由于它的長度省略,所以其長度由初值個數(shù)確定,為9。接著將sizeof()函數(shù)返回的值賦給i(SIZeof()函數(shù)的作用是返回運算對象占用的字符數(shù)),所以i值為9。然后將strlen()函數(shù)的返回值賦給j(strlen()函數(shù)的作用是返回字符串的長度,不包括字符串的結(jié)束標(biāo)記'\\0'),所以j值為8,所以最后輸出的i,j的值為9,8。所以4個選項中D正確。
49.D解析:結(jié)構(gòu)體變量所占用內(nèi)存的字節(jié)數(shù)是其所有成員所占用內(nèi)存字節(jié)數(shù)之和。本題中整型變量i所占用的內(nèi)存是2字節(jié),字符型變量ch所占用的內(nèi)存是1字節(jié),雙精度型變量f所占用的內(nèi)存是8字節(jié),三者相加即可。
50.A\n兩個實體之間的聯(lián)系實際上是實體集問的函數(shù)關(guān)系,這種函數(shù)關(guān)系可以有下面幾種,即一對一的聯(lián)系、一對多(或多對一)的聯(lián)系和多對多的聯(lián)系;概念模型便于向各種模型轉(zhuǎn)換。由于概念模型不依賴于具體的數(shù)據(jù)庫管理系統(tǒng),因此,容易向關(guān)系模型、網(wǎng)狀模型和層次模型等各種模型轉(zhuǎn)換。
\n
51.D解析:do-while循環(huán)是先執(zhí)行循環(huán)體再進(jìn)行條件判斷,當(dāng)執(zhí)行了一次循環(huán)以后,t變成了-1,每次循環(huán)后t都減2,t將永遠(yuǎn)為負(fù)奇數(shù),又循環(huán)結(jié)束的條件是n=t,因此只有當(dāng)n為負(fù)奇數(shù)時才不會陷入死循環(huán)。
52.D解析:“&”是求址運算符,“*”是指變量說明符。選項A)、B)應(yīng)改為scanf('%d',p);選項C)中指針變量p未指向一確定的內(nèi)存單元,不能為其賦值,并且這樣做很危險,建議不使用。
53.C解析:軟件設(shè)計的基本目標(biāo)是用比較抽象概括的方式確定目標(biāo)系統(tǒng)如何完成預(yù)定的任務(wù),軟件沒計是確定系統(tǒng)的物理模型。軟件測試即使用人工或自動手段來運行或測定某個系統(tǒng)的過程,其日的在于檢驗它是否滿足規(guī)定的需求或是弄清預(yù)期結(jié)果與實際結(jié)果之間的差別。軟件調(diào)試后要進(jìn)行回歸測試,防止引進(jìn)新的錯誤。
54.D解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和,每個成員分別占有自己的內(nèi)存單元;共用伸變量所占的內(nèi)存長度等于最長的成員的長度。結(jié)構(gòu)件變量aa中,成員r1占2個字節(jié),r2占8個字節(jié),r3占4個字節(jié),共用體ua占8個字節(jié),所以共占用2+8+4+8=22個字節(jié)。
55.C解析:本題涉及C語言最基本的4個知識點:①C語言的保留字必須小寫;②變量的存儲類型不同,其存儲位置和生存期也不一樣:③C語言允許其注釋部分出現(xiàn)在程序中的任何位置;④宏定義以#define開頭,行末不需要加分號。
56.D解析:一個源文件中的外部變量的作用域是從定義該變量的位置開始到本文件結(jié)束。
57.D解析:本題考查指針變量的賦值。
**pp是定義了一個指向指針的指針變量,語句pp=&p的意思是將pp指向指針p,*p和**pp都是指針p所指的內(nèi)存空間的內(nèi)容,即b的值。
58.A解析:/*與*/之間的信息稱為注釋信息,在C語言中,允許在任何能夠插入空格符的位置插入注釋,但C語言的注釋不能進(jìn)行嵌套,故選項A正確:在C語言中,函數(shù)體是從花括號{開始,到花括號}結(jié)束。但沒有規(guī)定花括號{和}只能作為函數(shù)體定界符,故選項B錯誤;選項C中前半句是正確的,C程序由一個或多個函數(shù)所組成,但不是所有的函數(shù)都由用戶自己命名,有些函數(shù),比如主函數(shù)main()就不能由用戶來命名,故選C不正確;在C語言中明確規(guī)定每條語句以分號;結(jié)束,分號是語句不可缺少的一部分,故選項D不正確。所以,4個選項中選項A符合題意。
59.B
60.C解析:函數(shù)形參和實參分別占用不同的內(nèi)存單元,改變形參的值不會影響對應(yīng)實參的值,選項A)正確。指針類型的函數(shù)可以返回地址值,選項B)正確。在文件stdio.h中,NULL被定義為void型的指針,選項D)也正確。指針變量的值只能是存儲單元地址,而不能是一個整數(shù),選項C)錯誤。
61.A本題考查函數(shù)值的類型。在函數(shù)調(diào)用時,盡管Y的類型是float.x的類型是double,但是因為函數(shù)定義時沒有指定類型說明,系統(tǒng)默認(rèn)函數(shù)值的類型為int型,所以計算后Y的類型是int型。
62.A
63.A
64.C函數(shù)之間的數(shù)據(jù)傳遞。如果沒有指明函數(shù)值類型,則默認(rèn)函數(shù)返回值的類型為int型。
65.A比較兩個字符串的大小可以用strCmp函數(shù),選項A)正確。
66.C
67.AB項定義格式不對,tt[2]只有兩個元素,C項缺少了結(jié)構(gòu)體名,而結(jié)構(gòu)體名不可少,D項一樣缺少了結(jié)構(gòu)體名。
68.D解析:面向?qū)ο蟮氖澜缡峭ㄟ^對象與對象間彼此的相互合作來推動的,對象間的這種相互合作需要一個機(jī)制協(xié)助進(jìn)行,這樣的機(jī)制稱為消息。消息是一個實例與另一個實例之間傳遞的信息,它請求對象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。
69.D
\n當(dāng)i一0時,兩個if都不滿足,所以都不執(zhí)行,直接執(zhí)行i++語句,此時i為1,S為l,返回for循環(huán)中;當(dāng)i=1時,同樣不執(zhí)行兩個if語句,執(zhí)行i++后,i=2,s=3,返回for循環(huán)中;i=2時也不執(zhí)行if語句,執(zhí)行i++后,i=3,s=6,接著又執(zhí)行for循環(huán),此時符合第一個if語句,執(zhí)行到continue時不再執(zhí)行i++了,continue是跳出本次循環(huán),接著下次循環(huán)。永遠(yuǎn)這樣執(zhí)行下去,i的值永遠(yuǎn)為3,故選擇D選項。
\n
70.C解析:C語言規(guī)定如果全局變量與局部變量同名,則在局部變量的作用域內(nèi)全局變量不起作用。程序開頭定義的變量x為全局變量,函數(shù)incre中定義的變量x是局部靜態(tài)變量,存放在靜態(tài)存儲區(qū),incre調(diào)用結(jié)束后不釋放x占據(jù)的存儲單元。main函數(shù)中使用的x是全局變量x=3,所以main函數(shù)中調(diào)用函數(shù)incre兩次。調(diào)用過程如下。第1次調(diào)用:x=x*(x+1)=1×(1+1)=2,printf函數(shù)輸出2;第2次調(diào)用:x=x*(x+1)=2×(2+1)=6,printf函數(shù)輸出6。
71.D通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護(hù)到停止使用退役的過程稱為軟件生命周期。也就是說:軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。
軟件生命周期的主要活動階段為:
①可行性研究和計劃制定。確定待開發(fā)軟件系統(tǒng)的開發(fā)目標(biāo)和總的要求,給出它的功能、性能、可靠性以及接口等方面的可行方案,制定完成開發(fā)任務(wù)的實施計劃。
②需求分析。對待開發(fā)軟件提出的需求進(jìn)行分析并給出詳細(xì)定義,即準(zhǔn)確地確定軟件系統(tǒng)的功能。編寫軟件,規(guī)格說明書及初步的用戶手冊,提交評審。
③軟件設(shè)計。系統(tǒng)設(shè)計人員和程序設(shè)計人員應(yīng)該在反復(fù)理解軟件需求的基礎(chǔ)上,給出軟件的結(jié)構(gòu)、模塊的劃分、功能的分配以及處理流程。
④軟件實現(xiàn)。把軟件設(shè)計轉(zhuǎn)換成計算機(jī)可以接受的程序代碼。即完成源程序的編碼,編寫用戶手冊、操作手冊等面向用戶的文檔,編寫單元測試計劃。
⑤軟件測試。在設(shè)計測試用例的基礎(chǔ)上,檢驗軟件的各個組成部分。編寫測試分析報告。
⑥運行和維護(hù)。將已交付的軟件投入運行,并在運行使用中不斷地維護(hù),根據(jù)新提出的需求進(jìn)行必要而且可能的擴(kuò)充和刪改。
72.A題目中靜態(tài)局部變量a,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元,在程序整個運行期間都不釋放。所以第-次調(diào)用函數(shù)執(zhí)行n+=a++;時a先與n相加在再進(jìn)行自增。n的值為4,a的值為2,且a變量執(zhí)行完后空間沒有釋放。再執(zhí)行s:。+f(a)時,s的值為4,調(diào)用f(a)函數(shù)時n的返回值為n=3+2=5,且此時a的值為3了。所以s的值為9。
73.D循環(huán)隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進(jìn)行變化。因為是循環(huán)利用的隊列結(jié)構(gòu),所以對頭指針有時可能大于隊尾指針有時也可能小于隊尾指針,故本題答案為D)。
74.B函數(shù)聲明的一般形式為:“類型說明符被調(diào)函數(shù)名(類型形參,類型形參,……);”或“類型說明符被調(diào)函數(shù)名(類型,類型,……);”由于函數(shù)首部為intfun(doublex[10],int*n),因此B選項正確。
75.AA?!窘馕觥緾語言是函數(shù)式的語言。它的基本組成單位是函數(shù),在C語言中任何程序都是由一個或者多個函數(shù)組成的。
76.A注:因為不需要移動元素
77.A聲明靜態(tài)局部變量:函數(shù)調(diào)用結(jié)束后,其占用的存儲單元不釋放,在下次該函數(shù)調(diào)用時,該變量保留上一次函數(shù)調(diào)用結(jié)束時的值。本題子函數(shù)tim中的變量i和m均為靜態(tài)局部變量。所以第一次調(diào)用fun函數(shù),返回m的值為5,第二次再調(diào)用fun函數(shù)時,i的值為3,nl的值已經(jīng)是5了,所以執(zhí)行i+=m+1,i的值變?yōu)?,nl=i+x+Y=9+1+l=11。
78.B
79.C
80.B\n數(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典、判定表和判定樹是結(jié)構(gòu)化分析常用的工具。程序流程圖、N—S圖、PAD圖是詳細(xì)設(shè)計過程中常用的圖形工具。
\n
81.(1)錯誤:str=P;
正確:p=str;
(2)錯誤:i++;
正確:i++;p++;
(3)錯誤:a[i]=0;
正確:a[i]=ˊ\0ˊ;
【解析】由函數(shù)proc()可知,變量p是指向字符串的指針,其初始化應(yīng)為字符串首地址,因此,“str=p;”應(yīng)改為“p=str;”;將P指向的字符串中的每一個字符插在m個*之后,并存放在字符串?dāng)?shù)組a中,因此,“i++;”應(yīng)改為“i++;p++;”;操作完成后要為字符串?dāng)?shù)組添加結(jié)束符,因此“a[i]=0;”應(yīng)改為“a[i]=ˊ\0ˊ;”。
82.
題目中要求除了尾部的*號之外,將字符串中其他*號全部刪除。首先將所有不是*的字符放在字符串str中,然后將尾部的*接在字符的后面,最后為字符串str加上結(jié)束符。
2021年四川省南充市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.和順序棧相比,鏈棧有一個比較明顯的優(yōu)勢是()。
A.通常不會出現(xiàn)棧滿的情況B.通常不會出現(xiàn)??盏那闆rC.插入操作更容易實現(xiàn)D.刪除操作更容易實現(xiàn)
2.
3.以下選項中的表達(dá)式調(diào)用庫函數(shù)依次求-4.5的絕對值、-4.0的平方根值、30°角的正弦值和2的3次方值。正確的調(diào)用是()
A.abs(-4.5)B.sqrt(-4.0)C.sin(3.1416/6.0)D.paw(2.0,3.0)
4.有以下程序:#include<stdio.h>main(){intk=5;while(--k)printf(“%d”,k-=3);printf(“\n”);}程序運行后的輸出結(jié)果是()。
A.1B.2C.4D.死循環(huán)
5.對如下二叉樹進(jìn)行后序遍歷的結(jié)果為()。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
6.下述程序的運行結(jié)果是()。#includedstdio.h>#includedstrin9.h>main{char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}A.正數(shù)B.負(fù)數(shù)C.零D.不確定的值
7.以下程序的輸出結(jié)果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147
8.C語言中,組成數(shù)據(jù)文件的成分是()。A.A.記錄
B.數(shù)據(jù)行
C.數(shù)據(jù)塊
D.字符(字節(jié))序列
9.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序運行后的輸出結(jié)果是______。
A.運行后報錯B.66C.611D.510
10.下面程序的輸出結(jié)果是()。chars()="ABCD",*p;main(){for(p=s;p<s+4;p++)printf("%s\n",p);)
A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA
11.面向?qū)ο蠓椒ㄖ校^承是指()。
A.一組對象所具有的相似性質(zhì)B.一個對象具有另一個對象的性質(zhì)C.各對象之間的共同性質(zhì)D.類之間共享屬性和操作的機(jī)制
12.下列定義數(shù)組的語句中正確的是()。
A.#defmeN10intx[N];
B.intN=10;intx[N];
C.intx[0..10];
D.intx[];
13.在位運算中,操作數(shù)每右移一位,其結(jié)果相當(dāng)于()
A.操作數(shù)乘以2B.操作數(shù)除以2C.操作數(shù)除以16D.操作數(shù)乘以16
14.在最壞情況下比較次數(shù)相同的是()。A.冒泡排序與快速排序B.簡單插入排序與希爾排序C.簡單選擇排序與堆排序D.快速排序與希爾排序
15.排序方法中,將整個無序序列分割成若干小的子序列并分別進(jìn)行插入排序的方法,稱______。
A.希爾排序B.冒泡排序C.插入排序D.選擇排序
16.
17.一個二維數(shù)組的定義語句為“inta[3][4]={{3,4},{2,8,6}};”,則元素a[1][2]的值為()。
A.2B.4C.6D.8
18.以下正確的字符串常量是()。A.“\\\”B.‘a(chǎn)bc’C.OlympicGamesD.“”
19.在含有n個項點有e條邊的無向圖的鄰接矩陣中,零元素的個數(shù)為________。
A.eB.2e9C.n2-eD.n2-2e
20.用單鏈表方式存儲的線性表,存儲每個結(jié)點需要兩個域,一個數(shù)據(jù)域,另一個是()。
A.當(dāng)前結(jié)點的所在地址B.后繼結(jié)點的所在地址C.空指針域D.空閑域
二、2.填空題(20題)21.下列程序的運行結(jié)果是______。
main()
{inti,a[10];
a[0]=a[1]=1;
for(i=2;i<5;i++)
a[i]=a[i-2]+a[i-1];
for(i=0;i<5;i++)
{if(i%2==0)printf("\n");
printf("%d",a[i]);
}
}
22.在樹形結(jié)構(gòu)中,樹根結(jié)點沒有______。
23.以下程序運行后的輸出結(jié)果是【】。
structNODE
{intk;
structNODE*link;
};
main()
{structNODEm[5],*p=m,*q=m+4;
inti=0;
while(p!=q){
p->k=++i;p++;
q->k=i++;q--;
}
q->k=i;
for(i=0;i<5;i++)printf("%d",m[i].k);
printf("\n");
}
24.下面程序的功能是將字符串a(chǎn)下標(biāo)值為偶數(shù)的元素由小到大排序,其他元素不變,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{chara[]="labchmfye",t;
inti,j;
for(i=0;i<7;i+=2)
for(j=i+2;j<9;【】)
if(【】)
{t=a[i];a[i]=a[j];a[j]=t;j++;}
puts(a);
printf("\n");
}
25.以下程序的輸出結(jié)果是【】。
voidfun()
{staticinta;
a+=2;
printf("%d",A);
}
main()
{intcc;
for(cc=1;cc<=4;cc++)fun();
printf("\n");
}
26.下列程序的運行結(jié)果是______。
#include<stdio.h>
main()
{inta,b,c;
a=3;b=4;c=5;
if(a>b)
if(a>c)
printf("%d",a);
elseprintf("%d",b);
printf("%d\n",c);
}
27.下列程序的輸出結(jié)果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<;y++)
z=(*(ptr+y)<x?*(ptr+y);x;
printf("%d\n",z);
}
28.以下程序的輸出結(jié)果是【】。
main()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}}
29.若有定義語句chars[100],d[100];intj=0,i==0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達(dá)式)
while(s[i]=【】;j++;}
d[j]=0;
30.設(shè)有以下定義
struetss
{intinfo;struetss*link;}x,y,z;
且已建立如下圖所示鏈表結(jié)構(gòu):
請寫出刪除結(jié)點y的賦值語句【】。
31.以下程序用來輸出結(jié)構(gòu)體變量ex所占存儲單元的字節(jié)數(shù):
structst
{charname[20];doublescore;};
main()
{structstex;
printf("exsize:%d\n",sizeof(【】));
}
32.數(shù)據(jù)流的類型有______和事務(wù)型。
33.算法復(fù)雜度主要包括時間復(fù)雜度和【】復(fù)雜度。
34.軟件危機(jī)出現(xiàn)于60年代末,為了解決軟件危機(jī),人們提出了【】的原理來設(shè)計軟件,這就是軟件工程誕生的基礎(chǔ)。
35.若從鍵盤輸入58,則以下程序輸出的結(jié)果是______。
main{)
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
36.若a是血型變量,且a的初值為4,則計算a+=a-=a*a表達(dá)式后a的值為______。
37.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及對數(shù)據(jù)的操作運算。
38.以下程序運行后的輸出結(jié)果是【】。
main()
{charm;
m='B'+32;printf("%c\n",m);
39.在面向?qū)ο蠓椒ㄖ?,類的實例稱為______。
40.在面向?qū)ο蠓椒ㄖ?,對象之間進(jìn)行通信的構(gòu)造稱為()。
三、1.選擇題(20題)41.數(shù)據(jù)庫、數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)之間的關(guān)系是()。
A.數(shù)據(jù)庫包括數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)
B.數(shù)據(jù)庫系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)
C.數(shù)據(jù)庫管理系統(tǒng)包括數(shù)據(jù)庫和數(shù)據(jù)庫系統(tǒng)
D.三者沒有明顯的包含關(guān)系
42.以下正確的數(shù)組定義語句是()
A.inty[1][4]={1,2,3,4,5,}
B.floatx[3][]={{1},{2},{3}}
C.longs[2][3]={{1},{1,2}{1,2,3,}}
D.doublet[][3]={0}
43.6.C語言中下列敘述正確的是()
A.不能使用do-while語句構(gòu)成的循環(huán)
B.do-while語句構(gòu)成的循環(huán),必須用break語句才能退出
C.do-while語句構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為非零時結(jié)束循環(huán)
D.do-while語句構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為零時結(jié)束循環(huán)
44.下列隊列的描述中,正確的是()
A.隊列屬于非線性表B.隊列在隊尾刪除數(shù)據(jù)C.隊列按“先進(jìn)后出”進(jìn)行數(shù)據(jù)操作D.隊列按“先進(jìn)先出”進(jìn)行數(shù)據(jù)操作
45.有下列二叉樹,對此二叉樹中序遍歷的結(jié)果為()。
A.BDYEACFXZB.DYBEAFCZXC.ABCDEFXYZD.ABDYECFXZ
46.下列敘述中不正確的是()。
A.在C語言中調(diào)用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參
B.在C的函數(shù)中,最好使用全局變量
C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)
D.自動變量實質(zhì)上是一個函數(shù)內(nèi)部的局部變量
47.有以下程序
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,
48.有以下程序main(){chara[]={'a','b','c','d','e','f','g','h','\0'};inti,j;i=sizeof(a);j=strlen(a);printf("%d,%d\n"i,j);}程序運行后的輸出結(jié)果是
A.9,9B.8,9C.1,8D.9,8
49.在16位IBM-PC機(jī)上使用C語言,若有如下定義structdata{inti;charch;doublef;}b;則結(jié)構(gòu)變量b占用內(nèi)存的字節(jié)數(shù)是
A.1B.2C.7D.11
50.下列敘述中,正確的是()。
A.用E—R圖能夠表示實體集間一對一的聯(lián)系、一對多的聯(lián)系和多對多的聯(lián)系
B.用E—R圖只能表示實體集之間一對一的聯(lián)系
C.用E—R圖只能表示實體集之間一對多的聯(lián)系
D.用E—R圖表示的概念數(shù)據(jù)模型只能轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型
51.有以下程序段:intn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;)while(t!=n);為使程序不陷入死循環(huán),從鍵盤輸入的數(shù)據(jù)應(yīng)該是______。
A.任意正奇數(shù)B.任意負(fù)偶數(shù)C.任意正偶數(shù)D.任意負(fù)奇數(shù)
52.若有說明:int*p,m=5,n;以下正確的程序段是
A.p=&n;scanf("%d",&p);
B.p=&n;scanf("%d",*p)
C.scanf("%d",&n);*p=n;
D.p=&n;*p=m;
53.下列敘述中正確的是A.程序設(shè)計就是編制程序
B.程序的測試必須由程序員自己去完成
C.程序經(jīng)調(diào)試改錯后還應(yīng)進(jìn)行再測試
D.程序經(jīng)調(diào)試改錯后不必進(jìn)行再測試
54.若有下面的說明和定義,則sizeof(structaa)的值是______。structaa{intr1;doubler2;floatr3;unionuu{charul[5];longu2[2]}ua;}mya;
A.30B.29C.24D.22
55.下列敘述錯誤的是()。
A.在C語言中的保留字必須小寫
B.變量的存儲類型決定了變量的存儲位置及其生存期
C.宏定義以#define開頭,行末必須加分號
D.在C語言中的注釋行可以出現(xiàn)在程序的任何位置
56.一個源文件中的外部變量的作用域為()。
A.本文件的全部范圍B.本程序的全部范圍C.本函數(shù)的全部范圍D.從定義該變量的位置開始到本文件結(jié)束
57.若有定義和語句:int**pp,*p,a=20,b=10;pp=&p;p=&a;p=&b;printf(%d,%d\n",*p,**pp);則輸出結(jié)果是()。
A.20,10B.20,20C.10,20D.10,10
58.以下敘述中正確的是()。
A.C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方
B.花括號"{"和"}"只能作為函數(shù)體的定界符
C.構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名
D.分號是C語句之間的分隔符,不是語句的一部分
59.以下程序的輸出結(jié)果是(){intx=05;charz='a';printf("%d\n",(x&1)&&(z<'z'));}
A.0B.1C.2D.3
60.以下敘述中錯誤的是()。
A.改變函數(shù)形參的值,不會改變對應(yīng)實參的值
B.函數(shù)可以返回地址值
C.可以給指針變量賦一個整數(shù)作為地址值.
D.當(dāng)在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL
四、選擇題(20題)61.下列函數(shù)的類型是()。fun(doublex){floaty;y=3*x-4;returny;}
A.intB.不確定C.voidD.float
62.
63.
64.閱讀下面程序段,則執(zhí)行后的結(jié)果為()。
A.64B.8C.56D.0
65.下列選項中,能夠滿足“只要字符串sl等于字符串s2,則執(zhí)行sT”要求的是()。程序執(zhí)行后的輸出結(jié)果是()。
A.2B.1C.3D.0
66.
67.設(shè)有如下說明
typedefstruct
{intnumber;charclass;doublescore;}student;
則以下選項中,能正確定義結(jié)構(gòu)體數(shù)組并賦初值的語句是()。
A.studenttt[2]={{189,’A’,62},{190,’B’,75}};
B.studenttt[2]={189,’"A",62,190,"B",75};
C.structtt[2]={{189,’A’},{190,’B’}};
D.structtt[2]={{189,"A",62.5},{190,"B",75.0}};
68.在面向?qū)ο蠓椒ㄖ校粋€對象請求另一對象為其服務(wù)的方式是通過發(fā)送()。A.調(diào)用語句B.命令C.口令D.消息
69.
以下程序的輸出結(jié)果是()。
main
{inti=0,S=0;
for(;;)
{
if(i==3||i==5)continue;
if(i==6)break;
i++;
s+=i:
};
printf("%d\n",s);
}
A.10B.13C.21D.程序陷入死循環(huán)
70.以下程序的輸出結(jié)果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staticintx=1;x*=x+1;printf("%d",x);}
A.33B.22C.26D.25
71.在軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是()。A.概要設(shè)計B.詳細(xì)設(shè)計C.可行性分析D.需求分析
72.有以下程序:
程序運行后的輸出結(jié)果是()。
A.9B.8C.7D.10
73.對于循環(huán)隊列,下列敘述中正確的是()。A.隊頭指針是固定不變的
B.隊頭指針—定大于隊尾指針
C.隊頭指針_定小于隊尾指針
D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針
74.若有以下函數(shù)首部:
intfun(doublex[10],int*n)
則下面針對此函數(shù)的函數(shù)聲明語句中正確的是()。
A.intfun(double,int);
B.intfun(double木,int*);
C.intmn(double*x,intn);
D.intfun(doublex,intint*n)
75.C語言的基本單位是()。
A.函數(shù)B.過程C.子程序D.子函數(shù)
76.(74)用鏈表表示線性表的優(yōu)點是()
A.便于插入和刪除操作
B.數(shù)據(jù)元素的物理順序與邏輯順序相同
C.花費的存儲空間較順序存儲少
D.便于隨機(jī)存取
77.有以下程序:
程序執(zhí)行后的輸出結(jié)果是()。
A.5,11B.5,5C.11,11D.11,5
78.若有說明:inti,j=7,*p=&i;,則與i=j;等價的語句是()。
A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;
79.
80.結(jié)構(gòu)化分析可以使用的工具是()。
A.N—s圖B.DFD圖C.PAD圖D.程序流程圖
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:在字符串的最前端加入m個*號,形成新串,并且覆蓋原串。例如,用戶輸入字符串a(chǎn)bcd(以Enter鍵結(jié)束),然后輸入m值為3,則結(jié)果為***abcd。注意:字符串的長度最長允許為79。請修改函數(shù)proc()中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能是:除了尾部的*號之外,將字符串中其他*號全部刪除。形參P已指向字符串中最后一個字母。在編寫函數(shù)時,不得使用C語言的字符串函數(shù)。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是abcdefg****。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填人所編寫的若干語句。試題程序:
參考答案
1.A
2.D
3.C
4.A“--k”是先自減再使用,所以第1次判斷條件即while(4),條件為真輸出k的值,k=4-3,結(jié)果為1;第2次判斷條件即while(0),條件為假,結(jié)束循環(huán),輸出回車換行符。故本題答案為A選項。
5.D解析:后序遍歷指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,道先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點:并且遍歷左、右子樹時,仍然先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點。
6.A本題考查符符串比較函數(shù)和兩個字符串比較的原則這兩個知識點。
(1)兩字符串比較的原則是依次比較兩個字符串同一位置的一對字符,若它們的ASCII碼值相同,則繼續(xù)比較下一對字符,若它們的ASCII碼值不同,則ASCII碼值較大的字符所在的字符串較大;若所有字符相同,則兩個字符串相等;若一個字符串全部i個字符與另一個字符串的前i個字符相同,則字符串較長的較大(2)strcmp(s1,s2)的返回值,當(dāng)str1<str2時,返回值為負(fù)數(shù);當(dāng)str1=str2時,返回0;當(dāng)str1>str2,返回值為正數(shù)。
7.B第一個for循環(huán)的作用是讓p指向每行的首地址,第二個for循環(huán)的作用是把它指向的字符串輸出,故選擇B選項。
8.D解析:C語言中的文件是流式文件。流式文件是一種無結(jié)構(gòu)文件,即整個文件是一串字符流或二進(jìn)制流。文件的存取以字符或字節(jié)為單位。
9.A解析:本題考核的知識點是通過指針引用數(shù)組的元素的方法.本題中首先定義了一個一維數(shù)組a并初始化,由于定義該數(shù)組的時候省略了長度,因此該數(shù)組的長度為初始化時候賦初值的個數(shù)即為12。數(shù)組名a代表數(shù)組的首地址,所以*p=a+5語句使得p指向數(shù)組的第6個元素,而在程序中定義了一個指針q并讓它指向空,實際上程序并沒有在內(nèi)存中為指針q開辟存儲空間,這樣給q賦值不允許的,故該程序運行后報錯。所以,4個選項中選項A符合題意。
10.A解析:p為指針型變量。第一次循環(huán),p=s,p的值為字符數(shù)組s的首地址,輸出字符串'ABCD'。p++,第二次循環(huán),p的值為字符數(shù)組s的首地址加1,輸出字符串'BCD'。p++,第三次循環(huán),p的值為字符數(shù)組s的首地址加2,輸出字符串'CD'。p++,第4次循環(huán),p的值為字符數(shù)組s的首地址加3,輸出字符串\'D'。
11.D繼承是面向?qū)ο蟮姆椒ǖ囊粋€主要特征,是使用已有的類的定義作為基礎(chǔ)建立新類的定義技術(shù)。廣義的說,繼承是指能夠直接獲得已有的
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東司法警官職業(yè)學(xué)院《汽車工程學(xué)A》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東輕工職業(yè)技術(shù)學(xué)院《電視畫面編輯》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東南華工商職業(yè)學(xué)院《現(xiàn)代生物制藥工程原理》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東茂名健康職業(yè)學(xué)院《工程測量》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海教育版英語八年級下冊Module 3 Unit 6 單元基礎(chǔ)過關(guān)課后作業(yè)課件
- 七年級語文上冊教學(xué)工作計劃概覽
- 教育與發(fā)展:五年級數(shù)學(xué)教學(xué)的新思路
- 《回顧2023-邁向光輝未來-班主任工作總結(jié)》
- 【名師一號】2021年新課標(biāo)版歷史必修1-單元檢測-第二單元
- 學(xué)院合同簽署授權(quán)書
- 基礎(chǔ)會計(第7版)ppt課件完整版
- (完整版)保溫工藝課件
- 設(shè)計驗證和生產(chǎn)確認(rèn)[福特FORD]
- 汽車4S店八大運營業(yè)績指標(biāo)管控培訓(xùn)_89頁
- 工作場所空氣中有害物質(zhì)監(jiān)測的采樣規(guī)范課件159-2004
- 設(shè)備安裝、調(diào)試及驗收質(zhì)量保證措施
- 火力發(fā)電廠生產(chǎn)技術(shù)管理導(dǎo)則
- 合同范本之采購合同誰保管
- 國家自然科學(xué)基金進(jìn)展報告
- 汽輪機(jī)葉片振動與分析
- 地質(zhì)工作個人述職報告三篇
評論
0/150
提交評論