![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
2018年秋季江蘇省計(jì)算機(jī)二級C語言真題1 |
1. 根據(jù)不同的應(yīng)用需求,數(shù)字音頻采用的編碼方法有多種,文件格式也各不相同。下列的音頻格式中,由微軟公司開發(fā)的,采用未壓縮方法編碼的是____。 A. WAV B. MP3 C. AAC D. WMA A 解析:MP3是一種音頻壓縮技術(shù),由于這種壓縮方式的全稱叫MPEG Audio Layer3,所以人們把它簡稱為MP3,WMA是微軟制訂的音頻壓縮文件格式,比mp3標(biāo)準(zhǔn)晚,比mp3還小,比mp3音質(zhì)還好, WAV是微軟公司(Microsoft)開發(fā)的一種聲音文件格式, 采用未壓縮編碼方式。 5 2. 下列有關(guān)IP地址(IPv4)和路由器的敘述中,錯(cuò)誤的是_____。 A. 每個(gè)IP地址使用32個(gè)字節(jié)的二進(jìn)制數(shù)表示,在使用中通常寫成“點(diǎn)分十六進(jìn)制”的形式 B. IP地址分為五類,其中A類、B類和C類是三個(gè)基本類,每類有不同長度的網(wǎng)絡(luò)號和主機(jī)號 C. IP地址空間的分配由國際組織ICANN負(fù)責(zé),目前IP地址空間已分配完畢 D. 路由器是連接異構(gòu)網(wǎng)絡(luò)的關(guān)鍵設(shè)備,一臺(tái)路由器會(huì)擁有(使用)多個(gè)不同的IP地址 A 解析: 每個(gè)IP地址使用32個(gè)字節(jié)的二進(jìn)制數(shù)表示,在使用中通常寫成“點(diǎn)分十進(jìn)制”的形式 。 4 3. 字符集及其編碼是計(jì)算機(jī)中表示、存儲(chǔ)、處理和交換文本信息的基礎(chǔ),但由于歷史原因,目前不同系統(tǒng)或應(yīng)用中使用的字符編碼方案并不統(tǒng)一。下列編碼方案中,所有字符均采用等長編碼(編碼長度相同)的是______。 A. GB2312 B. GB18030 C. UTF-8 D. UTF-16 A 解析: GB2312編碼:是我國1981年頒布的第一個(gè)國標(biāo),該標(biāo)準(zhǔn)選出6763個(gè)常用漢字和682個(gè)非漢字字符,所有字符采用2字節(jié)編碼; GB18030:包含漢字23940個(gè),與GB2312與GBK保持兼容。同時(shí)與UCS也接軌,在我國信息處理產(chǎn)品中強(qiáng)制執(zhí)行,ASCII采用1字節(jié)編碼,漢字采用2字節(jié)編碼,其他采用4字節(jié)編碼; UCS:國際標(biāo)準(zhǔn)化組織(ISO)制定了一個(gè)將全世界所有文字與符號集中進(jìn)行統(tǒng)一編碼,稱為UCS,與其等同的是由微軟等公司共同制定的工業(yè)標(biāo)準(zhǔn)Unicode,UCS有兩種標(biāo)準(zhǔn)UTF-8和UTF-16,UTF-8采用ASCII碼用1個(gè)字節(jié)編碼,拉丁字母,標(biāo)點(diǎn)符號等采用2字節(jié)編碼,漢字采用3個(gè)字節(jié)編碼,其他極少字符采用4字節(jié)編碼,UCS-16是指ASCII和漢字都采用2字節(jié)編碼,其他不常用字符采用4字節(jié)編碼,在Windows中文版上現(xiàn)在使用UTF-16,也是Java,.NET軟件開發(fā)環(huán)境等默認(rèn)的編碼標(biāo)準(zhǔn)。 5 4. TCP/IP模型將計(jì)算機(jī)網(wǎng)絡(luò)分成下列4層,每一層都包含若干個(gè)協(xié)議。在TCP/IP模型中,HTTP協(xié)議工作在______。 A. 接口層 B. 互連層 C. 傳輸層 D. 應(yīng)用層 D 解析: TCP/IP包括了100多個(gè)協(xié)議,將通信問題劃分為四個(gè)層次,從高到低依次是應(yīng)用層、傳輸層、網(wǎng)絡(luò)互連層、網(wǎng)絡(luò)接口與硬件層,應(yīng)用層規(guī)定了運(yùn)行在不同主機(jī)上的應(yīng)用程序之間如何通過互連的網(wǎng)絡(luò)進(jìn)行通信,包括的協(xié)議如HTTP,SMTP,FTP,TELNET等;傳輸層規(guī)定了怎樣進(jìn)行端-端的數(shù)據(jù)傳輸,有TCP和UDP兩個(gè)協(xié)議,TCP協(xié)議負(fù)責(zé)可靠的完成數(shù)據(jù)從發(fā)送計(jì)算機(jī)到接收計(jì)算機(jī)的傳輸,UDP是不可靠的數(shù)據(jù)傳輸協(xié)議, 例如音頻和視頻數(shù)據(jù)的傳輸;網(wǎng)絡(luò)互連層規(guī)定了在整個(gè)互連的網(wǎng)絡(luò)中所有計(jì)算機(jī)統(tǒng)一使用的編址方案和數(shù)據(jù)包格式(稱為IP數(shù)據(jù)報(bào)),以及IP數(shù)據(jù)報(bào)的轉(zhuǎn)發(fā)機(jī)制;網(wǎng)絡(luò)接口與硬件層規(guī)定了怎樣與各種不同的網(wǎng)絡(luò)進(jìn)行接口,并負(fù)責(zé)將IP包轉(zhuǎn)換成適合在特定網(wǎng)絡(luò)中傳輸?shù)膸袷?/SPAN> 。 4 5. 下列有關(guān)計(jì)算機(jī)網(wǎng)絡(luò)組成、分類和工作模式等敘述中,錯(cuò)誤的是______。 A. 按網(wǎng)絡(luò)所覆蓋的地域范圍來分,人們常將計(jì)算機(jī)網(wǎng)絡(luò)分為LAN、ATM、WLAN等類型 B. 有些廣域網(wǎng)是一些機(jī)構(gòu)或組織自行構(gòu)建的專用網(wǎng),有些是網(wǎng)絡(luò)運(yùn)營商構(gòu)建的公用數(shù)據(jù)網(wǎng) C. 網(wǎng)絡(luò)協(xié)議是計(jì)算機(jī)網(wǎng)絡(luò)的重要組成部分,目前互聯(lián)網(wǎng)主要采用TCP/IP協(xié)議系列 D. 計(jì)算機(jī)網(wǎng)絡(luò)有兩種基本工作模式,即P2P工作模式和C/S工作模式 A 解析: 按網(wǎng)絡(luò)所覆蓋的地域范圍來分分為局域網(wǎng)(LAN)、城域網(wǎng)(MAN)、廣域網(wǎng)(WAN) 。 4 6. 下列有關(guān)計(jì)算機(jī)的邏輯組成和分類的敘述中,錯(cuò)誤的是______。 A. 一臺(tái)計(jì)算機(jī)中往往有多個(gè)處理器,它們各有其不同的處理任務(wù),其中CPU是核心部件 B. 主存儲(chǔ)器與CPU高速連接,用來存放已經(jīng)啟動(dòng)運(yùn)行的程序代碼和需要處理的數(shù)據(jù) C. 人們提及PC時(shí),泛指臺(tái)式機(jī)、筆記本電腦、智能手機(jī)和平板電腦等個(gè)人使用的計(jì)算機(jī) D. 嵌入式計(jì)算機(jī)是內(nèi)嵌在其他設(shè)備中的專用計(jì)算機(jī),許多嵌入式計(jì)算機(jī)都把軟件固化在芯片中 C 解析: 人們提及PC時(shí),泛指臺(tái)式機(jī)、筆記本電腦等個(gè)人使用的計(jì)算機(jī) 。(注: 一臺(tái)計(jì)算機(jī)中往往有多個(gè)處理器,如CPU,圖形處理器等) 2 7. 字符集及其編碼是計(jì)算機(jī)中表示、存儲(chǔ)、處理和交換文本信息的基礎(chǔ),但由于歷史原因,目前不同系統(tǒng)或應(yīng)用中使用的字符編碼方案并不統(tǒng)一。下列編碼方案中,目前在我國信息處理產(chǎn)品中強(qiáng)制貫徹執(zhí)行的是____。 A. GB 2312 B. GBK C. GB 18030 D. UCS/Unicode C 解析: GB18030:包含漢字23940個(gè),與GB2312與GBK保持兼容。同時(shí)與UCS也接軌,在我國信息處理產(chǎn)品中強(qiáng)制執(zhí)行。 5 8. 在現(xiàn)代通信系統(tǒng)中,為了能有效地提高數(shù)據(jù)鏈路的利用率、降低通信成本,一般使用多路復(fù)用技術(shù)讓多路信號同時(shí)共用一條傳輸線進(jìn)行傳輸。用戶通過電話線使用ADSL技術(shù)接入互聯(lián)網(wǎng)時(shí),ADSL技術(shù)接入方式主要是使用了______。 A. TDM B. WDM C. FDM D. CDM C 解析:時(shí)分多路復(fù)用(TDM)是各終端設(shè)備按不同時(shí)間來輪流使用同一線路來傳輸數(shù)據(jù),是計(jì)算機(jī)網(wǎng)絡(luò)傳輸使用的主要方式,頻分多路復(fù)用(FDM)是將不同信源發(fā)出的信號調(diào)制在不同頻率的載波上,波分多路復(fù)用(WDM)是在一根光纖傳輸不同波長的光波。碼分是指每個(gè)用戶分配一個(gè)地址碼,各個(gè)碼型互不重疊,通信各方之間不會(huì)相互干擾,且抗干攏能力強(qiáng) 。 4 9. 光盤是目前常見的輔助存儲(chǔ)器。下列相關(guān)敘述中,錯(cuò)誤的是____。 A. 光盤存儲(chǔ)器由光盤驅(qū)動(dòng)器和光盤片兩部分組成,光盤的基片是鋁合金材料 B. 從接口來看,目前內(nèi)置DVD光驅(qū)與主機(jī)的接口主要是SATA,外置的主要是USB C. DVD光盤分為單面單層、單面雙層等多種類型,目前最常用的是單面單層的盤片 D. BD光驅(qū)采用波長較短的藍(lán)色激光在光盤上進(jìn)行數(shù)據(jù)讀寫,因而提高了光盤存儲(chǔ)容量 A 解析: 光盤的基片是耐熱的有機(jī)玻璃 。 2 10. 在微軟公司的Office軟件中內(nèi)置了一種程序設(shè)計(jì)語言,用戶可以使用它來編寫程序以擴(kuò)展功能。該語言是_____。 A. VBA B. VBScript C. Java D. C# A 解析: VBA用于編寫程序來擴(kuò)展Office軟件的功能,VBScript用于嵌入到Html文檔中以擴(kuò)充網(wǎng)頁的功能,Java用于網(wǎng)絡(luò)編程,包括編寫安卓智能手機(jī)的App,Object-C語言是iPhone和iPad編程的語言, Lisp語言與PROLOG語言主要用于人工智能,Ada語言用于飛行器控制,MATLAB是一種面向向量和矩陣運(yùn)算的數(shù)值計(jì)算語言。 3
1(單選題): 若有預(yù)處理命令“#include A. strlen(s1); B. strcpy(s1,s2); C. strcat(s1,s2); D. strcmp(s1[0],s2[0]); D 解析: A選項(xiàng)返回s1內(nèi)存空間中字符個(gè)數(shù)9,B選項(xiàng)將s2中內(nèi)存空間的值拷貝給s1內(nèi)存空間,C選項(xiàng)表示將s2內(nèi)存空間的值放到s1內(nèi)存空間原有數(shù)值第1個(gè)結(jié)束標(biāo)志符\0的后面,題目中s1內(nèi)存空間形成world cup2018,D選項(xiàng)錯(cuò)誤,strcmp(表達(dá)式1,表達(dá)式2)的作用是比較表達(dá)式1指向的內(nèi)存空間中的字符串與表達(dá)式2指向的內(nèi)存空間中的字符串是否相等,因?yàn)?/SPAN>strcmp要求表達(dá)式必須是內(nèi)存編號,而s1[0]返回的是w,s2[0]返回的是2,不是內(nèi)存編號,如果修改為strcmp(s1,s2)就對了,因?yàn)樵?/SPAN>C語言中,只寫數(shù)組的名字表示該數(shù)組的起始內(nèi)存編號;strlen,strcpy,strcat,strcmp都要求參數(shù)是內(nèi)存編號, 因文字解析不如視頻清晰,詳細(xì)見視頻詳細(xì)講解。 7 己有聲明“double a=1.23456;int i;”,現(xiàn)要求使變量a中實(shí)數(shù)的十進(jìn)制表示經(jīng)過四舍五入處理后僅保留2位小數(shù)(即將a值變?yōu)?/SPAN>1.23000),以下表達(dá)式中能實(shí)現(xiàn)該功能的是_______。 A. i=a*100+0.5,a=i/100.0 B. a = (a*100+0.5)/100.0 C. a=((int)a*100+0.5)/100.0 D. a=(a/100+0.5)/100.0 A 解析:因?yàn)?/SPAN>i是整型,所以i=a*100+0.5得到i=123.456+0.5,得到i=123,然后執(zhí)行a=i/100.0后得到1.23000,注意這里的i/100.0不能寫成i/100,因?yàn)?/SPAN>i是整型,100是整型,整型除以整型得到整型,所以i/100的結(jié)果是1而不是1.23 ,寫100.0才表示雙精度型,所以i/100.0才正確,另外C選項(xiàng)首先執(zhí)行(int)a得到1,然后(1*100+0.5)/100.0得到結(jié)果1.005000 。 4 以下聲明中正確的是______。 A. int a[]; B. int a[10]=0; C. int a[10+1]={0}; D. int a[3l={1,2,3,4}; C 解析:聲明數(shù)組時(shí),數(shù)組大小必須是常量,A選項(xiàng)錯(cuò)誤,修改為 int a[]={1,2,3};這類格式就對了;B選項(xiàng)錯(cuò)誤,給int,double,float類型初始化數(shù)組賦值時(shí),不能直接不加{}就賦值,修改為int a[10]; 或者int a[10]={1,2};這類格式就對了;D選項(xiàng)錯(cuò)誤, int a[3]大小是3塊內(nèi)存空間,而{1,2,3,4}有4個(gè)值了。 7 若有聲明“int a=l,x=3,y=4:”,則下列語句中除_______外,其他三條語句功能均相同。 A. if(a) printf("%d ",x); else printf("%d",y); B. if(a == 0) printf("%d",y); else printf("%d”,x); C. if(a! =0) printf("%d",x); else printf('%d",y); D. if(a==0) printf("%d",x); else printf(“%d”,y); D 解析:在C語言中,0表示假值,非0表示真值,因?yàn)?/SPAN>a=1,所以ABC選項(xiàng)直接輸出x值。 5 若有聲明“int a[4],j;”及語句“for(j=0;j<4;j++) p[j]=a+j;”,則標(biāo)識符p應(yīng)聲明為_______。 A. int p[4]; B. int (*p)[4]; C. int **p[4]; D. int *p[4]; D 解析:A選項(xiàng)是指普通數(shù)組,聲明可以盛放4個(gè)int型數(shù)值的內(nèi)存空間區(qū);B選項(xiàng)是指向一維數(shù)組的指針變量;C選項(xiàng)是二級指針數(shù)組,里面盛放的是一級指針的內(nèi)存編號;D選項(xiàng)是指針數(shù)組, 聲明可以盛放4個(gè)int型內(nèi)存編號的內(nèi)存空間區(qū), 因文字解析不如視頻清晰,詳細(xì)見視頻詳細(xì)講解 。 10 6(填空題 <3空> ) : 以下程序運(yùn)行時(shí)輸出結(jié)果中第一行是____________ ,第二行是____________ ,第三行是____________ 。 #include void change(int x, int m) { char ch[]={"0123456789ABCDEF"},b[80]; int i=0,r; while(x) { r=x%m; x/=m; b[i++]=ch[r]; } for(--i;i>=0;i--) printf("%c",b[i]); } int main() { change(10,2); printf("\n"); change(20,8); printf("\n"); change(30,16); return 0; } 1010@24@1E 7 (填空題 <2空> ) : 以下程序運(yùn)行時(shí)輸出結(jié)果中第一行是____________ ,第二行是____________ 。 #include int func(int a) { static int c=1; c*=a; return c; } int main() { int b=1, i; for(i=2;i<4;i++) { b=b+func(i); printf("%d\n",b); } return 0; } 3@9 8(填空題 <2空> ) : 以下程序運(yùn)行時(shí)輸出結(jié)果中第一行是____________ ,第二行是____________ 。 #include int f(int a,int b); int main( ) { printf("%d\n%d",f(3,5), f(9,6)); return 0; } int f(int a,int b) { if(a==b) return a; else if(a>b) return f(a-b,b); else return f(a,b-a); } 1@3 9 (填空題 <3空> ) : 以下程序運(yùn)行時(shí)輸出結(jié)果中第一行是____________ ,第二行是____________ ,第三行是____________ 。 #include int main( ) { int a[3][3]={0},i,j,k,n=3; j=n/2; i=n-1; a[i][j]=1; for(k=2;k<=n*n;k++) { i++;j++; if(i>n-1&&j>n-1) { i=i-2; j--; } else { if(i>n-1) i=0; if(j>n-1) j=0; } if(a[i][j]==0) a[i][j]=k; else { i=i-2; j--; a[i][j]=k; } } printf("%d\n%d\n%d ",a[2][1], a[0][2], a[1][1]); return 0; } 1@2@5 1(完善程序): 完善程序(共12分,每空3分) 【要求】 1.打開T盤中文件myf0.c,按以下程序功能完善文件中的程序。 2.修改后的源程序仍保存在T盤myf0.c文件中,請勿改變myf0.c的文件名。 【程序功能】 函數(shù)f的功能是計(jì)算并返回F(x)值,其中x不等于0。 計(jì)算F(x)中的無窮級數(shù)時(shí),當(dāng)通項(xiàng)(-1)nx2n/(2n)!的絕對值小于等于10-6時(shí)停止累加。 【測試數(shù)據(jù)與運(yùn)行結(jié)果】 測試數(shù)據(jù):x = 1 輸出:f(1.000000)=1.278868 【待完善的源程序】 #include #include #include double f(double x) { int n=1,sign=-1; double term= 【1】 ,sum=term; while( 【2】 >1e-6) { term=term*sign*x*x/ 【3】 ; sum=sum+term; n++; } sum=3.14159/2-cos(x)/x* 【4】 ; return sum; } int main() { double x=1; printf("f(%f)=%f\n",x,f(x)); getch(); return 0; } 1@fabs(term)@((2*n-1)*(2*n))@sum (1)1 (2)fabs(term) (3)((2*n-1)*(2*n)) (4)sum 2(改錯(cuò)題): 改錯(cuò)(共16分,每錯(cuò)4分) 【要求】 1.打開T盤中文件myf1.c,按以下程序功能改正文件中程序的錯(cuò)誤。 2.可以修改語句中的一部分內(nèi)容,調(diào)整語句次序,增加變量聲明或預(yù)處理命令,但不能增加其他語句,也不能刪去整條語句。 3.修改后的源程序仍保存在T盤myf1.c文件中,請勿改變myf1.c的文件名。 【程序功能】 在一個(gè)一維數(shù)組中存儲(chǔ)的N個(gè)互不相同的整數(shù)中找出最小值和最大值,將最小值移到第一個(gè)數(shù)之前,將最大值移到最后一個(gè)數(shù)之后,其他數(shù)保持相對位置不變。 【測試數(shù)據(jù)與運(yùn)行結(jié)果】 測試數(shù)據(jù):8,5,6,9,4,1,-1,7,3,2 輸出:-1,8,5,6,4,1,7,3,2,9 【含有錯(cuò)誤的源程序】 #include #include #define N 10 void crl(int *a) { int i,j,max=0,min=0,temp; for(i=1;i if(a[min]>a[i]) min=i; temp=a[min]; j=min; while(j<0) { a[j]=a[j-1]; j--; } a[0]=temp; for(i=1;i temp=a[max]; j=max; while(j { a[j]=a[j-1]; j++; } a[N-1]=temp; } int main() { int a[N]={8,5,6,9,4,1,-1,7,3,2}; int i; crl(int a); for(i=0;i printf("]",*a+i); printf("\n"); getch(); return 0; } while(j<0) 修改為 while(j>0)@ a[j]=a[j-1]; 修改為 a[j]=a[j+1];@ crl(int a); 修改為 crl(a);@ printf("]",*a+i); 修改為 printf("]",*(a+i)); (1) while(j<0) 修改為 while(j>0) (2) a[j]=a[j-1]; 修改為 a[j]=a[j+1]; (3) crl(int a); 修改為 crl(a); (4) printf("]",*a+i); 修改為 printf("]",*(a+i)); 3(編程題): 編程(共22分) 【要求】 1.打開T盤中文件myf2.c,在其中輸入所編寫的程序。 2.數(shù)據(jù)文件的打開、使用、關(guān)閉均用C語言標(biāo)準(zhǔn)庫中緩沖文件系統(tǒng)的文件操作函數(shù)實(shí)現(xiàn)。 3.請勿改變myf2.c的文件名。 【程序功能】 在一個(gè)字符串中所有數(shù)字子串前插入指定字符。例如,原字符串為"AB1CD12EF123GH",在所有數(shù)字字符子串前插入一個(gè)指定字符'-'后字符串變?yōu)?/SPAN>"AB-1CD-12EF-123GH"。 【編程要求】 1.編寫void insert(char *p)函數(shù)。函數(shù)功能:在p指向的字符串中所有數(shù)字字符子串前插入一個(gè)字符‘-’。 2.編寫main函數(shù)。函數(shù)功能:聲明1個(gè)一維數(shù)組并用測試數(shù)據(jù)初始化,用數(shù)組作實(shí)參調(diào)用insert函數(shù)對數(shù)組中字符串做處理,將處理后的字符串輸出到顯示器屏幕及文件myf2.out中。最后將考生本人的準(zhǔn)考證號輸出到文件myf2.out中。 【測試數(shù)據(jù)與運(yùn)行結(jié)果】 測試數(shù)據(jù):"AB1CD12EF123GH" 輸出:AB-1CD-12EF-123GH #include void insert(char *p) { char *t,*q; int judge=0; q=p; while(*p) { if(*p>='0' && *p<='9' && judge==0) { while(*q) q++; for(t=p;t { *q=*(q-1); } *t='-'; judge=1; } if(*p>='A' && *p<='Z' || *p>='a' && *p<='z') { judge=0; } p++; } } int main() { FILE *fp; char c[100]={"AB1CD12EF123GH"}; insert(c); fp=fopen("myf2.out","w+"); printf("%s",c); fprintf(fp,"%s\n",c); fprintf(fp,"My Exam is 001122"); fclose(fp); }
|