全國計算機等級考試二級C語言附詳解培訓_第1頁
全國計算機等級考試二級C語言附詳解培訓_第2頁
全國計算機等級考試二級C語言附詳解培訓_第3頁
全國計算機等級考試二級C語言附詳解培訓_第4頁
全國計算機等級考試二級C語言附詳解培訓_第5頁
已閱讀5頁,還剩52頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

全國計算機等級考試二級C語言

2020/12/181一、選擇題2020/12/182下列敘述中正確的是:

A、循環隊列是隊列的一種順序存儲結構B、循環隊列是隊列的一種鏈式存儲結構

C、循環隊列是非線性結構

D、循環隊列是一直邏輯結構

A

為了充分利用存儲空間,可以把順序隊列看成一個環狀空間,即把順序隊列的頭尾指針相連,這樣的隊列稱之為循環隊列。

是對順序隊列的改進,故循環隊列是隊列的一種順序存儲結構2020/12/183下列敘述中正確的是

A、棧是一種先進先出的線性表

B、隊列是一種后進先出的線性表

C、棧和隊列都是非線性結構

D、以上三種說法都不對棧是一種后進先出的線性表隊列是一種先進先出的線性表,二者均是線性結構,答案為選項D。2020/12/184一棵二叉樹共有25個節點,其中5個是子節點,則度為1的節點數為

A、4B、6C、10D、16二叉樹的性質3,度為0的結點數(即葉子結點數)=度為2的結點數+1。題中葉子結點數為5個,利用性質3可計算出度為2的結點數為4個。二叉樹只有三種結點:度為0的、度為1的、度為2的,總數為25個,所以度為1的結點數即為25-5-4=16個,所以為D。2020/12/185在下列模式中,能夠給出數據庫物理存儲結構與物理存取方法的是

A、內模式B、外模式C、概念模式D、邏輯模式內模式也稱存儲模式,它是數據物理結構和存儲方式的描述,是數據在數據庫內部的表示方式對應于物理級,它是數據庫中全體數據的內部表示或底層描述,是數據庫最低一級的邏輯描述。選項A正確。2020/12/186在一個關系中,候選關鍵字可以有多個且在任何關系中至少有一個關鍵字。所以在滿足數據完整性約束的條件下,一個關系應該有一個或多個候選關鍵字,選項D正確。在滿足實體完整性約束的條件下一個關系中可以沒有候選關鍵詞一個關系中只能有一個候選關鍵詞一個關系中必須有多個候選關鍵詞一個關系中應該有一個或者多個候選關鍵詞2020/12/187R和S的差是由屬于R但不屬于S的元組組成的集合

根據本題關系R和關系S運算前后的變化,可以看出此處進行的是關系運算的差運算有三個關系R、S和T如下:2020/12/188軟件生命周期----提出、實現、使用、維護到停止使用(退役)

軟件生命周期三個階段----軟件定義、軟件開發及軟件運行維護軟件生命周期的主要活動階段是可行性研究與計劃制定、需求分析、軟件設計、軟件實現、軟件測試、運行和維護。

軟件生命周期不包括市場調研。軟件生命周期中的活動不包括A、軟件維護B、市場調研

C、軟件測試D、需求分析2020/12/189需求分析是對待開發軟件提出的需求進行分析并給出詳細的定義。

主要工作是編寫軟件需求規格說明書及用戶手冊。

需求分析的任務是導出目標系統的邏輯模型,解決“做什么”的問題。

制定軟件集成測試計劃是軟件設計階段需要完成的任務下面不屬于需求分析階段任務的是A、確定軟件系統的功能需求

B、確定軟件系統的系統的系能需求B、制定軟件集成測試計劃

D、需求規格說明書審評2020/12/1810黑盒測試----功能測試或數據驅動測試

測試著眼于程序外部結構、不考慮內部邏輯結構

主要針對軟件界面和軟件功能進行測試。在黑盒測試方式中,設計測試用例的主要根據是A、程序外部功能B、程序內部邏輯C、程序數據結構D、程序流程圖2020/12/1811軟件設計包括概要設計和詳細設計

軟件詳細設計--程序流程圖(PDF)和PAD(問題分析圖)是過程設計的常用工具

數據流圖(DFD圖)是軟件定義階段結構化分析方法常用的工具。在軟件設計中不使用的工具是A、系統結構圖B、程序流程圖

