版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021-2022年江西省萍鄉(xiāng)市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列函數(shù)的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}
A.將a所指字符串賦給b所指空間
B.使指針b指向a所指字符串
C.將a所指字符串和b所指字符串進行比較
D.檢查a和b所指字符串中是否有‘\0’
2.若變量a,b已正確定義,且b已正確賦值,則合法的語句是()。
A.b=double(b);B.(int)a=(int)b;C.a=a++=5;D.a=double(b);
3.“商品”與“顧客”兩個實體集之間的聯(lián)系一般是
A.一對一B.一對多C.多對一D.多對多
4.算法分析的兩個主要方面是()。
A.空間復(fù)雜性和時間復(fù)雜性B.正確性和簡明性C.可讀性和文檔性D.數(shù)據(jù)復(fù)雜性和程序復(fù)雜性
5.下列語句中,顯示沒有下畫線的超鏈接的語句是()。
A.a{text—decoration:none}
B.a{text—decoration:nounderline}
C.a{underline:none}
D.a{decoration:nounderline}
6.
7.若有序表的關(guān)鍵字序列為(b,c,d,e,f,g,q,r,s,t),則在二分查找關(guān)鍵字b的過程中,先后進行的關(guān)鍵字依次為()
A.f,c,BB.f,d,BC.g,c,BD.g,d,B
8.若i和k都是int類型變量,有以下for語句:for(i=0,k=-1;k=1;k++)printf("*****\n");下面關(guān)于語句執(zhí)行情況的敘述中正確的是()。
A.循環(huán)體執(zhí)行兩次B.循環(huán)體執(zhí)行一次C.循環(huán)體一次也不執(zhí)行D.構(gòu)成無限循環(huán)
9.與“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;
10.算法的時間復(fù)雜度是指()A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法程序中的指令條數(shù)D.算法執(zhí)行過程中所需要的基本運算次數(shù)
11.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序輸出為()。
A.編譯有錯B.0,0,0,3C.1,1,2,0D.0,1,2,0
12.以下說法正確的是()。
A.函數(shù)可以返回另一個函數(shù)的整個函數(shù)體
B.函數(shù)返回值只能是基本數(shù)據(jù)類型的數(shù)值或指針
C.函數(shù)返回值可以是一個指向函數(shù)的指針
D.函數(shù)返回值可以是一個數(shù)組,同時返回多個值
13.
14.以下語句中,正確制作電子郵件鏈接的是()。
15.若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)A.getc()B.gets()C.getchar()D.scanf()
16.設(shè)有以下語句:intx=10;x+=3+x%(3),則x的值是()。
A.14B.15C.11D.12
17.設(shè)主串T='aabaababaabaa',子串P:'abab',則簡單模式匹配算法中直至匹配成功,單個字符比較的次數(shù)為()。
A.12B.13C.14D.15
18.一棵完全二叉樹中根結(jié)點的編號為1,而且23號結(jié)點有左孩子但沒有右孩子,則完全二叉樹總共有____個結(jié)點。
A.24B.45C.46D.47
19.
20.以下符號中不能作為標識符的是()。A.256B.voidC.vanfD.4Struct
二、2.填空題(20題)21.下列程序的輸出結(jié)果是______。
main()
{inta+,b=2,C=3,t=0;
ifa<B){t=a;a=b;b=t;}
ifa<C){t=a;a=c;c=t;}
printf("%d,%d,%dln",a,b,C);
}
22.下面程序的功能是:對字符串從小到大進行排序并輸出,請?zhí)羁铡?/p>
#include"string.h"
#include"stdio.h"
sort(char*a[],intn)
{inti,j;
char*p;
for(j=1;j<=n-1;j++)
for(i=0;i<n-j;i++)
if(())>0)
{p=a[i];
a[i]=a[i+1];
a[i+1]=p;}
}
main()
{inti;
char*book[]={"itisme","itisyou","howareyou","fine","goodnight","goodbye"};
sort(());
for(i=0;i<6;i++)
printf("%s\n",book[i]);
}
23.一般來說,算法可以用順序、選擇和______三種基本控制結(jié)構(gòu)組合而成。
24.定義長度為12的數(shù)組,下面四種方法中正確的有【】。
①intx[12];②intn=12;③constintn=12;④intx[]={1,2};
intx[n];intx[n];
25.設(shè)y為血型變量,請寫出描述“y是偶數(shù)”的表達式______。
26.與結(jié)構(gòu)化需求分析方法相對應(yīng)的是【】方法。
27.度為10的線性表進行冒泡排序,最壞情況下需要比較的次數(shù)為______。
28.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
29.閱讀下面程序,則程序的執(zhí)行結(jié)果為【】。
#include"stdio.h"
fun(intk,int*p)
{inta,b;
if(k==1‖k==2)
*p=1;
else{fun(k-1,&a);
fun(k-2,&b);
*p=a+b;}}
main()
{intx;
fun(6,&x);
printf("%d\n",x);}
30.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。
31.以下程序的輸出結(jié)果是______。
voidfun()
{staticinta=0;
a+=2;printf("%d",a);
}
main()
{intcc;
for(cc=1;cc<4;cc++)fun();
printf("\n");
}
32.若有定義inta=10,b=9,c=8;,接著順序執(zhí)行下列語句,變量b中的值是【】。
c=(a-=(b-5));
c=(a%11)+(b=3);
33.若有定義:inta=4,b=5,c=6;然后順序執(zhí)行下列語句后,變量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);
34.為了便于對照檢查,測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的【】兩部分組成。
35.在面向?qū)ο蠓椒ㄖ?,【】描述的是具有相似屬性與操作的一組對象。
36.在鏈表的運算過程中,能夠使空表與非空表的運算統(tǒng)一的結(jié)構(gòu)是______。
37.在進行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊,其中______的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。
38.定義inta=5,b;,則執(zhí)行表達式b=++a*--a之后,變量b的值為【】。
39.深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為______。
40.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間,請?zhí)羁?。st=(char*)【】;
三、1.選擇題(20題)41.若有定義:int*p[3];,則以下敘述中正確的是()。
A.定義了一個基類型為int的指針變量p,該變量具有三個指針
B.定義了一個指針數(shù)組p,該數(shù)組含有三個元素,每個元素都是基類型為int的指針
C.定義了一個名為*p的整型數(shù)組,該數(shù)組含有三個int類型元素
D.定義了一個可指向一維數(shù)組的指針變量p,所指一維數(shù)組應(yīng)具有三個int類型元素
42.C語言運算對象必須是整型的運算符是______。
A.%=B./C.=D.<=
43.變量a所占的內(nèi)存字節(jié)數(shù)是______。unionU{charst[4];inti;long1;};structA{intc;unionUu;}a;
A.4B.5C.6D.8
44.在深度為6的滿二叉樹中,結(jié)點的個數(shù)為()。
A.32B.31C.16D.15
45.設(shè)變量x和y均已正確定義并賦值。下列if語句中,在編譯時將產(chǎn)生錯誤信息的是
A.ifx++);
B.it(x>y&&y!=0);
C.if(x>0)x--
D.if(y<0){;}elsey++;elsex++;
46.下列敘述中正確的是()。
A.線性鏈表是線性表的鏈式存儲結(jié)構(gòu)B.棧與隊列是非線性結(jié)構(gòu)C.雙向鏈表是非線性結(jié)構(gòu)D.只有根結(jié)點的二叉樹是線性結(jié)構(gòu)
47.下面()不是軟件調(diào)試的主要方法?
A.搜索法B.原因排除法C.回溯法D.強行排錯法
48.下面程序的輸出結(jié)果為______。#include<string.h>main(){charp1[7]="abc",p2[]="ABC",str[50]="xyz";strcpy(str,strcat(p1,p2));printf("%s",str);}
A.xyzabcABCB.abcABCC.xyzabcD.xyzABC
49.算法中,對需要執(zhí)行的每一步操作,必須給出清楚、嚴格的規(guī)定。這屬于算法的A.正當(dāng)性B.可行性C.確定性D.有窮性
50.數(shù)據(jù)庫設(shè)計包括兩個方面的設(shè)計內(nèi)容,它們是()
A.概念設(shè)計和邏輯設(shè)計B.模式設(shè)計和內(nèi)模式設(shè)計C.內(nèi)模式設(shè)計和物理設(shè)計D.結(jié)構(gòu)特性設(shè)計和行為特性設(shè)計
51.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.選擇排序C.快速排序D.歸并排序
52.有以下程序main(){char*s[]={"one","two","three"},*P;p=s[1];printf("%c,%s\n",*(p+1),s[0]);}執(zhí)行后輸出結(jié)果是
A.n,twoB.t,oneC.w,oneD.o,two
53.下列描述說明正確的是()
A.定義結(jié)構(gòu)體時,它的每個成員的數(shù)據(jù)類型可以不同
B.不同結(jié)構(gòu)體的成員名不能相同
C.結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型不能是結(jié)構(gòu)體本身
D.結(jié)構(gòu)體定義時各成員項之間可用分號也可用逗號隔開
54.假定w、x、y、m均為int型變量,則執(zhí)行下列的語句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;
A.3B.4C.5D.6
55.已經(jīng)定義ch為字符型變量,以下賦值表達式中錯誤的是______。
A.ch='\'B.ch=62+3C.ch=NULLD.ch='\xaa'
56.下列程序的運行結(jié)果是#include"stdio.h"main(){intx=-9,y=5,z=8;if(x<y)if(y<0)z=0;elsez+=1;printf("%d\n",z);}
A.6B.7C.8D.9
57.在數(shù)據(jù)結(jié)構(gòu)中,從邏輯可以把數(shù)據(jù)結(jié)構(gòu)分為______。
A.動態(tài)結(jié)構(gòu)和靜態(tài)結(jié)構(gòu)B.緊湊結(jié)構(gòu)和非緊湊結(jié)構(gòu)C.線性結(jié)構(gòu)和非線性結(jié)構(gòu)D.內(nèi)部結(jié)構(gòu)和外部結(jié)構(gòu)
58.下面程序main(){intx=100,a=10,b=20,okl=5,ok2=0;if(a<B)if(b!=15)if(!ik1)x=1;elseif(ok2)x=10;x=-1;printf("%d\n",x);}的輸出是______。
A.-1B.0C.1D.不確定的值
59.有以下程序:#include<stdio.h>structtt{intx;structtt*y;}*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a;for(i=1;i<=2;i++){printf("%d,",p->x);p=p->y;}}程序的運行結(jié)果是()。
A.20,30,B.30,17C.15,30,D.20,15,
60.用MIPS來衡量計算機性能的指標是()
A.存儲容量B.可靠性C.處理能力D.運算速度
四、選擇題(20題)61.下面結(jié)構(gòu)體的定義語句中,錯誤的是()。
A.structord{intx;intY;intz;}structorda;
B.structord{intx;imY;imz;};structorda;
C.structord{intx;intY;intZ;}a;
D.struct{intx;intY;intz;}a;
62.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點訪問順序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
63.執(zhí)行語句“for(i=1;i++<;4;);”后,變量i的值是()。
A.3B.4C.5D.不定
64.當(dāng)執(zhí)行以下程序段時,()。x=-l:do{x=x*X;)while(!x);A.循環(huán)體將執(zhí)行一次B.循環(huán)體將執(zhí)行兩次C.循環(huán)體將執(zhí)行無限次D.系統(tǒng)將提示有語法錯誤
65.以下結(jié)構(gòu)體類型說明和變量定義中正確的是()。
66.下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進行查找的是()。
A.順序存儲的有序線性表B.線性鏈表C.二叉鏈表D.有序線性鏈表
67.有以下程序:
則以下函數(shù)調(diào)用語句錯誤的是()。
A.
B.
C.
D.
68.讀取二進制文件的函數(shù)調(diào)用形式為:fread(buffersize,count,fp);,其中buffer代表的是()。
A.一個文件指針,指向待讀取的文件
B.一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)
C.一個內(nèi)存塊的首地址,代表讀人數(shù)據(jù)存放的地址
D.一個內(nèi)存塊的字節(jié)數(shù)
69.下列程序的輸出結(jié)果是()。
main
{inta,b,d=25;
a=d/10%9;
b=a&&(-1);
printf("%d,%d\n",a,b);}A.A.6,1B.2,1C.6,0D.2,0
70.有以下程序:
程序運行后的輸出結(jié)果是()。
A.2,1,1,2B.1,2,1,2C.2,1,2,1D.1,2,2,1
71.以下選項中不屬于c語言的類型的是()。
A.unsignedlongint
B.longshort
C.unsignedint
D.signedshortint
72.若程序有宏定義:#defineNl00,則以下敘述中正確的是()。
A.宏定義中定義了標識符N的值為整數(shù)100
B.在編譯程序?qū)源程序進行預(yù)處理時用l00替換標識符N
C.對C源程序進行編譯時用100替換標識符N
D.在運行時用100替換標識符N
73.若有以下程序段,w和k都是整型變量。
w=k;
LB:if(w==0)gotoLE;
w--;
printf("*");
gotoLB;
LE:
M
則不能與上面程序段等價的循環(huán)語句是
A.for(w=k;w!=0;w--)printf("*");
B.w=k;<CR>while(w--!=0)printf("*");w++;
C.w=k;<CR>do{w--;printf("*");}while(w!=0);
D.for(w=k;w;--w)printf("*");
74.以下程序運行后的輸出結(jié)果是()。
A.2B.1C.3D.O
75.以下程序的輸出結(jié)果是()。
#definef(x)x*x
main
{inta=6,b=2,c;
c=f(a)/f(b);
printf(“%d\n”,c);
}
A.9B.6C.36D.18
76.下列程序的輸出結(jié)果是()。#include<stdio.h>main{inta=3,b=2,c=1;if(a<b)if(b<0)c=0;elsec++:printf("%d\n",c);}A.2B.0C.1D.不確定的值
77.在JavaScript語言中,要定義局部變量則可以()。
A.由關(guān)鍵字private在函數(shù)內(nèi)定義
B.由關(guān)鍵字private在函數(shù)外定義
C.由var在函數(shù)內(nèi)定義
D.由關(guān)鍵字var在函數(shù)外定義
78.有以下程序:
main()
{
chara[7]="a0\OaO\0";inti,j;
i=sizeof(a);j=strlen(a);
printf("%d%d\n",i,j);
}
程序運行后的輸出結(jié)果是()。
A)22B)76
C)75D)62
79.
80.
五、程序改錯題(1題)81.程序改錯題(共l8分)下列給定程序中,函數(shù)fun的功能是:傳人一個整數(shù)m,計算如下公式的值。例如,若輸入5,則應(yīng)輸出一0.283333。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
六、程序設(shè)計題(1題)82.請編一個函數(shù)voidproc(inttt[M][N],intpp[N]),tt指向一個M行N列的二維數(shù)組,求出二維數(shù)組每行中最大元素,并依次放入pp所指的一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中給出。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
參考答案
1.A題目的fun函數(shù)內(nèi),while循環(huán)條件為“(*b=*a)!=‘\\0’”,執(zhí)行時先把指針a所指向的字符賦給指針b所在的內(nèi)存單元。如果該字符不是結(jié)束標識‘\\0’,執(zhí)行循環(huán)體“a++;b++;”,指針a、b分別指向下一個字符單元。再判斷循環(huán)條件,如果成立,繼續(xù)把指針a所指向的字符賦給指針b所在的內(nèi)存單元,直到遇到結(jié)束標識為止。故本題答案為A選項。
2.B在C語名中規(guī)定進行強制類型轉(zhuǎn)換的格式是:(類型名)變量名;并且給表達式賦值。
3.D解析:兩個實體間的聯(lián)系可以歸納為3種類型:一對一聯(lián)系:一對一的聯(lián)系表現(xiàn)為主表中的每一條記錄只與相關(guān)表中的一條記錄相關(guān)聯(lián)。一對多聯(lián)系,一對多的聯(lián)系表現(xiàn)為主表中的每一條記錄與相關(guān)表中的多條記錄相關(guān)聯(lián)。多對多聯(lián)系:多對多的聯(lián)系表現(xiàn)為二個表中的多個記錄在相關(guān)表中同樣有多個記錄其匹配。本題中一個顧客可以購買多種商品,同一種商品可以有多個顧客購買,所以商品和顧客之間是多對多的聯(lián)系。
4.A
5.A
6.D
7.A
8.D此題考查的是基本的循環(huán),答案為D。
9.By=(x=)071:x<0?-1:0)中有兩個三目運算符,因此按從右到在的順序運算,可寫成y=(x>071:(x<0?-1:0)),故選擇8選項。
10.D解析:算法的時間復(fù)雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算工具以及程序員的水平無關(guān)。
選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤。因為算法所編寫的程序長度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。
選項C錯誤,因為根據(jù)一個算法所編制出的程序程序中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。
所以,本題的正確答案為D。
11.AC語言中規(guī)定else總是和之前與其最近的且不帶else的if配對。題目中,“if(a=1)b=1;c=2;”默認省略了else,導(dǎo)致下一句else沒有匹配語句。故本題答案為A選項。
12.C函數(shù)的返回值是通過return語句返回的,返回值是一個表達式,不限于基本數(shù)據(jù)類型或指針,也可以是結(jié)構(gòu)體類型等,但不能是數(shù)組,選項A、B、D錯誤;函數(shù)的返回值可以是一個指向函數(shù)的指針,選項C正確。故本題答案為C選項。
13.A
14.C
15.Bscanf(\u3000)語句中用“空格”間隔不同的字符串,空格將被全部忽略掉,所以用scanf(\u3000)函數(shù)不能輸入空格;getehar(\u3000)函數(shù)用于輸入字符,其調(diào)用形式為:ch=getelaar(\u3000),getehar(\u3000)函數(shù)從終端讀入一個字符作為函數(shù)值,把讀入的字符賦給變量ch。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶敲入Enter鍵時,讀入才開始執(zhí)行。gets(\u3000)函數(shù)的凋用形式為:gets(str_adr),其中stradr是存放輸入字符串的起始地址,可以是字符數(shù)組名、字符數(shù)組元素的地址或字符指針變量。9ets函數(shù)用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止。getc(\u3000)函數(shù)的調(diào)用形式為:ch=getc(pf)其中pf是文件指針。函數(shù)的功能是從pf指定的文件中讀入一個字符,并把它作為函數(shù)值返回。
16.A
17.A
18.C
19.B
20.B
21.3123,1,2解析:分析程序,第一個if句,a=1,b=2,控制條件a<b成立,則交換a、b的值,此時a=2,b=1。第二個if語句,a=2,c=3,控制條件a<c成立,則交換a、c的值,此時a=3,c=2。
22.strcmp(a[i]a[i+1])book6strcmp(a[i],a[i+1])book,6解析:此程序段的功能是使字符串從大到小進行排列。顯然,第一空白處,是利用strcmp函數(shù)比較字符串a(chǎn)[i]和a[i+1]的大小,若不符合題意,就進行調(diào)換;main函數(shù)中,sort函數(shù)是對數(shù)組book中的字符串按從小到大進行排序,所以第二空白處填入“book,6”(6是指book所指向的字符串的個數(shù))。
23.循環(huán)循環(huán)解析:算法一般由順序,選擇和循環(huán)三種基本控制結(jié)構(gòu)組合而成。
24.①③
25.(y%2)==0(y%2)==0解析:因符合偶數(shù)的條件是對2取余為0,所以要描述y是偶數(shù)的表達式是(y%2)==0。
26.結(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ù)。
27.4545解析:對于長度為N的線性表,在最壞情況下(即線性表中元素現(xiàn)在的順序與目標順序正好相反),冒泡排序需要經(jīng)過N/2遍的從前往后的掃描和N/2遍的從后往前的掃描,需要的比較次數(shù)為N(N-1)/2。
28.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數(shù),從輸出結(jié)果來看,s保存的是最終結(jié)果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內(nèi)容”加上循環(huán)變量i,又因為i在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內(nèi)容”應(yīng)分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內(nèi)容”應(yīng)是t*10。
29.88解析:函數(shù)可以被遞歸調(diào)用,但是不能遞歸定義。有返回值的函數(shù)調(diào)用可以出現(xiàn)在表達式可以出現(xiàn)的任何地方。
30.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中度為2的結(jié)點數(shù)為18,故葉子結(jié)點數(shù)為18+1=19個。
31.246
32.33解析:這里:b-5=4,a-=4之后a的值為6,并把它賦給c。此時b的值并未被改變。在第2個表達式中,也只有賦值表達式b=3改變了b的值。所以兩行語句執(zhí)行完畢,b的值應(yīng)該為3。
33.11解析:本題考查的是基本賦值運算符和賦值表達式。a-=(b-5)等價于a=a-(b-5)=4,c=a=4;a%3=1,c=(a%3)+(b=1)=2,其中b的值被b=1確定為1。
34.輸出結(jié)果輸出結(jié)果解析:注意:測試的基本方法和步驟。
35.類類解析:在面向?qū)ο蠓椒ㄖ?,類描述的是具有相似屬性與操作的一組對象。
36.循環(huán)鏈表循環(huán)鏈表解析:在循環(huán)鏈表中,由于設(shè)置了一個頭結(jié)點,因此在任何情況下,循環(huán)鏈表中至少有一個結(jié)點存在,從而使空表與非空表的運算統(tǒng)一。
37.驅(qū)動模塊驅(qū)動模塊解析:由于模塊通常不是獨立的程序,自己不能運行,而需要其他模塊調(diào)用或驅(qū)動,同時被測試模塊還要去調(diào)用其他模塊,前者稱為驅(qū)動模塊,后者稱為承接模塊。其中驅(qū)動模塊的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果;承接模塊的作用是代替被測模塊,調(diào)用其他模塊。
38.2525解析:#NAME?
39.1616解析:滿二叉樹的葉子結(jié)點都在最后一層,即第4層,且第4層的結(jié)點達到最大數(shù),即25-1=16。
40.malloc(11)malloc函數(shù)的格式是void*(或char*)malloc(size),size表示應(yīng)分配的存儲區(qū),此題要分配11字節(jié)的單元,把11代入即可。
41.B解析:當(dāng)一個數(shù)組中的元素均為指針類型數(shù)據(jù)時,該數(shù)組就稱為指針數(shù)組。int*p[3]表示此數(shù)組是指針類型的,每個數(shù)組元素(指針變量)都是指向一個整型的指針變量。
42.A解析:在C語言中,模運算(即取余運算%)的運算對象必須是整型數(shù)據(jù)(常量、變量或表達式)。
43.C解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占內(nèi)存長度之和,而共用體變量所占的內(nèi)存長度等于最長的成員的長度。本題結(jié)構(gòu)體變量a中成員c為整型占2個字節(jié),共用體變量u最大長度為4個字節(jié),故選C。
44.A解析:深度為m的二叉樹最多有2m-1個結(jié)點,滿二叉樹中葉子結(jié)點的個數(shù)為2m-1個。本題中,26-1=25=32。
45.C解析:選項A)和選項B)在條件判斷語句的后面是空語句,什么都不做;在選項D)中,if后面是一個復(fù)合空語句;而在選項C)中,在X--后面少了一個分號,所以程序段在編譯時,會出現(xiàn)語法錯誤。
46.A解析:一個非空的數(shù)據(jù)結(jié)構(gòu)如果滿足下列兩個條件:(1)有且只有一個根結(jié)點;(2)每一個結(jié)點最多有一個前件,也最多有一個后件,則稱為線性結(jié)構(gòu)。線性鏈表是線性表的鏈式存儲結(jié)構(gòu),選項A的說法是正確的。棧與隊列是特殊的線性表,它們也是線性結(jié)構(gòu),選項B的說法是錯誤的:雙向鏈表是線性表的鏈式存儲結(jié)構(gòu),其對應(yīng)的邏輯結(jié)構(gòu)也是線性結(jié)構(gòu),而不是非線性結(jié)構(gòu),選項C的說法是錯誤的;二叉樹是非線性結(jié)構(gòu),而不是線性結(jié)構(gòu),選項D的說法是錯誤的。因此,本題的正確答案為A。
47.A
48.B解析:strcpy(str1,s1):作用是將字符串s1拷貝到字符數(shù)組str1中去。strcat(字符數(shù)組1,字符數(shù)組2):把字符串2接到字符串1的后面,結(jié)果放在字符數(shù)組1中,函數(shù)調(diào)用后返回字符數(shù)組1的地址。本題定義了三個字符數(shù)組p1,p2,sir,strcat(p1,p2)函數(shù)的作用是將字符串?dāng)?shù)組p2接到字符串p1的后面,結(jié)果放在字符數(shù)組p1中,再通過strcpy()函數(shù)將該字符串拷貝到str數(shù)組中,原str數(shù)組中的字符串xyz被覆蓋,因此打印輸出字符串str即可得到abcABC。
49.C解析:本題考查一個算法應(yīng)當(dāng)具有5個特性,即有窮性、確定性、可行性、有零個或多個輸入以及有一個或多個輸出。算法的確定性是指:算法中每一條指令必須有確切的含義,讀者理解時不會產(chǎn)生二義性。并且在任何條件下,算法只有唯一的一條執(zhí)行路徑,即對于相同的輸入只能得出相同的執(zhí)行結(jié)果。
50.A解析:模式設(shè)計和內(nèi)模式設(shè)計是概念設(shè)計的兩種方法。物理設(shè)計是根據(jù)特定的計算機系統(tǒng),對數(shù)據(jù)的存儲結(jié)構(gòu)和存取方法進行設(shè)計,從而實現(xiàn)從邏輯結(jié)構(gòu)到物理結(jié)構(gòu)的轉(zhuǎn)換。從系統(tǒng)開發(fā)的角度來看,結(jié)構(gòu)特性設(shè)計和行為特性-設(shè)計是數(shù)據(jù)庫應(yīng)用系統(tǒng)所具有的兩個特性。結(jié)構(gòu)特性的設(shè)計,設(shè)計各級數(shù)據(jù)庫模式(靜態(tài)特性):行為特性的設(shè)計,改變實體及其特性,決定數(shù)據(jù)庫系統(tǒng)的功能(動態(tài)特性)。
51.A解析:以下幾種算法的時間復(fù)雜度分別為:冒泡排序(n2);選擇排序(n2);快速排序(nlog2n);歸并排序(nlog2n)。當(dāng)排序元素序列基本有序的情況下,冒泡排序的交換次數(shù)為0,只是順序掃描數(shù)據(jù)而已,所以其效率是最高的。
52.C解析:本題考核的知識點是指針數(shù)組。本崽首先定義了一個有3個元素的指針數(shù)組s,并遭過賦值使s[0]指向字符串“one”s[1]指向字符串“two”,s[2]指向字符串“three”,然后通過賦值語句“p=s[1]”,使p指向了字符串“two”,故”(p+1)”就是字符“w”。所以,C選項為所選。
53.A
54.A解析:條件表達式“a?b:c”的含義是:當(dāng)a為真時,其值等于表達式b的值,當(dāng)a為假時,其值等于表達式c的值。第一個表達式:w=6<x=4為假,所以返回x的值,即m=x=4;第二個表達式:m=4<y=3為假,所以返回y的值,即m=y=3。
55.A解析:反斜杠字符“\\”賦給字符,應(yīng)該寫成ch='\\\\',所以A是錯誤的。
56.D解析:if...else語句的執(zhí)行過程如下,首先計算if后面一對圓括號內(nèi)表達式的值,若表達式的值為非0,執(zhí)行if子句,然后跳過else子句,去執(zhí)行if語句后的下一條語句;若表達式的值為0,跳過if子句,去執(zhí)行else子句,接著去執(zhí)行if語句后的下一條語句。C語言的語法規(guī)定,else子句總是與前面最近的不帶else的if匹配,與書寫格式無關(guān),本題目的后一個ifelse相當(dāng)于嵌套在第一個if子句里,相當(dāng)于x<y&&y<0時,z=0;當(dāng)x<y&&y>=0時,z=z+1。
57.C解析:邏輯結(jié)構(gòu)反映數(shù)據(jù)元素之間的邏輯關(guān)系,線性結(jié)構(gòu)表示數(shù)據(jù)元素之間—對—的關(guān)系,非線性結(jié)構(gòu)表示數(shù)據(jù)元素之間—對多或多對—的關(guān)系。
58.A解析:第—判斷值為真,過渡到下一個判斷,第二個判斷為真,過渡到第三個判斷……如此循環(huán),在打印輸出語句的前—行,程序紿變量x賦了值,為-1,所以,無論前期如何變化,最后的x值依然為-1
59.D解析:本題考查的是指針和結(jié)構(gòu)的應(yīng)用。首先定義的數(shù)組tt中有兩個成員,一個整型變量,一個結(jié)構(gòu)指針。當(dāng)i=1時,P指針指向結(jié)構(gòu)數(shù)組的第一個元素,并輸出此元素的第一個成員x,即20;當(dāng)i=2時,P指針指向結(jié)構(gòu)數(shù)組的第二個元素的第一個成員,所以輸出15。
60.D
61.AA選項stnletonl{intx;inty;int2;struetoraa;錯誤,不能在定義結(jié)構(gòu)體的同時,又用結(jié)構(gòu)體類型名定義變量。應(yīng)該寫成B選項或者D選項的格式。
62.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結(jié)點;③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結(jié)點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結(jié)點。根據(jù)前序遍歷的結(jié)果可知,a是根結(jié)點。由中序遍歷的結(jié)果dgbaechf可知,d、g、b是左子樹的結(jié)點,e、c、h、f是右子樹的結(jié)點。再由前序遍歷的結(jié)果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結(jié)果dgb可知,d、g是b左邊子樹的結(jié)點,b右邊子樹無結(jié)點。再由前序遍歷結(jié)果dg可知,d為b左子樹的根,g是以d為根的子樹的右結(jié)點。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結(jié)點位置。所以可知后序遍歷的結(jié)果是D。
63.Cfor循環(huán)結(jié)束時,i++的值應(yīng)為4,i自加后此時應(yīng)為5,故選擇C選項。
64.Ado-wlfile的功能是先執(zhí)行一次循環(huán)體,再判斷條件是否成立,當(dāng)x=-1時,執(zhí)行do語句,x=x*x=1,接著執(zhí)行while后的表達式,其值為0,退出循環(huán),因此循環(huán)體只執(zhí)行了一次。
65.B本題考查結(jié)構(gòu)體的相關(guān)知識,選項A中structREC后面不能有分號,C選項中typedefstructREC的后面也不能有分號,選項D中REC已經(jīng)是結(jié)構(gòu)體變量,不能當(dāng)做結(jié)構(gòu)體類型來使用。
66.A\r\n二分法又叫折半(對分)查找法,只適合于順序存儲的有序表(是指線性表中的元素按值非遞減排列)。二分法的基本思想是:設(shè)有序線性表的長度為n,被查元素為X,則二分查找的方法如下:
將X與線性表的中間項進行比較:若中間項的值等于x,則說明找到,查找結(jié)束;若x小于中間項的值,則在線性表的前半部分(即中間項以前的部分)以相同的方法進行查找;若X大于中間項的值,則在線性表的后半部分(即中間項以后的部分)以相同的方法進行查找、這個過程-直進行到查找成功或于表長度為0,(說明線性表中沒有這個元素為止)順序存儲的線性袁在計算機中-般用一個-維數(shù)組來表示,在數(shù)組中我們可以通過數(shù)組名和下標來對數(shù)組中的任意一個元素進行訪問,而在鏈表(不管是有序還是無序)中,要對元素進行訪問必須從表頭結(jié)點開始,順著鏈條一個一個結(jié)點進行搜索,因此選項A正確
67.C在語句”k=*f(a,b)”中,由于””的優(yōu)先級高于”*”,所以”*f(a,b);”表示其返回類型為指針的帶有兩個整型參數(shù)的函數(shù)。
68.Cfread函數(shù)中的參數(shù)buffer是內(nèi)存塊的首地址,輸入的數(shù)據(jù)存入此內(nèi)存塊中。
69.B當(dāng)邏輯運算符“&&”兩邊的值是非零時,邏輯表達式的值為真(即為1)。所以b=2&&(-1)=1,2%9=2,故a=2,故先算a/10=25/10=2。
70.Dintm=1,n=2,*P=&m,。q=&Il,*r;即指針變量P指向m,指針變量q指向n,r=P;P=q;q=。;即通過指針變量r,將指針P和指針q的指向交換。因此最后輸出1,2,2,1。
71.Bc語言中整型變量分為4種,基本型int,短整型shortint,長整型longint和無符號型(unsignedint、un-signedshort、unsignedlong)。因此B)選項不屬于c語言的類型。
72.B#defineN100定義了標識符N的替換文本為100,而非N的值為100。即在該命令行后的程序中,所有出現(xiàn)標識符N的地方都將替換為l00,而且這一替換過程是在程序預(yù)編譯時遜行的。
73.C本題主要考查幾種循環(huán)結(jié)構(gòu)的比較。在題目中,給出了一段程序,程序首先對整型變量w賦值;然后定義了一段程序LB,在該段程序中,首先判斷變量w是否為零,如果是,則用GOTO語句跳出該段程序至LE,如果不為零,則w自減并輸出*,然后用GOTO語句跳到該程序段開始的地方執(zhí)行。該段程序其實相當(dāng)于一個循環(huán),循環(huán)的結(jié)束條件是變量w的值等于零。
在選項A中,我們可以看到循環(huán)結(jié)束的條件是變量w的值等于零,而初值也一樣,與題目中的程序段意思完全一致。
在選項B中,我們可以看出循環(huán)結(jié)束的條件是變量w的值等于零,而程序也是先判斷,再執(zhí)行后面的語句,與原程序段描述的意思一致。
在選項C中,do-while循環(huán)是直到型循環(huán),即先執(zhí)行一次循環(huán)體中的語句后,再判斷循環(huán)條件,當(dāng)w的值已經(jīng)等于0時,循環(huán)依然要運行一次,與原程序段描述的內(nèi)容不一致,是題目的答案。
在選項D中,循環(huán)所描述的內(nèi)容也與原程序段一致。
提醒:在完成這類題時,首先需要弄明白原程序段的作用,如果看不懂,則可以比較選項中與其他選項不同的結(jié)果。
74.A參數(shù)r的傳遞是地址傳遞,函數(shù)調(diào)用會改變其值。函數(shù)f的功能是:判斷n是否為3或5的倍數(shù),如果是,則將指針r所指的內(nèi)存空間賦值為n除以3或5的商;否則n遞減,直到它可以被3或5整除。初始時調(diào)用函數(shù)f(7,&r);n=7,執(zhí)行else子句,調(diào)用f(6,&r1);后n=6,執(zhí)行語句if(n%3==0)r1=n/3;,此后執(zhí)行語句*r=rl;。所以r=6/3=2。
75.C
76.C第一個if語句,先判斷條件,發(fā)現(xiàn)a<b不成立,不再執(zhí)行下列的語句,直接執(zhí)行最后的printf輸出語句,然后結(jié)束程序,整個過程c的值沒有發(fā)生變化。
77.C
78.C數(shù)組a中有5個元素a,0,0,a,0占7個字節(jié)的內(nèi)容。最后一個\\0為結(jié)束符。
79.C
80.B
81.
82.
【解析】按照題目中要求,求出二維數(shù)組每行中最大元素,并依次放入pp所指的一維數(shù)組中。首先比較二維數(shù)組中每一行的元素,然后找出每一行中的最大元素,放入一維數(shù)組pp中,最后返回到主函數(shù)當(dāng)中。
2021-2022年江西省萍鄉(xiāng)市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列函數(shù)的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}
A.將a所指字符串賦給b所指空間
B.使指針b指向a所指字符串
C.將a所指字符串和b所指字符串進行比較
D.檢查a和b所指字符串中是否有‘\0’
2.若變量a,b已正確定義,且b已正確賦值,則合法的語句是()。
A.b=double(b);B.(int)a=(int)b;C.a=a++=5;D.a=double(b);
3.“商品”與“顧客”兩個實體集之間的聯(lián)系一般是
A.一對一B.一對多C.多對一D.多對多
4.算法分析的兩個主要方面是()。
A.空間復(fù)雜性和時間復(fù)雜性B.正確性和簡明性C.可讀性和文檔性D.數(shù)據(jù)復(fù)雜性和程序復(fù)雜性
5.下列語句中,顯示沒有下畫線的超鏈接的語句是()。
A.a{text—decoration:none}
B.a{text—decoration:nounderline}
C.a{underline:none}
D.a{decoration:nounderline}
6.
7.若有序表的關(guān)鍵字序列為(b,c,d,e,f,g,q,r,s,t),則在二分查找關(guān)鍵字b的過程中,先后進行的關(guān)鍵字依次為()
A.f,c,BB.f,d,BC.g,c,BD.g,d,B
8.若i和k都是int類型變量,有以下for語句:for(i=0,k=-1;k=1;k++)printf("*****\n");下面關(guān)于語句執(zhí)行情況的敘述中正確的是()。
A.循環(huán)體執(zhí)行兩次B.循環(huán)體執(zhí)行一次C.循環(huán)體一次也不執(zhí)行D.構(gòu)成無限循環(huán)
9.與“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;
10.算法的時間復(fù)雜度是指()A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法程序中的指令條數(shù)D.算法執(zhí)行過程中所需要的基本運算次數(shù)
11.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序輸出為()。
A.編譯有錯B.0,0,0,3C.1,1,2,0D.0,1,2,0
12.以下說法正確的是()。
A.函數(shù)可以返回另一個函數(shù)的整個函數(shù)體
B.函數(shù)返回值只能是基本數(shù)據(jù)類型的數(shù)值或指針
C.函數(shù)返回值可以是一個指向函數(shù)的指針
D.函數(shù)返回值可以是一個數(shù)組,同時返回多個值
13.
14.以下語句中,正確制作電子郵件鏈接的是()。
15.若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)A.getc()B.gets()C.getchar()D.scanf()
16.設(shè)有以下語句:intx=10;x+=3+x%(3),則x的值是()。
A.14B.15C.11D.12
17.設(shè)主串T='aabaababaabaa',子串P:'abab',則簡單模式匹配算法中直至匹配成功,單個字符比較的次數(shù)為()。
A.12B.13C.14D.15
18.一棵完全二叉樹中根結(jié)點的編號為1,而且23號結(jié)點有左孩子但沒有右孩子,則完全二叉樹總共有____個結(jié)點。
A.24B.45C.46D.47
19.
20.以下符號中不能作為標識符的是()。A.256B.voidC.vanfD.4Struct
二、2.填空題(20題)21.下列程序的輸出結(jié)果是______。
main()
{inta+,b=2,C=3,t=0;
ifa<B){t=a;a=b;b=t;}
ifa<C){t=a;a=c;c=t;}
printf("%d,%d,%dln",a,b,C);
}
22.下面程序的功能是:對字符串從小到大進行排序并輸出,請?zhí)羁铡?/p>
#include"string.h"
#include"stdio.h"
sort(char*a[],intn)
{inti,j;
char*p;
for(j=1;j<=n-1;j++)
for(i=0;i<n-j;i++)
if(())>0)
{p=a[i];
a[i]=a[i+1];
a[i+1]=p;}
}
main()
{inti;
char*book[]={"itisme","itisyou","howareyou","fine","goodnight","goodbye"};
sort(());
for(i=0;i<6;i++)
printf("%s\n",book[i]);
}
23.一般來說,算法可以用順序、選擇和______三種基本控制結(jié)構(gòu)組合而成。
24.定義長度為12的數(shù)組,下面四種方法中正確的有【】。
①intx[12];②intn=12;③constintn=12;④intx[]={1,2};
intx[n];intx[n];
25.設(shè)y為血型變量,請寫出描述“y是偶數(shù)”的表達式______。
26.與結(jié)構(gòu)化需求分析方法相對應(yīng)的是【】方法。
27.度為10的線性表進行冒泡排序,最壞情況下需要比較的次數(shù)為______。
28.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
29.閱讀下面程序,則程序的執(zhí)行結(jié)果為【】。
#include"stdio.h"
fun(intk,int*p)
{inta,b;
if(k==1‖k==2)
*p=1;
else{fun(k-1,&a);
fun(k-2,&b);
*p=a+b;}}
main()
{intx;
fun(6,&x);
printf("%d\n",x);}
30.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。
31.以下程序的輸出結(jié)果是______。
voidfun()
{staticinta=0;
a+=2;printf("%d",a);
}
main()
{intcc;
for(cc=1;cc<4;cc++)fun();
printf("\n");
}
32.若有定義inta=10,b=9,c=8;,接著順序執(zhí)行下列語句,變量b中的值是【】。
c=(a-=(b-5));
c=(a%11)+(b=3);
33.若有定義:inta=4,b=5,c=6;然后順序執(zhí)行下列語句后,變量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);
34.為了便于對照檢查,測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的【】兩部分組成。
35.在面向?qū)ο蠓椒ㄖ?,【】描述的是具有相似屬性與操作的一組對象。
36.在鏈表的運算過程中,能夠使空表與非空表的運算統(tǒng)一的結(jié)構(gòu)是______。
37.在進行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊,其中______的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。
38.定義inta=5,b;,則執(zhí)行表達式b=++a*--a之后,變量b的值為【】。
39.深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為______。
40.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間,請?zhí)羁?。st=(char*)【】;
三、1.選擇題(20題)41.若有定義:int*p[3];,則以下敘述中正確的是()。
A.定義了一個基類型為int的指針變量p,該變量具有三個指針
B.定義了一個指針數(shù)組p,該數(shù)組含有三個元素,每個元素都是基類型為int的指針
C.定義了一個名為*p的整型數(shù)組,該數(shù)組含有三個int類型元素
D.定義了一個可指向一維數(shù)組的指針變量p,所指一維數(shù)組應(yīng)具有三個int類型元素
42.C語言運算對象必須是整型的運算符是______。
A.%=B./C.=D.<=
43.變量a所占的內(nèi)存字節(jié)數(shù)是______。unionU{charst[4];inti;long1;};structA{intc;unionUu;}a;
A.4B.5C.6D.8
44.在深度為6的滿二叉樹中,結(jié)點的個數(shù)為()。
A.32B.31C.16D.15
45.設(shè)變量x和y均已正確定義并賦值。下列if語句中,在編譯時將產(chǎn)生錯誤信息的是
A.ifx++);
B.it(x>y&&y!=0);
C.if(x>0)x--
D.if(y<0){;}elsey++;elsex++;
46.下列敘述中正確的是()。
A.線性鏈表是線性表的鏈式存儲結(jié)構(gòu)B.棧與隊列是非線性結(jié)構(gòu)C.雙向鏈表是非線性結(jié)構(gòu)D.只有根結(jié)點的二叉樹是線性結(jié)構(gòu)
47.下面()不是軟件調(diào)試的主要方法?
A.搜索法B.原因排除法C.回溯法D.強行排錯法
48.下面程序的輸出結(jié)果為______。#include<string.h>main(){charp1[7]="abc",p2[]="ABC",str[50]="xyz";strcpy(str,strcat(p1,p2));printf("%s",str);}
A.xyzabcABCB.abcABCC.xyzabcD.xyzABC
49.算法中,對需要執(zhí)行的每一步操作,必須給出清楚、嚴格的規(guī)定。這屬于算法的A.正當(dāng)性B.可行性C.確定性D.有窮性
50.數(shù)據(jù)庫設(shè)計包括兩個方面的設(shè)計內(nèi)容,它們是()
A.概念設(shè)計和邏輯設(shè)計B.模式設(shè)計和內(nèi)模式設(shè)計C.內(nèi)模式設(shè)計和物理設(shè)計D.結(jié)構(gòu)特性設(shè)計和行為特性設(shè)計
51.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.選擇排序C.快速排序D.歸并排序
52.有以下程序main(){char*s[]={"one","two","three"},*P;p=s[1];printf("%c,%s\n",*(p+1),s[0]);}執(zhí)行后輸出結(jié)果是
A.n,twoB.t,oneC.w,oneD.o,two
53.下列描述說明正確的是()
A.定義結(jié)構(gòu)體時,它的每個成員的數(shù)據(jù)類型可以不同
B.不同結(jié)構(gòu)體的成員名不能相同
C.結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型不能是結(jié)構(gòu)體本身
D.結(jié)構(gòu)體定義時各成員項之間可用分號也可用逗號隔開
54.假定w、x、y、m均為int型變量,則執(zhí)行下列的語句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;
A.3B.4C.5D.6
55.已經(jīng)定義ch為字符型變量,以下賦值表達式中錯誤的是______。
A.ch='\'B.ch=62+3C.ch=NULLD.ch='\xaa'
56.下列程序的運行結(jié)果是#include"stdio.h"main(){intx=-9,y=5,z=8;if(x<y)if(y<0)z=0;elsez+=1;printf("%d\n",z);}
A.6B.7C.8D.9
57.在數(shù)據(jù)結(jié)構(gòu)中,從邏輯可以把數(shù)據(jù)結(jié)構(gòu)分為______。
A.動態(tài)結(jié)構(gòu)和靜態(tài)結(jié)構(gòu)B.緊湊結(jié)構(gòu)和非緊湊結(jié)構(gòu)C.線性結(jié)構(gòu)和非線性結(jié)構(gòu)D.內(nèi)部結(jié)構(gòu)和外部結(jié)構(gòu)
58.下面程序main(){intx=100,a=10,b=20,okl=5,ok2=0;if(a<B)if(b!=15)if(!ik1)x=1;elseif(ok2)x=10;x=-1;printf("%d\n",x);}的輸出是______。
A.-1B.0C.1D.不確定的值
59.有以下程序:#include<stdio.h>structtt{intx;structtt*y;}*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a;for(i=1;i<=2;i++){printf("%d,",p->x);p=p->y;}}程序的運行結(jié)果是()。
A.20,30,B.30,17C.15,30,D.20,15,
60.用MIPS來衡量計算機性能的指標是()
A.存儲容量B.可靠性C.處理能力D.運算速度
四、選擇題(20題)61.下面結(jié)構(gòu)體的定義語句中,錯誤的是()。
A.structord{intx;intY;intz;}structorda;
B.structord{intx;imY;imz;};structorda;
C.structord{intx;intY;intZ;}a;
D.struct{intx;intY;intz;}a;
62.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點訪問順序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
63.執(zhí)行語句“for(i=1;i++<;4;);”后,變量i的值是()。
A.3B.4C.5D.不定
64.當(dāng)執(zhí)行以下程序段時,()。x=-l:do{x=x*X;)while(!x);A.循環(huán)體將執(zhí)行一次B.循環(huán)體將執(zhí)行兩次C.循環(huán)體將執(zhí)行無限次D.系統(tǒng)將提示有語法錯誤
65.以下結(jié)構(gòu)體類型說明和變量定義中正確的是()。
66.下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進行查找的是()。
A.順序存儲的有序線性表B.線性鏈表C.二叉鏈表D.有序線性鏈表
67.有以下程序:
則以下函數(shù)調(diào)用語句錯誤的是()。
A.
B.
C.
D.
68.讀取二進制文件的函數(shù)調(diào)用形式為:fread(buffersize,count,fp);,其中buffer代表的是()。
A.一個文件指針,指向待讀取的文件
B.一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)
C.一個內(nèi)存塊的首地址,代表讀人數(shù)據(jù)存放的地址
D.一個內(nèi)存塊的字節(jié)數(shù)
69.下列程序的輸出結(jié)果是()。
main
{inta,b,d=25;
a=d/10%9;
b=a&&(-1);
printf("%d,%d\n",a,b);}A.A.6,1B.2,1C.6,0D.2,0
70.有以下程序:
程序運行后的輸出結(jié)果是()。
A.2,1,1,2B.1,2,1,2C.2,1,2,1D.1,2,2,1
71.以下選項中不屬于c語言的類型的是()。
A.unsignedlongint
B.longshort
C.unsignedint
D.signedshortint
72.若程序有宏定義:#defineNl00,則以下敘述中正確的是()。
A.宏定義中定義了標識符N的值為整數(shù)100
B.在編譯程序?qū)源程序進行預(yù)處理時用l00替換標識符N
C.對C源程序進行編譯時用100替換標識符N
D.在運行時用100替換標識符N
73.若有以下程序段,w和k都是整型變量。
w=k;
LB:if(w==0)gotoLE;
w--;
printf("*");
gotoLB;
LE:
M
則不能與上面程序段等價的循環(huán)語句是
A.for(w=k;w!=0;w--)printf("*");
B.w=k;<CR>while(w--!=0)printf("*");w++;
C.w=k;<CR>do{w--;printf("*");}while(w!=0);
D.for(w=k;w;--w)printf("*");
74.以下程序運行后的輸出結(jié)果是()。
A.2B.1C.3D.O
75.以下程序的輸出結(jié)果是()。
#definef(x)x*x
main
{inta=6,b=2,c;
c=f(a)/f(b);
printf(“%d\n”,c);
}
A.9B.6C.36D.18
76.下列程序的輸出結(jié)果是()。#include<stdio.h>main{inta=3,b=2,c=1;if(a<b)if(b<0)c=0;elsec++:printf("%d\n",c);}A.2B.0C.1D.不確定的值
77.在JavaScript語言中,要定義局部變量則可以()。
A.由關(guān)鍵字private在函數(shù)內(nèi)定義
B.由關(guān)鍵字private在函數(shù)外定義
C.由var在函數(shù)內(nèi)定義
D.由關(guān)鍵字var在函數(shù)外定義
78.有以下程序:
main()
{
chara[7]="a0\OaO\0";inti,j;
i=sizeof(a);j=strlen(a);
printf("%d%d\n",i,j);
}
程序運行后的輸出結(jié)果是()。
A)22B)76
C)75D)62
79.
80.
五、程序改錯題(1題)81.程序改錯題(共l8分)下列給定程序中,函數(shù)fun的功能是:傳人一個整數(shù)m,計算如下公式的值。例如,若輸入5,則應(yīng)輸出一0.283333。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
六、程序設(shè)計題(1題)82.請編一個函數(shù)voidproc(inttt[M][N],intpp[N]),tt指向一個M行N列的二維數(shù)組,求出二維數(shù)組每行中最大元素,并依次放入pp所指的一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中給出。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
參考答案
1.A題目的fun函數(shù)內(nèi),while循環(huán)條件為“(*b=*a)!=‘\\0’”,執(zhí)行時先把指針a所指向的字符賦給指針b所在的內(nèi)存單元。如果該字符不是結(jié)束標識‘\\0’,執(zhí)行循環(huán)體“a++;b++;”,指針a、b分別指向下一個字符單元。再判斷循環(huán)條件,如果成立,繼續(xù)把指針a所指向的字符賦給指針b所在的內(nèi)存單元,直到遇到結(jié)束標識為止。故本題答案為A選項。
2.B在C語名中規(guī)定進行強制類型轉(zhuǎn)換的格式是:(類型名)變量名;并且給表達式賦值。
3.D解析:兩個實體間的聯(lián)系可以歸納為3種類型:一對一聯(lián)系:一對一的聯(lián)系表現(xiàn)為主表中的每一條記錄只與相關(guān)表中的一條記錄相關(guān)聯(lián)。一對多聯(lián)系,一對多的聯(lián)系表現(xiàn)為主表中的每一條記錄與相關(guān)表中的多條記錄相關(guān)聯(lián)。多對多聯(lián)系:多對多的聯(lián)系表現(xiàn)為二個表中的多個記錄在相關(guān)表中同樣有多個記錄其匹配。本題中一個顧客可以購買多種商品,同一種商品可以有多個顧客購買,所以商品和顧客之間是多對多的聯(lián)系。
4.A
5.A
6.D
7.A
8.D此題考查的是基本的循環(huán),答案為D。
9.By=(x=)071:x<0?-1:0)中有兩個三目運算符,因此按從右到在的順序運算,可寫成y=(x>071:(x<0?-1:0)),故選擇8選項。
10.D解析:算法的時間復(fù)雜度實際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算工具以及程序員的水平無關(guān)。
選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤。因為算法所編寫的程序長度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。
選項C錯誤,因為根據(jù)一個算法所編制出的程序程序中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。
所以,本題的正確答案為D。
11.AC語言中規(guī)定else總是和之前與其最近的且不帶else的if配對。題目中,“if(a=1)b=1;c=2;”默認省略了else,導(dǎo)致下一句else沒有匹配語句。故本題答案為A選項。
12.C函數(shù)的返回值是通過return語句返回的,返回值是一個表達式,不限于基本數(shù)據(jù)類型或指針,也可以是結(jié)構(gòu)體類型等,但不能是數(shù)組,選項A、B、D錯誤;函數(shù)的返回值可以是一個指向函數(shù)的指針,選項C正確。故本題答案為C選項。
13.A
14.C
15.Bscanf(\u3000)語句中用“空格”間隔不同的字符串,空格將被全部忽略掉,所以用scanf(\u3000)函數(shù)不能輸入空格;getehar(\u3000)函數(shù)用于輸入字符,其調(diào)用形式為:ch=getelaar(\u3000),getehar(\u3000)函數(shù)從終端讀入一個字符作為函數(shù)值,把讀入的字符賦給變量ch。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶敲入Enter鍵時,讀入才開始執(zhí)行。gets(\u3000)函數(shù)的凋用形式為:gets(str_adr),其中stradr是存放輸入字符串的起始地址,可以是字符數(shù)組名、字符數(shù)組元素的地址或字符指針變量。9ets函數(shù)用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止。getc(\u3000)函數(shù)的調(diào)用形式為:ch=getc(pf)其中pf是文件指針。函數(shù)的功能是從pf指定的文件中讀入一個字符,并把它作為函數(shù)值返回。
16.A
17.A
18.C
19.B
20.B
21.3123,1,2解析:分析程序,第一個if句,a=1,b=2,控制條件a<b成立,則交換a、b的值,此時a=2,b=1。第二個if語句,a=2,c=3,控制條件a<c成立,則交換a、c的值,此時a=3,c=2。
22.strcmp(a[i]a[i+1])book6strcmp(a[i],a[i+1])book,6解析:此程序段的功能是使字符串從大到小進行排列。顯然,第一空白處,是利用strcmp函數(shù)比較字符串a(chǎn)[i]和a[i+1]的大小,若不符合題意,就進行調(diào)換;main函數(shù)中,sort函數(shù)是對數(shù)組book中的字符串按從小到大進行排序,所以第二空白處填入“book,6”(6是指book所指向的字符串的個數(shù))。
23.循環(huán)循環(huán)解析:算法一般由順序,選擇和循環(huán)三種基本控制結(jié)構(gòu)組合而成。
24.①③
25.(y%2)==0(y%2)==0解析:因符合偶數(shù)的條件是對2取余為0,所以要描述y是偶數(shù)的表達式是(y%2)==0。
26.結(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ù)。
27.4545解析:對于長度為N的線性表,在最壞情況下(即線性表中元素現(xiàn)在的順序與目標順序正好相反),冒泡排序需要經(jīng)過N/2遍的從前往后的掃描和N/2遍的從后往前的掃描,需要的比較次數(shù)為N(N-1)/2。
28.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數(shù),從輸出結(jié)果來看,s保存的是最終結(jié)果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內(nèi)容”加上循環(huán)變量i,又因為i在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內(nèi)容”應(yīng)分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內(nèi)容”應(yīng)是t*10。
29.88解析:函數(shù)可以被遞歸調(diào)用,但是不能遞歸定義。有返回值的函數(shù)調(diào)用可以出現(xiàn)在表達式可以出現(xiàn)的任何地方。
30.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中度為2的結(jié)點數(shù)為18,故葉子結(jié)點數(shù)為18+1=19個。
31.246
32.33解析:這里:b-5=4,a-=4之后a的值為6,并把它賦給c。此時b的值并未被改變。在第2個表達式中,也只有賦值表達式b=3改變了b的值。所以兩行語句執(zhí)行完畢,b的值應(yīng)該為3。
33.11解析:本題考查的是基本賦值運算符和賦值表達式。a-=(b-5)等價于a=a-(b-5)=4,c=a=4;a%3=1,c=(a%3)+(b=1)=2,其中b的值被b=1確定為1。
34.輸出結(jié)果輸出結(jié)果解析:注意:測試的基本方法和步驟。
35.類類解析:在面向?qū)ο蠓椒ㄖ?,類描述的是具有相似屬性與操作的一組對象。
36.循環(huán)鏈表循環(huán)鏈表解析:在循環(huán)鏈表中,由于設(shè)置了一個頭結(jié)點,因此在任何情況下,循環(huán)鏈表中至少有一個結(jié)點存在,從而使空表與非空表的運算統(tǒng)一。
37.驅(qū)動模塊驅(qū)動模塊解析:由于模塊通常不是獨立的程序,自己不能運行,而需要其他模塊調(diào)用或驅(qū)動,同時被測試模塊還要去調(diào)用其他模塊,前者稱為驅(qū)動模塊,后者稱為承接模塊。其中驅(qū)動模塊的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果;承接模塊的作用是代替被測模塊,調(diào)用其他模塊。
38.2525解析:#NAME?
39.1616解析:滿二叉樹的葉子結(jié)點都在最后一層,即第4層,且第4層的結(jié)點達到最大數(shù),即25-1=16。
40.malloc(11)malloc函數(shù)的格式是void*(或char*)malloc(size),size表示應(yīng)分配的存儲區(qū),此題要分配11字節(jié)的單元,把11代入即可。
41.B解析:當(dāng)一個數(shù)組中的元素均為指針類型數(shù)據(jù)時,該數(shù)組就稱為指針數(shù)組。int*p[3]表示此數(shù)組是指針類型的,每個數(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人經(jīng)營性貸款還款協(xié)議模板8篇
- 二零二五年廢棄物處理及廢品回收承包合同書3篇
- 二零二五年度倉儲租賃與智能化改造合同3篇
- 二零二五年度外資獨資公司股權(quán)變更操作細則合同
- 2025年個人汽車維修服務(wù)質(zhì)押擔(dān)保合同3篇
- 2025版高端餐飲集團租賃管理與服務(wù)保障合同3篇
- 個人委托支付事務(wù)具體合同版B版
- 2024酒店裝修設(shè)計合同
- 2025年度智能果園蘋果采購與銷售管理合同4篇
- 2025年度園林景觀設(shè)計專利授權(quán)許可合同3篇
- 碳纖維增強復(fù)合材料在海洋工程中的應(yīng)用情況
- 多重耐藥菌病人的管理-(1)課件
- (高清版)TDT 1056-2019 縣級國土資源調(diào)查生產(chǎn)成本定額
- 環(huán)境監(jiān)測對環(huán)境保護的意義
- 2023年數(shù)學(xué)競賽AMC8試卷(含答案)
- 神經(jīng)外科課件:神經(jīng)外科急重癥
- 2024年低壓電工證理論考試題庫及答案
- 2023年十天突破公務(wù)員面試
- 《瘋狂動物城》中英文對照(全本臺詞)
- 醫(yī)院住院醫(yī)師規(guī)范化培訓(xùn)證明(樣本)
- 小學(xué)六年級語文閱讀理解100篇(及答案)
評論
0/150
提交評論