C、PAD圖D、數據流圖(DFD圖)2020/12/1812簡單程序設計的步驟:

首先要確定算法和數據結構

然后編碼、調試

最后整理相關文檔。針對簡單程序設計,以下敘述的實施步驟正確的是A、確定算法和數據結構、編碼、調試、整理文檔B、編碼、確定算法和數據結構、調試、整理文檔C、整理文檔、確定算法和數據結構、編碼、調試D、確定算法和數據結構、調試、編碼、整理文檔2020/12/1813實型數據在內存中存儲的二進制位數是有限的

例如float型數據在內存中有24位二進制尾數

而一個十進制實數轉化為二進制實數時,其有效數字位數有可能會超過尾數的存儲長度,從而導致有效數字丟失而產生誤差。關于C語言中數的表示,以下敘述正確的是A、只有整型數在允許范圍內能精確無誤的表示,實型數會有誤差B、只要在在允許范圍內整型和實型都能精確表示C、只有實型數在允許范圍內能精確無誤的表示,整型數會有誤差D、只有八進制表示的數在不會有誤差2020/12/1814一個正確的算法可以有零個或者多個輸入,必須有一個或者多個輸出以下關于算法敘述錯誤的是A、算法可以用偽代碼、流程圖等多種形式來描述B、一個正確的算法必須有輸入C、一個正確的算法必須有輸出D、用流程圖可以描述的算法可以用任何一種計算機高級語言編寫成程序代碼2020/12/1815一個C程序有且只有一個主函數main()。

一個C程序可以包含多個不同名字的子函數

C程序在書寫時沒有嚴格的縮進要求。以下敘述錯誤的是A、一個C程序可以包含多個不同名的函數B、一個C程序只能有一個主函數C、C程序在書寫時,有嚴格的縮進要求,否則不能編譯通過D、C程序的主函數必須用main作為函數名2020/12/1816在輸入格式中定義好了”%c%c”,其中沒有任何符號,所以中間不能加任何字符,包含不能加逗號、回車和空格,因為這些也算是字符。設有以下語句Charch1,ch2,scanf(”%c%c”,&ch1,&ch2);若要為變量ch1和ch2分別輸入字符A和B,正確的輸入形式應該是A、A和B之間用逗號間隔

B、A和B之間不能有任何間隔符C、A和B之間可以用回車間隔

D、A和B之間用空格間隔2020/12/1817轉義字符,即反斜杠加數字或字母的形式(例如'\n'是換行符),轉義字符本身就是一個字符。

C的\X后面是十六進制數

數字不需要以0開頭的,以0開頭了,0所代表的意義是指八進制,例如01,是指八進制的1,八進制里是沒有數字8和9的,所以09是錯誤的,同理,D項的019錯了

C以x開頭代表了xff這個數是16進制,16進制里是有f的,數值上等于十進制里的15

數字前什么都不加,例如A和B項,C語言默認為十進制。以下選項中非法的字符常量是A、’\102’B、’\65’C、’\xff’D、’\019’2020/12/18181、首先執行a-=a-5,即a=a-(a-5)

使得a的值為5

2、執行c=(a-=a-5)

即將a的值5賦給變量c

使得c的值也為5。

3、執行下句逗號表達式中的a=b,

把b的值0賦給a,此時a的值為0

4、執行b=b+4,使得b的值為4。

最后輸出。有以下程序#include<sthio.h>Main(){IntA=0,B=0,C=0;C=(A-=A-5);(A=B,B+=4);Printf(“%d,%d,%d\n”,A,B,C)}程序運行后輸出的結果是A0,4,5B4,4,5C4,4,4D0,0,02020/12/1819++x表示先將x值加1后再用,x++表示先使用x值,用后加1,所以本題中ABC選項都會輸出x+1的值,只有D選項會輸出x值。設變量均已正確定義并且賦值,以下與其他三組輸出結構不同的一組語句是A、x++;printf((“%d\n”,x);B、n=++x;printf((“%d\n”,n);C、++x;printf((“%d\n”,x);D、n=x++;printf((“%d\n”,n);2020/12/1820C語言中非0的值表示真,0表示假以下選項中,能表示邏輯值“假”的是A1B0.000001C0D100.02020/12/1821判斷條件中if(a++<9)是先用后加,即a的值為9,所以條件不成立,但是a已經進行了自增1操作,a的值此時為10。執行else語句時,打印a--,是先用后減,所以先輸出10,然后a的值變為9。

有以下程序#include<sthio.h>Main(){inta;Scanf(“%d”,&a);If(a++<9)printf((“%d\n”,a);Elseprintf((“%d\n”,a--);}程序運行時鍵盤輸入9<回車>,則輸出的結構是A、10B11C9D82020/12/1822case分支后面如果沒有break,則就會順序執行下面的case,直到遇到break跳出。第一次循環后s的值為3。第二次s的值為:s=s+3,s=s+4,即為10。第三次沒有匹配成功直接執行default語句,s=s+4,所以s的值為14。有以下程序#include<sthio.h>Main(){ints=0,n;For(n=0;n<3;n<++){switch(s){case0;Case1;s+=1;Case2;s+=2;break;Case3;s+3;Case4;s+=4;}printf((“%d\n”,s);}}程序運行后的結果是A1,2,4B1,3,6C3,10,14D3,6,102020/12/1823本題中k初始值為-1,執行一次循環體,執行完后k值為0,不滿足k<0條件,推出循環,所以執行了一次。若k是int類型變量,且有以下for語句For(k=-1;k<0;k++)printf(****\n”);下面關于語句執行情況的敘述中正確的是A、循環體執行一次B、循環體執行兩次C、循環體一次也不執行D、構成無限循環2020/12/1824第一次循環a的值為0,a%2也為0,條件不滿足所以打印的是(c+a)即變量c的值“A”。第二次a的值為1,條件a%2的值為1,條件滿足打印字符(b+a)即字符“2”。第三次a的值為2,條件不滿足,打印(a+c)即字符”C”。同理打印后續字符為“4E6”。有以下程序#include<sthio.h>Main(){charA,B,C;B=’1’;C=’A’For(A=0;A<6;A++){if(A%2)putchar(B+A);Elseputchar(C+A);}}程序運行后輸出的結果是A1B3D5FBABCDFECA2C4E6D1234562020/12/1825數組和指針的概念

本題中*k指向數組m的首地址。*(k+2)現將指針后移兩個元素,即為m[2]的首地址,然后取出m[2]的值6,所以選擇A選項。選項B的值是一個地址無意義。選項C的值為4。選項D使得m[0]的值為4。設有如下定義語句Intm[]={2,4,6,8},*k=m;以下選項中,表達式的值為6的是A*(k+2)Bk+2C*k+2D*k+=22020/12/1826指針的概念和應用

數組名本身就是地址,所以不需要用&符號。C選項不能對所有元素賦值而是反復再給一個數值賦值且是死循環。D

fun函數的功能是:通過鍵盤輸入給x所指的整型數組所有元素賦值。在下列劃線處應該填寫的是#include<sthio.h>#defineN5Viodfun(intx[N]){intm;For(m=N-1;m>0;m--)scanf(“%d\n”,);}A&x[++m]B&x[m+1]Cx+(m++)Dx+m2020/12/1827選項A中a=/*p1-m;表示方式不正確,未能正確表示出含義。有以下程序#include<sthio.h>Main(){inta,b,k,m,*p1,*p2;k=1,m=8;p1=&k,p2=&m;a=/*p1-m;b=*p1+*p2+6;printf(“%d”,a);printf(“%d\n”,b);}編譯時編譯器提示錯誤信息,你認為出錯的語句是A、a=/*p1-mB、b=*p1+*p2+6C、k=1,m=8;D、p1=&k,p2=&m;2020/12/1828指針數組的概念

D選項中str為二維字符數組,不能夠直接把一個字符串賦值到二維數組的某一行中。以下選項中有語法錯誤的是Achar*str[]={“guest”};B、charstr[10]={“guest”};C、char*str[3]*str[1]={“guest”};D、charstr[3][10];str[1]={“guest”};2020/12/1829函數聲明基本用法

C選項中函數的第一形參沒有指名是數組,代表的是一個整型數,聲明不正確。

avg函數的功能是求整型數組中的前若干個元素的平均值,設數組元素個數最多不超過10,則下列函數說明語句錯誤的是A、intavg(int*a,intn);B、intavg(inta[10],intn);C、intavg(inta,intn);D、intavg(inta[],intn);2020/12/1830轉義字符的用法

strlen函數的作用是求得字符串長度,\n與\1均是反義字符各表示一個字符所以打印值為8有以下函數#include<sthio.h>#include<string.h>main(){printf(“%d\n”,strren”ATS\n012\1”));}程序運行后的輸出結果是A3B8C4D92020/12/1831scanf和gets輸入字符串的區別

scanf語句接收字符時遇到空格就作為一個字符串的結束,所以a數組中為this,b數組中為is

但是getchar函數見到回車才認為結束所以c數組為acat!。所以打印結果如選項C。有以下函數#include<sthio.h>main(){chara[20],b[20],c[20];scanf(”%s%s”,a,b);get(c);printf(”%s%s\n”,a,b,c);}程序運行時從第一行開始輸入thisisacat!<回車>,則輸出結果是Athisisacat!BthisisaCthisisacat!Dthisisacat!2020/12/1832函數的嵌套調用

當運行fun(‘z’),調用fun(‘y’),然后嵌套調用fun(‘x’),輸出結果為先輸出x,然后輸出y,最后輸出z有以下函數#include<sthio.h>viodfun(charc){if(c>’x’)fun(c-1);

printf(“%c”,c);}main(){fun”z”;}程序運行輸出結果是AxyzBwxyzCzyxwDzyx2020/12/1833for循環函數調用

執行fun(3)是輸出****,然后輸出#,執行fun(4)時輸出*****,然后輸出#,所以選項D)正確。有以下函數#include<sthio.h>viodfunc(intn){inti;for(i=0;i<=n;i++)printf(“*”);printf(“#”);main(){func(3);printf(“”);func(4);printf(“\n”);}程序運行輸出結果是A****#***#B***#*****#C**#*****#D****#*****#2020/12/1834靜態局部變量,靜態局部變量屬于靜態存儲方式,它具有以下特點:

(1)靜態局部變量在函數內定義,它的生存期為整個源程序。

(2)靜態局部變量只能在定義該變量的函數內使用該變量。

退出該函數后,盡管該變量還繼續存在,但不能使用它。

有以下函數#include<sthio.h>viodfun(int*s){staicintj=0;do{s[j]=s[j]+s[j+1];}wihle(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(K+1;k<3;k++)fun(a);for(K+1;k<5;k++)printf(“%d”,a[k]);printf(“\n”);}程序運行輸出結果是A12345B23445C34756D357452020/12/1835

(3)允許對構造類靜態局部量賦初值。若未賦以初值,則由系統自動賦以0值。

(4)根據靜態局部變量的特點,它是一種生存期為整個源文件的量。

雖然離開定義它的函數后不能使用,但如再次調用定義它的函數時,它又可繼續使用,而且保存了前次被調用后留下的值。

有以下函數#include<sthio.h>viodfun(int*s){staicintj=0;do{s[j]=s[j]+s[j+1];}wihle(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(K+1;k<3;k++)fun(a);for(K+1;k<5;k++)printf(“%d”,a[k]);printf(“\n”);}程序運行輸出結果是A12345B23445C34756D357452020/12/1836根據這個特點,函數第一次調用時,會將數組a變為35345,當第二次調用時,函數內的j值為2,所以會將數組a的第三個元素更改為7,所以最終結果為35745,選項D)正確。有以下函數#include<sthio.h>viodfun(int*s){staicintj=0;do{s[j]=s[j]+s[j+1];}wihle(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(K+1;k<3;k++)fun(a);for(K+1;k<5;k++)printf(“%d”,a[k]);printf(“\n”);}程序運行輸出結果是A12345B23445C34756D357452020/12/1837宏定義的使用

根據該宏的定義,S(k+j)=(k+j)*k+j*2=39,S(k-j)=(k-j)*k-j*2=11,所以答案為39,11B有以下函數#include<sthio.h>#defineS(x)(x)*x*2main(){intk=5,j=2;printf(“%d,”,S[k+j]);printf(“%d\n”,S(k-j)));}程序運行輸出結果是A98,18B39,11C39,18D98,112020/12/1838結構體的用法,在引用結構體中的成員變量時,可以使用’.’來引用,當指針指向結構體時,可以使用’->’來指向結構體的成員,C選項引用錯誤。

設有以下程序段StructMP3{charname[20];Charcolor;Floatprice;}std,*ptr;ptr=&std;若要引用結構體變量std中的color成員,寫法錯誤的是Astd.colorBptr->colorCstd->colorD(*ptr).color2020/12/1839結構體的用法,結構體數組存儲了三個人的信息,x+2代表了指向第三個元素,所以輸出name為Zhao。有以下函數#include<sthio.h>structstu{intmun;charname[10];intage;};viodfun(structstu*p){printf(“%s\n”,p->name);}mian(){structstux[3]={{01,”zhang”,20},{02,”wang”,19},{03,”zhao”,18}};fun(x+2);}程序運行輸出結果是AzhangBzhaoCwangD192020/12/1840移位操作

執行c=(a<<2)<<1語句時,首先是a左移兩位,其等效于將a乘以4,得到48,然后將48左移一位,相當于是乘以2,所以結果為c=96,選項D正確。有以下函數#include<sthio.h>mian(){inta=12,c;c=(a<<2)<<1;printf(“%d\n”,c):}程序運行輸出結果是A3B50C2D962020/12/1841文件的操作

函數ftell()用于得到文件位置指針當前位置相對于文件首的偏移字節數。在隨機方式存取文件時,由于文件位置頻繁的前后移動,程序不容易確定文件的當前位置。調用函數ftell()就能非常容易地確定文件的當前位置。不能寫入數據,其他三個選項都可以向文件中寫入。以下函數不能用于向文件寫入數據的是AftellBfwriteCfputcDfprintffwrite是寫入用的函數,向文件寫入一個數據塊fputc把一個字符寫入指定的文件中fprintf傳送格式化輸出到一個文件中,可用于打印機輸出2020/12/1842二、填空題2020/12/1843在順序表中刪除一個元素,最壞情況是刪除第一個元素,后面的(n-1)個元素均要向前移動,所以此處填n-1。1、將長度為n的順序存儲在線性表中刪除一個元素,最壞情況下需要移動表中的元素個數為(

)。2020/12/1844可知此循環隊列共30個空間,另外隊尾指針rear的值小于隊頭指針front的值,所以利用公式可知此循環隊列的元素個數為29。

當rear<front時,元素個數=總容量-(front-rear);

當rear>front時,元素個數=rear-front;設循環隊列的存儲空間為Q(1:3),初始狀態為front=rear=30。現經過一系列入隊與退隊運算后,front=16,rear=15,則循環隊列中有(

)個元素。2020/12/1845數據操縱語言DML(DataManipulationLanguage)

用戶通過它可以實現對數據庫的基本操作。

例如,對表中數據的查詢、插入、刪除和修改。

在DML中,應用程序可以對數據庫作插、刪、改、排、檢等五種操作。數據庫管理系統提供的數據語言中,負責數據的增、刪、改和查詢的是(

)。2020/12/1846實體與聯系都可以表示成關系。

在將E-R圖轉換到關系模式時,實體和聯系都可以表示成()。2020/12/1847面向對象方法是一種基于對象模型的程序設計方法,包括面向對象分析、面向對象設計、面向對象編程,是目前應用范圍最廣的設計方法。

其中對象模型包括六個要素:封裝、抽象、模塊化、層次結構、類、并發性。面

向對象方法的主要特征是封裝、繼承和多態性,所以此空應填面向對象方法。

常見的軟件工程方法有結構化方法和面向對象方法,類、繼承以及多態性等概念屬于(

)。2020/12/1848scanf()函數是格式化輸入函數,它從標準輸入設備(鍵盤)讀取輸入的信息,其調用格式為:scanf("<格式化字符串>",<地址表>),scanf("a=%d,b=%d",&a,&b)中a=%d,b=%d之間有逗號,在輸入數據時也要加逗號,如果去掉逗號,輸入時就不用逗號,而用空格,tab鍵或回車鍵將各個數據隔開。

a=1,b=2設變量a和b已定義為int類型,若要通過scanf(”a=%d,b=%d”,&a,&b);語句分別給a和b輸入1和2,則正確的數據輸入內容是(

)。2020/12/1849a+=a%=9;其中a%=9等價于a=a%9;結果為1,所以a+=a%=9等價于a=a+1,答案為2.以下程序的輸出結果是(

)。#include<sthio.h>mian(){inta=37;a+=a%=9;printf(“%d\n”,a);}2020/12/1850a||b若a,b都為假,則a||b為假,其他都為真

如果a為真時,則對b不進行真假

所以對于c=a++||b++,因為a++時為真,

b++不進行判斷,b的值保持不變,b=2。設a、b、c都是整型變量,如果a的值為1,b的值為2,則執行c=a++||b++;語句后,變量b的值是().2020/12/1851k<=nfo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論