國家二級(jí)(C語言)機(jī)試模擬試卷36(共264題)_第1頁
國家二級(jí)(C語言)機(jī)試模擬試卷36(共264題)_第2頁
國家二級(jí)(C語言)機(jī)試模擬試卷36(共264題)_第3頁
國家二級(jí)(C語言)機(jī)試模擬試卷36(共264題)_第4頁
國家二級(jí)(C語言)機(jī)試模擬試卷36(共264題)_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

國家二級(jí)(C語言)機(jī)試模擬試卷36(共9套)(共264題)國家二級(jí)(C語言)機(jī)試模擬試卷第1套一、選擇題(本題共39題,每題1.0分,共39分。)1、設(shè)有定義:charp[]={’1’,’2’,’3’},*q=p;以下不能計(jì)算出一個(gè)char型數(shù)據(jù)所占字節(jié)數(shù)的表達(dá)式是()。A、sizeof(*q)B、sizeof(char)C、sizeof(p)D、sizeof(p[0])標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:數(shù)組名表示該數(shù)組的首地址,是一個(gè)地址常量,所以sizeof(p)求得的是一個(gè)地址占用的字節(jié)數(shù),即4個(gè)字節(jié),答案選C。2、下列關(guān)于線性鏈表的描述中,正確的是()。I、只含有一個(gè)指針域來存放下一個(gè)元素地址II、指針域中的指針用于指向該結(jié)點(diǎn)的前一個(gè)或后一個(gè)結(jié)點(diǎn)(即前件或后件)III、結(jié)點(diǎn)由兩部分組成:數(shù)據(jù)域和指針域。A、僅I、IIB、僅I、IIIC、僅II、IIID、全部標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在定義的鏈表中,若只含有一個(gè)指針域來存放下一個(gè)元素地址,稱這樣的鏈表為單鏈表或線性鏈表。在鏈?zhǔn)酱鎯?chǔ)方式中,要求每個(gè)結(jié)點(diǎn)由兩部分組成:一部分用于存放數(shù)據(jù)元素值,稱為數(shù)據(jù)域;另一部分用于存放指針,稱為指針域。其中指針用于指向該結(jié)點(diǎn)的前一個(gè)或后一個(gè)結(jié)點(diǎn)(即前件或后件)。3、設(shè)a和b均為int型變量,且a=6、b=11、c=3,則能使值為3的表達(dá)式足()。A、b%(c%4)B、b%(c-a%5)C、b%a-a%5D、(b%a)-(a%4)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:選項(xiàng)D括號(hào)內(nèi)的運(yùn)算分別是b%a=11%6=5和a%c=6%4=2,最后得到5-2=3。4、以下各項(xiàng)中,能正確表述算式sin(2πr+30°)的C語言表達(dá)式是()。A、sin(2*π*r+30)B、sin(2*3.14*r+30)C、sin(2*3.14*r+3.14*30/180.0)D、sin(2*3.14*r+30*3.14/360.0)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:考查算術(shù)表達(dá)式的寫法,選項(xiàng)C中沒有,π,需要用數(shù)值3.14代替,sin函數(shù)的參數(shù)為弧度,角度30轉(zhuǎn)成弧度應(yīng)為3.14*30/180。故應(yīng)選C。5、對(duì)于循環(huán)隊(duì)列,下列敘述中正確的是()。A、隊(duì)頭指針是固定不變的B、隊(duì)頭指針一定大于隊(duì)尾指針C、隊(duì)頭指針一定小于隊(duì)尾指針D、隊(duì)頭指針可以大于隊(duì)尾指針,也可以小于隊(duì)尾指針標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:循環(huán)隊(duì)列的隊(duì)頭指針與隊(duì)尾指針都不是固定的,隨著入隊(duì)與出隊(duì)操作要進(jìn)行變化。因?yàn)槭茄h(huán)利用的隊(duì)列結(jié)構(gòu)所以隊(duì)頭指針有時(shí)可能大于隊(duì)尾指針有時(shí)也可能小于隊(duì)尾指針。6、下列不屬于軟件工程3個(gè)要素的是()。A、工具B、過程C、方法D、環(huán)境標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:軟件工程包括3個(gè)要素,即方法、工具和過程。方法是完成軟件工程項(xiàng)目的技術(shù)手段;工具支持軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各個(gè)環(huán)節(jié)的控制、管理。7、下列敘述中錯(cuò)誤的是()。A、C程序可以由多個(gè)程序文件組成B、一個(gè)C語言程序只能實(shí)現(xiàn)一種算法C、C程序可以由一個(gè)或多個(gè)函數(shù)組成D、一個(gè)C函數(shù)可以單獨(dú)作為一個(gè)C程序文件存在標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在一個(gè)C語言程序中可以進(jìn)行多種算法的實(shí)現(xiàn),對(duì)算法的個(gè)數(shù)沒有規(guī)定,所以B)錯(cuò)誤。8、sizeof(char)是()。A、一種函數(shù)調(diào)用B、一個(gè)整型表達(dá)式C、一個(gè)字符型表達(dá)式D、一個(gè)不合法的表達(dá)式標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:sizeoffchar)是一個(gè)C語言的關(guān)鍵字,它不是函數(shù)調(diào)用。sizeof的功能是計(jì)算出運(yùn)算對(duì)象在計(jì)算機(jī)的內(nèi)存中所占用的字節(jié)數(shù)量,該表達(dá)式的返回值是一個(gè)整數(shù),而不是一個(gè)字符型表達(dá)式。9、有以下程序#includemain(){inta=1,b=0;printf("%d,",b=a+b);printf("%d\n",a=2*b);}程序運(yùn)行后的輸出結(jié)果是()。A、1,2B、1,0C、3,2D、0,0標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:考查數(shù)據(jù)的輸入,printf("%d,",b=a+b);先計(jì)算b=a+b,得出b=1,再輸出b值。語句printf("%d\n",a=2*b);先計(jì)算a=2*b,得出a=2,再輸出a值。所以輸出結(jié)果為A)。10、軟件詳細(xì)設(shè)計(jì)生產(chǎn)的圖如下:該圖是()。A、N-S圖B、PAD圖C、程序流程圖D、E-R圖標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:N-S圖是用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,所以A不對(duì)。PAD圖是問題分析圖,它是繼承程序流程圖和方框圖之后提出的又一種主要用于描述軟件詳細(xì)設(shè)計(jì)的圖形表示工具,所以B不對(duì)。E-R圖是數(shù)據(jù)庫中的用于表示E-R模型的圖示工具,所以D不對(duì)。圖中所示表示方法是進(jìn)行軟件詳細(xì)設(shè)計(jì)時(shí)使用的程序流程圖。11、數(shù)據(jù)結(jié)構(gòu)中,與所使用的計(jì)算機(jī)無關(guān)的是數(shù)據(jù)的()。A、存儲(chǔ)結(jié)構(gòu)B、物理結(jié)構(gòu)C、邏輯結(jié)構(gòu)D、線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)反映的是數(shù)據(jù)元素之間的邏輯關(guān)系,與使用的計(jì)算機(jī)無關(guān)。12、下列選項(xiàng)中,不能作為合法常量的是()。A、1.234e04B、1.234e0.4C、1.234e+4D、1.234e0標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:用指數(shù)形式表示的實(shí)型常量需注意兩點(diǎn):①e或E后面的指數(shù)必須是整數(shù):②指數(shù)必須是不超過數(shù)據(jù)表示范圍的正負(fù)整數(shù),并且在e或E前必須有數(shù)字。13、以下敘述中錯(cuò)誤的是()。A、使用三種基本結(jié)構(gòu)構(gòu)成的程序只能解決簡單問題B、結(jié)構(gòu)化程序由順序、分支、循環(huán)三種基本結(jié)構(gòu)組成C、C語言是一種結(jié)構(gòu)化程序設(shè)計(jì)語言D、結(jié)構(gòu)化程序設(shè)計(jì)提倡模塊化的設(shè)計(jì)方法標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:已經(jīng)證明,由順序、分支、循環(huán)這三種基本結(jié)構(gòu)組成的算法可以解決任何復(fù)雜的問題。選項(xiàng)A)敘述有誤。14、下列程序的運(yùn)行結(jié)果為()。#include<stdio.h>voidabc(char*str){inta,b,i,j;for(i=j=0;str[i]!=’\0’;i++)if(str[i]!=’a’)str[j++]=str[i];str[j]=’\0’;}voidmain(){charstr[]=’’abcdef’’;abc(str);printf(’’str[]=%s’’,str);}A、str[]=bcdefB、str[]=abcdefC、str[]=aD、str[]=ab標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查函數(shù)調(diào)用的參數(shù)傳遞。通過函數(shù)abc的執(zhí)行,將字符串中的字母a去掉,保留剩下的,由于是通過指針調(diào)用,所以改變字符串的結(jié)果。15、下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是()。A、便于用戶,開發(fā)人員進(jìn)行理解和交流B、反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)C、作為確認(rèn)測試和驗(yàn)收的依據(jù)D、便于開發(fā)人員進(jìn)行需求分析標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:軟件需求規(guī)格說明書有以下幾個(gè)方面的作用:①便于用戶、開發(fā)人員進(jìn)行理解和交流;②反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù);③作為確認(rèn)測試和驗(yàn)收的依據(jù)。16、設(shè)表的長度為20。則在最壞情況下,冒泡排序的比較次數(shù)為()。A、190B、20C、19D、90標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:對(duì)長度為n的線性表排序,在最壞情況下,冒泡排序需要比較的次數(shù)為n(n-1)/2。本題中n=20,20×(20-1)/2=190。故本題答案為A選項(xiàng)。17、有以下程序:#includevoidfun(int*x,ints,inte){inti,j,t;for(i=s,j=e;i<j;i++,j--){t=*(x+i);*(x+i)=*c(x+j);*(x+j)=t;}}main(){intm[]={0,1,2,3,4,5,6,7,8,9},k;fun(m,0,3);fun(m+4,0,5);fun(m,0,9);for(k=0;k<10;k++)pfinff("%d",m[k]);}程序的運(yùn)行結(jié)果是()。A、4567890123B、3210987654C、9876543210D、0987651234標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:程序的執(zhí)行過程為:定義數(shù)組m,并為其賦初值,數(shù)組長度為10。調(diào)用函數(shù)fun(m,0,3)將數(shù)組首地址傳入函數(shù),函數(shù)實(shí)現(xiàn)將數(shù)組下標(biāo)值從0到3的元素首尾倒置,for循環(huán)結(jié)束之后數(shù)組為m={3,2,1,0,4,5,6,7,8,9}。調(diào)用函數(shù)fun(m+4,0,4)將數(shù)組下標(biāo)值為4的元素地址傳人函數(shù),函數(shù)實(shí)現(xiàn)將數(shù)組下標(biāo)值從4到9的元素首尾倒置,for循環(huán)結(jié)束之后數(shù)組為m={3,2,1,0,9,8,7,6,5,4}。調(diào)用函數(shù)fun(m,0,9)將數(shù)組首地址傳入函數(shù),函數(shù)實(shí)現(xiàn)將數(shù)組下標(biāo)值從0到9的元素首尾倒置,for循環(huán)結(jié)束之后數(shù)組為m={4,5,6,7,8,9,0,1,2,3}。依次輸出數(shù)組元素,結(jié)果為4567890123。18、若a、b、C、d都是int型變量且都已經(jīng)正確賦初值,則以下不正確的賦值語句是()。A、a+d:B、a++;C、a=b=c=d=100;D、a=(b=3)+(d=5);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語言規(guī)定,賦值號(hào)的右邊可以是一個(gè)賦值表達(dá)式,因此選項(xiàng)C)、選項(xiàng)D)正確;在選項(xiàng)B)中,a++是一個(gè)自加1的表達(dá)式,a被重新賦值,因此它是一個(gè)合法的賦值表達(dá)式;選項(xiàng)A)中,a+d是一個(gè)算術(shù)表達(dá)式,雖然最后有一個(gè)分號(hào),但這個(gè)表達(dá)式中沒有賦值操作,因此它不是一條賦值語句。19、關(guān)于字符常量,以下敘述正確的是()。A、空格不是一個(gè)字符常量B、字符常量能包含大于一個(gè)的字符C、單引號(hào)中的大寫字母和小寫字母代表的是相同的字符常量D、所有的字符常量都可以作為整型量來處理標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查字符常量的4個(gè)知識(shí)點(diǎn):①空格是一個(gè)字符常量,而且單引號(hào)中的空格不可以省略;②字符常量只能包含一個(gè)字符;③單引號(hào)中的大寫字母和小寫字母代表的是不相同的字符常量;④所有的字符常量都作為整型量來處理,在計(jì)算機(jī)內(nèi)部,其對(duì)應(yīng)的整數(shù)值就是ASCII碼值。20、下列敘述中正確的是()。A、有一個(gè)以上根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)B、只有一個(gè)根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)C、循環(huán)鏈表是非線性結(jié)構(gòu)D、雙向鏈表是非線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:線性結(jié)構(gòu)應(yīng)滿足:有且只有一個(gè)根結(jié)點(diǎn)與每個(gè)結(jié)點(diǎn)最多有一個(gè)前件,也最多有一個(gè)后件,所以B正確。所以有一個(gè)以上根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)一定是非線性結(jié)構(gòu),所以A錯(cuò)誤。循環(huán)鏈表和雙向鏈表都是線性結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)。21、下列數(shù)組定義中錯(cuò)誤的是()。A、intX[][3]={0};B、intx[2][3]={{1,2},{3,4},{5,6}};C、intx[][3]={{1,2,3},{4,5,6}};D、intx[2][3]={1,2,3,4,5,6};標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:二維數(shù)組的初始化有以下幾種形式:①分行進(jìn)行初始化;②不分行的初始化;⑧部分?jǐn)?shù)組元素初始化;④省略第一維的定義,不省略第二維的定義。在選項(xiàng)B中賦值號(hào)左邊定義了一個(gè)2行3列的二維數(shù)組,而右邊用3行2列的數(shù)字進(jìn)行賦初值。所以出現(xiàn)了邊界的越界溢出錯(cuò)誤。22、若定義函數(shù)“int*func()”,則函數(shù)func的返回值為()。A、一個(gè)實(shí)數(shù)B、一個(gè)指向整型變量的指針C、一個(gè)指向整型函數(shù)的指針D、一個(gè)整型函數(shù)的入口地址標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查函數(shù)返回值。fun函數(shù)的返回值類型為int*類型,即函數(shù)返回一個(gè)指向整型變量的指針。23、下列程序的輸出結(jié)果是()。#includevoidfun(int*a,int*b){int*k;k=a;a=b;b=k;}main(){inta=1,b=2,*x=&a,*y=&b;fun(x,y);printf("%d%d",a,b);}A、21B、12C、編譯出錯(cuò)D、00標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查函數(shù)調(diào)用時(shí)的參數(shù)傳遞。分析題目可知fun函數(shù)的形參是指向?qū)崊⒌闹羔槪玬ain()函數(shù)中調(diào)用fun()函數(shù)時(shí),實(shí)參是指針變量x、y(分別為指向a和b的指針),a、b的值在函數(shù)調(diào)用前后未發(fā)生變化,因而a=1,b=2,即輸出12。24、若有以下程序段:structst{intn;int*m;};.inta=2,b=3,c=5;structsts[3]=({101,&a),{102,&c),{103,&b}};main(){structst*p;p=s;}則以下表達(dá)式中值為5的是()。A、(*p).mB、*(p+1)->mC、*(p++)->nD、(p++).(*m)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查如何通過指針引用數(shù)組元素。首先定義了一個(gè)結(jié)構(gòu)體,然后定義了一個(gè)結(jié)構(gòu)體變量s[3],并賦了初值。在主程序中,定義了一個(gè)指向結(jié)構(gòu)體變量s的指針p,要使表達(dá)式的值為5,就應(yīng)該引用s[1].m的值,使指針p指向s[1],++p可以實(shí)現(xiàn)將p指針加1,指向s[1]。25、以下選項(xiàng)中,合法的實(shí)數(shù)是()。A、1.5E2B、E1.1C、2.10ED、1.9E1.4標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:用尾數(shù)指數(shù)形式表示浮點(diǎn)數(shù)時(shí),E的右側(cè)必須是整數(shù)且不能為空。26、有以下程序:#iinclude<stdio.h>main(){inta=7,b=0;do{b+=a;a-=1;}while(a--);printf("%d,%d\n",b,a);}執(zhí)行后的輸出結(jié)果是()。A、28,0B、28,1C、16,0D、16,-1標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:分析程序可知,do語句1…while(語句2),每次循環(huán)在語句1中a的值減1,在語句2中判斷a的值后,a的值又減1,所以在每次循環(huán)體執(zhí)行完后,b累加的a的值分別為7,5,3,1,a的值分別為6,4,2,0,最后當(dāng)a為0時(shí),while判斷條件為false,此時(shí)a的值再減1,為-1,到此循環(huán)結(jié)束,所以b的值為16,a的值為-1,故答案選D。27、有以下程序:#include<stdio.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf("%d\n",t);}程序運(yùn)行后的輸出結(jié)果是()。A、3B、4C、1D、9標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:分析程序可以發(fā)現(xiàn),內(nèi)層for循環(huán)每次只執(zhí)行一次:即當(dāng)j=i時(shí)。所以可以使用i替換j,去掉for循環(huán),對(duì)應(yīng)外層for循環(huán)的i,執(zhí)行t+=b[i][b[i][i]],所以當(dāng)i取值0、1、2時(shí),t的值累加b[0][b[0][0]]、b[1][b[1][1]]、b[2][b[2][2]],即b[0][0]、b[1][1]、b[2][2],對(duì)應(yīng)的值為:0、1、2,t取值為4(t初始值為1)。故答案選B。28、已知char**s,下面正確的語句是()。A、s=’’ABCDEF’’;B、*s=’’ABCDEF’’;C、**s=’’ABCDEF’’;D、*s=’A’;標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查數(shù)據(jù)文件的基本概念。①文件由數(shù)據(jù)流形式組成,可以按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件;②C語言既能讀寫文本文件,又可以讀寫二進(jìn)制文件。29、關(guān)于C語言的輸出語句:printf(’’%3d\n’’,1001)的敘述中正確的是()。A、程序運(yùn)行時(shí)輸出1001B、程序運(yùn)行時(shí)輸出001C、程序運(yùn)行時(shí)輸出100D、指定的輸出寬度不夠,編譯出錯(cuò)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:printf在輸出時(shí)按照格式來輸出,%3d表示輸出3位整數(shù),這里的3是最小位數(shù),即最少輸出3位,但如果多于3位,則按照實(shí)際位數(shù)輸出。30、下列選項(xiàng)中不屬于軟件生命周期開發(fā)階段任務(wù)的是()。A、軟件測試B、概要設(shè)計(jì)C、軟件維護(hù)D、詳細(xì)設(shè)計(jì)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:軟件生命周期分為軟件定義、軟件開發(fā)及軟件運(yùn)行維護(hù)三個(gè)階段,其中開發(fā)階段包括概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、實(shí)現(xiàn)和測試。31、有以下程序(字母A的ASCII代碼為65)#include<stdio.h>main(){charc1=’A’,c2=’Y’;printf("%d,%d\n",c1,c2);}程序運(yùn)行后的輸出結(jié)果是A、輸出格式不合法,輸出出錯(cuò)信息B、A,YC、65,90D、65,89標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:一個(gè)整數(shù),只要它的值在0~255范圍之內(nèi),也可以用字符形式輸出,輸出之前,系統(tǒng)會(huì)將該整數(shù)轉(zhuǎn)化為相應(yīng)的ASCII碼字符;字符也可以用整型來輸出,輸出的是對(duì)應(yīng)的ASCII值?!疉’的ASCII值為65,’Y’的ASCII值為89,D選項(xiàng)正確。32、以下語句的輸出結(jié)果是printf("%d\n",strlen("\t\"\065\xff\n"));A、5B、8C、14D、輸出項(xiàng)不合法,無正常輸出標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:由一對(duì)雙引號(hào)括起來的一串字符為字符串。字符常量是用一對(duì)單引號(hào)括起來的單個(gè)字符,還有一些特殊字符常量,即以"\"開頭的轉(zhuǎn)義字符。"\"后可以為某些單個(gè)字符也可以為八進(jìn)制或十六進(jìn)制數(shù)字?!痋t’’\"’’\065’’\xff’’\n’共5個(gè)字符,A選項(xiàng)正確。33、C語言源程序名的后綴是()。A、.exeB、.CC、.objD、.cp標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由C語言構(gòu)成的指令序列稱為C源程序,源程序文件的后綴為“.c”。源程序經(jīng)過C編譯程序編譯生成后綴為“.obj”的二進(jìn)制文件(稱為目標(biāo)文件),然后由稱為“連接程序”(Link)的軟件把目標(biāo)文件與C語言提供的各種庫函數(shù)連接起求,生成后綴為“.exe”的可執(zhí)行文件。34、軟件生命周期中,確定軟件系統(tǒng)要做什么的階段是A、需求分析B、軟件測試C、軟件設(shè)計(jì)D、系統(tǒng)維護(hù)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件生命周期各階段的主要任務(wù)是:問題定義、可行性研究與計(jì)劃制定、需求分析、軟件設(shè)計(jì)、軟件實(shí)現(xiàn)、軟件測試、運(yùn)行維護(hù)。其中需求分析是指對(duì)待開發(fā)軟件提出的需求進(jìn)行分析并給出詳細(xì)定義,也即是確定軟件系統(tǒng)要做什么,A選項(xiàng)正確。35、有兩個(gè)關(guān)系R與S如下,由關(guān)系R和S得到關(guān)系T,則所使用的操作為A、并B、自然連接C、笛卡爾積D、交標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:用于查詢的3個(gè)操作無法用傳統(tǒng)的集合運(yùn)算表示,引入的運(yùn)算為投影運(yùn)算、選擇運(yùn)算、笛卡爾積。常用的擴(kuò)充運(yùn)算有交、除、連接及自然連接等。并:RS是將S中的記錄追加到R后面。交:RS結(jié)果是既屬于R又屬于S的記錄組成的集合。上述兩種操作中,關(guān)系R與S要求有相同的結(jié)構(gòu),故A、D選項(xiàng)錯(cuò)誤。自然連接:去掉重復(fù)屬性的等值連接。自然連接要求兩個(gè)關(guān)系中進(jìn)行,比較的是相同的屬性,并且進(jìn)行等值連接,本題中結(jié)果T應(yīng)為空,B選項(xiàng)錯(cuò)誤。若T為笛卡爾積,結(jié)果為5元關(guān)系,元組個(gè)數(shù)為4,且計(jì)算結(jié)果與題目相符,C選項(xiàng)正確。36、一個(gè)棧的初始狀態(tài)為空。現(xiàn)將元素A,B,C,D,E依次入棧,然后依次退棧三次,并將退棧的三個(gè)元素依次入隊(duì)(原隊(duì)列為空),最后將隊(duì)列中的元素全部退出。則元素退隊(duì)的順序?yàn)锳、ABCB、CBAC、EDCD、CDE標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:棧所有的插入與刪除都限定在表的同一端進(jìn)行。入棧運(yùn)算即在棧頂位置插入一個(gè)新元素,退棧運(yùn)算即是取出棧頂元素賦予指定變量。隊(duì)列指允許在一端進(jìn)行插入,而在另一端進(jìn)行刪除的線性表。習(xí)慣上稱往隊(duì)列的隊(duì)尾插入一個(gè)元素為入隊(duì)運(yùn)算,稱從隊(duì)列的隊(duì)頭刪除一個(gè)元素為退隊(duì)運(yùn)算。元素入棧后為ABCDE,退棧并入隊(duì)后,隊(duì)中元素為EDC。退隊(duì)時(shí)從隊(duì)頭開始,順序?yàn)镋DC,C選項(xiàng)正確。37、若有定義語句:doublex,y,*px,*py;執(zhí)行px=&x;py=&y;正確的輸入語句是A、scanf("%lf%lf",x,y);B、scanf("%f%f"&x,&y);C、scanf("%f%f",x,y);D、scanf("%lf%le",px,py);標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:%lf,%le是針對(duì)double的,如果僅用%f,輸入的數(shù)據(jù)可能不能被完全接收,數(shù)據(jù)的精度可能不足。%f主要針對(duì)float類型的變量的輸入,選項(xiàng)B錯(cuò)誤。根據(jù)scanf(格式,變量地址),選擇A,C錯(cuò)誤。因此,選擇D38、設(shè)有以下程序段main(){intx[M][N];...Arrlet(x);...}則作為函數(shù)Arrlet的形參,以下表示形式非法的是A、intx[M][]B、int(*x)[N]C、intx[][N]D、intx[M][N]標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語言規(guī)定,二維數(shù)組作為實(shí)參參數(shù)傳遞時(shí),形參必須要指明二維數(shù)組的列數(shù),否則函數(shù)內(nèi)無法識(shí)別數(shù)組的寬度,行數(shù)提供沒有任何作用。(*p)[N]與p[][N]以及p[M][N]效果一樣。排除法A選項(xiàng)39、有以下程序#include<stdio.h>voidf1(char*a,charb){charc;c=*a;*a=b;b=c;}voidf2(chara,charb){charc;c=a;a=b;b=c;}voidf3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}main(){chart1,t2;t1=’A’;t2=’B’;f3(&t1,&t2);putchar(t1);putchar(t2);t1=’A’;t2=’B’;f2(t1,t2);putchar(t1);putchar(t2);t1=’A’;t2=’B’;f1(&t1,t2);putchar(t1);putchar(t2);printf("\n");}程序運(yùn)行后的輸出結(jié)果是A、ABBABBB、BAABBBC、BABABAD、BABAAB標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:f1(*a,b),*a地址傳遞,b值傳遞,將b值傳給*a,則f1(&t1,t2)調(diào)用后輸出t1、t2為BB。f2(a,b)值傳遞,傳入的只是a,b的拷貝,不實(shí)現(xiàn)交換,則f2(t1,t2)調(diào)用后輸出t1、t2為AB。f3(*a,*b)為地址傳遞,可以實(shí)現(xiàn)a,b值的交換,則f3(&t1,&t2)調(diào)用后輸出t1、t2為BA。因此結(jié)果為BAABBB。故答案為B選項(xiàng)二、程序填空題(本題共1題,每題1.0分,共1分。)40、下列給定程序中,函數(shù)fun的功能是:找出100~x(x≤999)之間各位上的數(shù)字之和為15的所有整數(shù),并在屏幕輸出;將符合條件的整數(shù)的個(gè)數(shù)作為函數(shù)值返回。例如,當(dāng)n值為500時(shí),各位數(shù)字之和為15的整數(shù)有:159、168、177、186、195、249、258、267、276、285、294、339、348、357、366、375、384、393、429、438、447、456、465、474、483、492,共有26個(gè)。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2intfun(intx)3{intn,s1,s2,s3,t;4/*********found*********/5n=【1】;6t=100;7/*********found*********/8while(t<=【2】)9{s1=t%10;s2=(t/10)%10;10s3=t/100;11if(s1+s2+s3==15)12{printf(’’%d’’,t);13n++;14}15/*********found*********/16【3】;17}18returnn;19}20main()21{intx=-1;22while(x>999||x<0)23{printf(’’Pleaseinput(0<x<=999):’’);24scanf(’’%d’’,&x);}25printf(’’\nTheresultis:%d\n’’,fun(x));26}標(biāo)準(zhǔn)答案:(1)0(2)x(3)t++知識(shí)點(diǎn)解析:填空1:變量n用于存放符合條件的整數(shù)的個(gè)數(shù),應(yīng)賦初值為0。填空2:根據(jù)題目要求,確定循環(huán)變量t的取值范圍為t<=x。填空3:循環(huán)變量t自增1操作。三、程序修改題(本題共1題,每題1.0分,共1分。)41、給定程序MODI1.C中函數(shù)fun的功能是:應(yīng)用遞歸算法求形參a的平方根。求平方根的迭代公式如下:例如,a為2時(shí),平方根值為:1.414214。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。1#include<stdio.h>2#include<math.h>3/**********found**********/4doublefun(doublea,dounlex0)5{doublexl,y;6x1=(x0+a/x0)/2.0;7/**********found**********/8if(fabs(x1-x0)>0.00001)9y=fun(a,x1);10elsey=x1;11returny;12}13main()14{doublex;15printf(’’Enterx:’’);scanf(’’%1f’’,&x);16printf(’’Thesquarerootof%1fis%if\n’’,x,fun(X,1.0));17}標(biāo)準(zhǔn)答案:(1)doublefun(doublea,doublex0)(2)if(fabs(x1-x0)>0.00001)知識(shí)點(diǎn)解析:函數(shù)的功能是應(yīng)用遞歸算法求某數(shù)a的平方根。(1)主函數(shù)中“fun(x,1.0)”,x是double型變量,1.0是浮點(diǎn)數(shù),可知fun有兩個(gè)double型參數(shù),而第一標(biāo)識(shí)下“dotmle”不是C語言關(guān)鍵字,所以應(yīng)將“doublefun(doublea,dounlex0)”改為“doublefun(doublea,doublex0)”。(2)第二個(gè)標(biāo)識(shí)下的if語句是判斷進(jìn)行遞歸運(yùn)算的條件,第二標(biāo)識(shí)下變量x0沒有定義,根據(jù)題意,這里是判斷x1和x0的差值的絕對(duì)值是否比0.00001大,所以第二個(gè)標(biāo)識(shí)下“if(fabs(x1-x0)>0.000011”改為“if(fabs(x1-x0)>0.00001)”。四、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)42、請(qǐng)編寫函數(shù)fun,其功能是:計(jì)算并輸出下列多項(xiàng)式的值:例如,在主函數(shù)中從鍵盤給n輸入50后,輸出為:s=1.718282。注意:要求n的值大于1但不大于100。部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#includedoublefun(intn){}NONO(){/*清在此函數(shù)內(nèi)打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*rf,*wf;intn,i;doubles;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d",&n);s=fun(n);fprintf(wf,"%lf\n",s);}fclose(rf);fclose(wf);}main(){intn;doubles;printf("\nTnputn:");scanf("%d",&n);s=fun(n);printf("\n\ns=%f\n\n",s);NONO();}標(biāo)準(zhǔn)答案:doubles=0,t=1;inti;for(i=1;i<=n;i++){t*=i;s+=1./t;}returns;知識(shí)點(diǎn)解析:(1)根據(jù)題干中給出的數(shù)列,推出每一項(xiàng)分母是在前一項(xiàng)分母的基礎(chǔ)上乘當(dāng)前項(xiàng)數(shù),第n項(xiàng)的項(xiàng)數(shù)為n。(2)在循環(huán)中求得每一項(xiàng),然后對(duì)其進(jìn)行累加求和。國家二級(jí)(C語言)機(jī)試模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:將形參s所指字符串中的所有數(shù)字字符順序前移,其他字符順序后移,處理后新字符串的首地址作為函數(shù)值返回。例如,s所指字符串為:asdl23fgh543df,處理后新字符串為:123543asdfghdf。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<ctype.h>char*fun(char*S){inti,j,k,n;char*p,*t;n=strlen(s)+1;t=(char*)malloc(n*Sizeof(char));p=(char*)malloc(n*sizeof(char));j=0;k=0,for(i=0;i<n;i++){if(isdigit(s[i])){/*********found*********/P[【1】]=s[i];j++;)else{t[k]=s[i];k++;}}/*********found*********/for(i=0,i<【2】;i++)P[j+i]=t[i];P[j+k]=0;/*********found*********/return【3】;}main(){chars[80];prLntf("Pleaseinput:");scanf("%s",s),printf("\nTheresultis:%s\n",fun(s));}標(biāo)準(zhǔn)答案:(1)j(2)k(3)p或(p)知識(shí)點(diǎn)解析:填空1:函數(shù)中申請(qǐng)了兩個(gè)內(nèi)存空間,其中p存放數(shù)字字符串,t存放非數(shù)字字符串,根據(jù)條件可知,p依次存放數(shù)字字符串,其位置由j來控制,所以應(yīng)填j。填空2:利用for循環(huán)再把t中的內(nèi)容依次追加到p中,其中t的長度為k,所以應(yīng)填k。填空3:處理之后的字符串存放到p中,最后返回p的首地址即可,所以應(yīng)填p。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:首先把b所指字符串中的字符按逆序存放,然后將a所指字符串中的字符和b所指字符串中的字符,按排列的順序交叉合并到c所指數(shù)組中,過長的剩余字符接在c所指的數(shù)組的尾部。例如,當(dāng)a所指字符串中的內(nèi)容為“abcdefg”,b所指字符串中的內(nèi)容為“1234”時(shí),c所指數(shù)組中的內(nèi)容應(yīng)為“a4b3c2d1efg”;而當(dāng)a所指字符串中的內(nèi)容為“1234”,b所指字符串的內(nèi)容為“abedefg”時(shí),c所指數(shù)組中的內(nèi)容應(yīng)該為“1g2f3e4dcba”。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODl1.C中。不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>voidfun(char*a,char*b,char*c){inti,j;charch;i=0;j=strlen(b)-1;/*********found*********/while(i>j)(ch=b[i];b[i]=b[j];b[j]=ch;i++;j--;}while(*a‖*b){/*********found*********/If(*a){*c=*a,c++;a++;)if(*b){*c=*b;c++;b++;)}*c=0;}main(){chars1[100],s2[100],t[200];printf("\nEnterslstring:"),scanf("%s",s1);printf("\nEnters2string:");scanf("%s",s2);fun(sl,s2,t);printf("\nTheresultis:%s\n",t);}標(biāo)準(zhǔn)答案:(1)while(i知識(shí)點(diǎn)解析:(1)由i和j定義的初始值可知,此處應(yīng)該判斷i是否小于j,所以應(yīng)改為while(i三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,函數(shù)fun的功能是:將s所指字符串中下標(biāo)為偶數(shù)同時(shí)ASCII值為奇數(shù)的字符刪除,s所指串中剩余的字符形成的新串放在t所指的數(shù)組中。例如,若$所指字符串中的內(nèi)容為“ABCDEFG12345”,其中字符c的ASCII碼值為奇數(shù),在數(shù)組中的下標(biāo)為偶數(shù),因此必須刪除;而字符1的ASCII碼值為奇數(shù),在數(shù)組中的下標(biāo)為奇數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是“BDF12345”。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#include<stdIo.h>#include<string.h>voidfun(char*S,chart[]){}main(){chars[100],t[100];voidNONO();printf("\npleaseenterstringS:");scanf("%s",s);fun(s,t);printf("\nTheresultis:%s\n",t),NONO();}voidNONO()(/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/chars[100],t[100];FILE*rf,*wf;inti;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",s);fun(s,t);fprintf(wf,"%s\n",t);}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:voidfun(char*s,chart[]){inti,j=0;for(i=0;i知識(shí)點(diǎn)解析:本題是從一個(gè)字符串按要求生成另一個(gè)新的字符串。我們使用for循環(huán)語句來解決這個(gè)問題。在賦值新的字符串之前,先對(duì)數(shù)組元素的下標(biāo)和ASCII碼的值進(jìn)行判斷,將滿足要求的元素賦給新的字符串。國家二級(jí)(C語言)機(jī)試模擬試卷第3套一、選擇題(本題共38題,每題1.0分,共38分。)1、下面關(guān)于算法的敘述中,正確的是()。A、算法的執(zhí)行效率與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)無關(guān)B、算法的有窮性是指算法必須能在執(zhí)行有限個(gè)步驟之后終止C、算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)D、以上三種描述都正確標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:算法在運(yùn)行過程中需輔助存儲(chǔ)空間的大小稱為算法的空間復(fù)雜度。算法的有窮性是指一個(gè)算法必須在執(zhí)行有限的步驟后結(jié)束。2、下列二叉樹描述中,正確的是()。A、任何一棵二叉樹必須有一個(gè)度為2的結(jié)點(diǎn)B、二叉樹的度可以小于2C、非空二叉樹有0個(gè)或1個(gè)根結(jié)點(diǎn)D、至少有2個(gè)根結(jié)點(diǎn)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:二叉樹是由n/>0個(gè)結(jié)點(diǎn)的有限集合構(gòu)成,此集合或者為空集,或者由一個(gè)根結(jié)點(diǎn)及兩棵互不相交的左右子樹組成,并且左右子樹都是二叉樹。二叉樹可以是空集合,根可以有空的左子樹或空的右子樹。二叉樹不是樹的特殊情況,它們是兩個(gè)概念。二叉樹具有如下兩個(gè)特點(diǎn):①非空二叉樹只有一個(gè)根結(jié)點(diǎn);②每一個(gè)結(jié)點(diǎn)最多有兩棵子樹,且分別稱為該結(jié)點(diǎn)的左子樹與右子樹。3、如果進(jìn)棧序列為A,B,C,D,則可能的出棧序列是()。A、C,A,D,BB、B,D,C,AC、C,D,A,BD、任意順序標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:棧的操作原則為后進(jìn)先出。選項(xiàng)B)中出棧順序可按“A進(jìn),B進(jìn),B出,C進(jìn),D進(jìn),D出,C出,A出”實(shí)現(xiàn)。4、下列各選項(xiàng)中,不屬于序言性注釋的是()。A、程序標(biāo)題B、程序設(shè)計(jì)者C、主要算法D、數(shù)據(jù)狀態(tài)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:注釋一般為序言性注釋和功能性注釋。序言性注釋常位于程序開頭部分,它包括程序標(biāo)題、程序功能說明、主要算法、接口說明、程序位置、開發(fā)簡歷、程序設(shè)計(jì)者、復(fù)審者、復(fù)審日期及修改日期等。功能性注釋一般嵌在源程序體之中,用于描述其后的語句或程序的主要功能。5、下列模式中,能夠給出數(shù)據(jù)庫物理存儲(chǔ)結(jié)構(gòu)與物理存取方法的是()。A、內(nèi)模式B、外模式C、概念模式D、邏輯模式標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:數(shù)據(jù)庫管理系統(tǒng)的三級(jí)模式結(jié)構(gòu)由外模式、模式和內(nèi)模式組成。外模式,或子模式,或用戶模式,是指數(shù)據(jù)庫用戶所看到的數(shù)據(jù)結(jié)構(gòu),是用戶看到的數(shù)據(jù)視圖。模式,或邏輯模式,是數(shù)據(jù)庫中對(duì)全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的描述,是所有用戶所見到的數(shù)據(jù)視圖的總和。外模式是模式的一部分。內(nèi)模式,或存儲(chǔ)模式,或物理模式,是指數(shù)據(jù)在數(shù)據(jù)庫系統(tǒng)內(nèi)的存儲(chǔ)介質(zhì)上的表示,即對(duì)數(shù)據(jù)的物理結(jié)構(gòu)和存取方式的描述。6、下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是()。A、便于用戶,開發(fā)人員進(jìn)行理解和交流B、反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)C、作為確認(rèn)測試和驗(yàn)收的依據(jù)D、便于開發(fā)人員進(jìn)行需求分析標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:軟件需求規(guī)格說明書有以下幾個(gè)方面的作用:①便于用戶、開發(fā)人員進(jìn)行理解和交流;②反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù):③作為確認(rèn)測試和驗(yàn)收的依據(jù)。7、下列不屬于軟件工程3個(gè)要素的是()。A、工具B、過程C、方法D、環(huán)境標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:軟件工程包括3個(gè)要素,即方法、工具和過程。方法是完成軟件工程項(xiàng)目的技術(shù)手段;工具支持軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各個(gè)環(huán)節(jié)的控制、管理。8、數(shù)據(jù)庫系統(tǒng)在其內(nèi)部具有3級(jí)模式,用來描述數(shù)據(jù)庫中全體數(shù)據(jù)的全局邏輯結(jié)構(gòu)和特性的是()。A、外模式B、概念模式C、內(nèi)模式D、存儲(chǔ)模式標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:概念模式,也稱邏輯模式,是對(duì)數(shù)據(jù)庫系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶應(yīng)用公共數(shù)據(jù)視圖。它不涉及具體的硬件環(huán)境與平臺(tái),與具體的軟件環(huán)境也無關(guān)。9、將E-R圖轉(zhuǎn)換到關(guān)系模式時(shí),實(shí)體與聯(lián)系都可以表示成()。A、屬性B、關(guān)系C、記錄D、碼標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:E-R圖由實(shí)體、實(shí)體的屬性和實(shí)體之間的聯(lián)系3個(gè)要素組成,關(guān)系模型的邏輯結(jié)構(gòu)是一組關(guān)系模式的集合,將E-R圖轉(zhuǎn)換為關(guān)系模型:將實(shí)體、實(shí)體的屬性和實(shí)體之間的聯(lián)系轉(zhuǎn)化為關(guān)系模式。如表4-1所示。10、以下敘述中正確的是()。A、C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方B、C程序的書寫格式是固定的,每行只能寫一條語句C、構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名D、在對(duì)C語言程序進(jìn)行編譯時(shí),可以發(fā)現(xiàn)注釋行中的拼寫錯(cuò)誤標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查的是C語言程序設(shè)計(jì)的初步知識(shí)。選項(xiàng)A),程序中“/*……*/”表示注釋部分,注釋只是給人看的,對(duì)程序的編譯和運(yùn)行不起作用,可以在程序中的任何位置;選項(xiàng)B),C語言的書寫格式自由,一行可以寫多條語句,一條語句也可以寫在不同行上;選項(xiàng)C),一個(gè)C程序中必須有且只能有一個(gè)由“main”命名的主函數(shù),其他函數(shù)由用戶自行命名;選項(xiàng)D),程序的注釋僅僅是提供閱讀之用,并不參與程序的編譯,所以編譯也就不會(huì)發(fā)現(xiàn)注釋行中的錯(cuò)誤。11、下面的程序在編譯時(shí)產(chǎn)生錯(cuò)誤,其出錯(cuò)原因是()。撐include<stdio.h>main(){int1_case;floatpfintF;printf("請(qǐng)輸入2個(gè)數(shù)");scanf("%d%f",&1_case,&pfinff);printf("%d%f\n",1_case,printF);}A、定義語句出錯(cuò),1_case不能作為變量名B、定義語句出錯(cuò),printF不能用作用戶自定義標(biāo)識(shí)符C、定義語句無錯(cuò),scanf不能作為輸入函數(shù)使用D、定義語句無錯(cuò),pfintf不能輸出1_case的值標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語言變量名可由數(shù)字,字母,下劃線構(gòu)成,但首字符不能為數(shù)字。12、以下不正確的轉(zhuǎn)義字符是()。A、’\\’B、’\d’C、’\s’D、’088’標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:“\\”是反斜線符,“’\d’”是整型變量轉(zhuǎn)義字符,“’\s’”是字符串型轉(zhuǎn)義字符,C語言中沒有規(guī)定“’\088’”為轉(zhuǎn)義字符。13、下面程序的運(yùn)行結(jié)果是()。y=5;x=14;y=((x=3+y,x+6),x-1);pfintf("x=%d,y=%d",y);A、x=27,y=27B、x=12,y=13C、x=15,y=14D、x=y=27標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查的是逗號(hào)表達(dá)式。逗號(hào)表達(dá)式的求解步驟是先求解表達(dá)式1,然后依次求解表達(dá)式2,直到表達(dá)式N的值。整個(gè)逗號(hào)表達(dá)式的值就是最后一個(gè)表達(dá)式N的值。表達(dá)式“(x=3*y,x+6)”中,“x=15”。表達(dá)式“y=x-1=14”。14、sizeof(char)是()。A、一種函數(shù)調(diào)用B、一個(gè)整型表達(dá)式C、一個(gè)字符型表達(dá)式D、一個(gè)不合法的表達(dá)式標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:“sizeof(char)”是一個(gè)C語言的關(guān)鍵字,它不是函數(shù)調(diào)用?!皊izeof”的功能是計(jì)算出運(yùn)算對(duì)象在計(jì)算機(jī)的內(nèi)存中所占用的字節(jié)數(shù)量,該表達(dá)式的返回值是一個(gè)整數(shù),而不是一個(gè)字符型表達(dá)式。15、下列4個(gè)程序中,完全正確的是()。A、#include<stdio.h>main();{/*programming*/printf("programming!\n");}B、#include<stdio.h>main(){/*/programming/*/printf("programming!\n");}C、#include<stdio.h>main(){/*/programming*/*/printf("programming!\n");}D、include<stdio.h>main(){/*programming*/printf("programming!\n");}標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:選項(xiàng)A)中,main()函數(shù)后面的分號(hào)是錯(cuò)誤的,C語言在函數(shù)名后面不能有分號(hào):在C語言中注釋內(nèi)容必須放在“/*”和“*/”之間,“/*”和“*/”必須成對(duì)出現(xiàn),按語法規(guī)定在注釋之間不可再嵌套“/*”和“*/”,選項(xiàng)C)的程序段中注釋語句之間有嵌套;C語言用#include命令行來實(shí)現(xiàn)文件包含的功能。#include命令行的形式為:#include“文件名”,選項(xiàng)D)中的include前面少了一個(gè)#符號(hào)。16、設(shè)變量均已正確定義,若要通過scanf("%d%c%d‰",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。下列所示的輸入形式中正確的是(注:□代表空格字符)()。A、10□X□20□Y<CR>B、10□X20□Y<CR>C、10DX<CI>20Y<CI>D、10X<CR>20Y<CR>標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在使用scanf函數(shù)進(jìn)行輸入數(shù)據(jù)時(shí),輸入的數(shù)據(jù)之間可以用空格、回車符、制表符(Tab鍵)等間隔符隔開,但是輸入值時(shí)也要輸入相應(yīng)的字符,格式符中沒有這些字符,所以輸入時(shí)也不能輸入,否則會(huì)將這些字符作為對(duì)應(yīng)的字符變量的值賦值給字符變量,如輸入10賦值給a1,應(yīng)直接輸入x賦值給c1,否則輸入空格后,將空格賦值給c1,同理輸入a2、c2。17、兩次運(yùn)行下面的程序,如果從鍵盤上分別輸入3和2,則輸出結(jié)果是()。#include<stdio.h>main(){intx;scanf("%d",&x);if(x++>2)printf("%d",x);elseprintf("%d\n",x--);}A、4和3B、4和2C、4和1D、3和2標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查if…else語句。首先,scanf函數(shù)通過鍵盤讀入x的值。當(dāng)x=3時(shí),第一個(gè)if語句先判斷條件,取x的值3和2比較,然后將x的值加1,if條件成立,執(zhí)行下面的printf語句,輸出x的值4。當(dāng)x=2時(shí),第一個(gè)if語句先判斷條件,先取x的值2和2比較,然后將x的值加1(x的值變?yōu)?),if條件不成立,執(zhí)行下面的else語句,先輸出x的值3,再將x的值減1。18、以下敘述中不正確的是()。A、在不同的函數(shù)中可以使用相同的名字的變量B、函數(shù)中的形式參數(shù)是局部變量C、在一個(gè)函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效D、在一個(gè)函數(shù)內(nèi)的復(fù)合語句中定義的變量在本函數(shù)范圍內(nèi)有效標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是變量的作用范圍。選項(xiàng)D)中,在一個(gè)函數(shù)的復(fù)合語句中定義的變量是局部變量,只在定義此變量的復(fù)合語句內(nèi)有效,并不是在整個(gè)函數(shù)體內(nèi)都有效。19、運(yùn)行下面的程序,輸入字符串“MicrosoftVisualStudio”,則程序的執(zhí)行結(jié)果是()。#include<stdio.h>main(){charChr[20];scanf("%s",&Chr);printf("%s\n",Chr);}A、MicrosoftVisualStudioB、MC、MicrosoftD、MicrosofWisualStudio標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:當(dāng)從鍵盤輸入“MicrosoftVisualStudio”時(shí),由于“scanf”輸入函數(shù)的特點(diǎn)是遇到空格時(shí)結(jié)束讀入字符,因此,該程序只將“Microsoft”這9個(gè)字符送到了字符數(shù)組str中,并在其后自動(dòng)加上結(jié)束符“\0”。20、若有“doublea;”,則正確的輸入語句是()。A、scanf("%lf",a);B、scanf("%f",&a);C、scanf("%lf",&a)D、scanf("%le",a);標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:scanf函數(shù)的調(diào)用形式是:scanf("格式字符串",輸入項(xiàng)地址表)。其中,“格式字符串”是要輸入的變量的格式符;“輸入項(xiàng)地址表”是要輸入的變量的地址。a是double型數(shù)據(jù),格式字符串可以用“%lf”,“%f”是浮點(diǎn)型。題中定義變量a為雙精度型變量,雙精度變量的格式符為“%lf”:變量的地址用取地址符“&”加變量名表示,變量a的地址為“&a”。21、if語句的基本形式為:if(表達(dá)式)語句,其中“表達(dá)式”()。A、可以是任意合法的表達(dá)式B、必須是邏輯表達(dá)式C、必須是邏輯表達(dá)式或關(guān)系表達(dá)式D、必須是關(guān)系表達(dá)式標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查if表達(dá)式。if(表達(dá)式)中的表達(dá)式可以為任何合法的表達(dá)式,一般情況下為邏輯、條件表達(dá)式,需要注意的是,當(dāng)?shù)忍?hào)(==)誤寫為賦值號(hào)(=)時(shí)不會(huì)報(bào)錯(cuò)的,但是其值恒為1。22、若i、j己定義成int型,則以下程序段中內(nèi)循環(huán)體的總執(zhí)行次數(shù)是()。for(i=6;i>0;i--)forIj=0;j<4;j++){…}A、20B、24C、25D、30標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查的是嵌套for循環(huán)執(zhí)行次數(shù)。對(duì)于外層i的循環(huán)中任何一個(gè)i,內(nèi)層i的循環(huán)中的j都要從0變化到3,j=4時(shí)退出循環(huán);然后外層i循環(huán)的i減少1,內(nèi)層循環(huán)的.j仍要從0變化到3,j=4時(shí)退出循環(huán)……直到外層i循環(huán)的i變?yōu)?,退出i循環(huán)。所以執(zhí)行多重循環(huán)時(shí),對(duì)外層循環(huán)變量的每一個(gè)值,內(nèi)層循環(huán)的循環(huán)變量都要從初始值變化到終值。對(duì)外層循環(huán)的每一次循環(huán),內(nèi)層循環(huán)要執(zhí)行完整的循環(huán)語句。外層for語句執(zhí)行6次,內(nèi)層for語句執(zhí)行4次,所以內(nèi)循環(huán)體執(zhí)行6*4=24次。23、以下選項(xiàng)中非法的字符常量是()。A、’\\’B、’\0201’C、’\xAA’D、’0’標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:選項(xiàng)A)表示的是反斜杠字符;一般可以用1~3位八進(jìn)制數(shù)表示的字符,而選項(xiàng)B)中“’\0201’”有4位八進(jìn)制數(shù),所以錯(cuò)誤;選項(xiàng)C)是用兩位十六進(jìn)制數(shù)AA表示的ASCII碼字符:選項(xiàng)D)表示的是字符0對(duì)應(yīng)的ASCII碼值。24、以下程序的輸出結(jié)果是()。#include<stdio.h>intm=13;intfun(intx,inty){intm=2;retum(x*y-m);}main(){inta=7,b=6;printf("%d",fun(a,b)/m);}A、1B、3C、7D、10標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查的是函數(shù)調(diào)用時(shí)的參數(shù)的作用域。在函數(shù)調(diào)用時(shí),當(dāng)全局變量和局部變量的名稱相同時(shí),在局部變量的作用域內(nèi),局部變量起作用,因而在fun函數(shù)內(nèi)m的應(yīng)該等于2,main中的m為13,所以返回值為7×6-2=40,而fun(a,b)/m值為40/13=3。25、下面程序運(yùn)行后的輸出結(jié)果是()。#include<stdio.h>main(){inta[5]={1,0,4,2,0},b[5]={1,2,3,4,5},i,s=0;for(i=0;i<5;i++)s=s+b[a[i]];printf("%d\n",s);}A、12B、15C、11D、8標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:這道題目是計(jì)算一維數(shù)組b中某些元素的和。這些元素的下標(biāo)值是一維數(shù)組a中元素值。s=0+b[1]+b[0]+b[4]+b[2]+b[0]==2+1+5+3+1=12。26、已知下列函數(shù)定義:fun(int*b,intc,intn,intdata){intk:for(k=0;k<m*n;k++){*b=data;b++;}}則調(diào)用此函數(shù)的正確寫法是(假設(shè)變量a的說明為inta[50])()。A、fun(*a,4,5,1);B、fun(&a,4,5,1);C、fun((int*)a,4,5,1);D、fun(a,4,5,1);標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查函數(shù)調(diào)用時(shí)的參數(shù)傳遞。fun函數(shù)的調(diào)用形式為“fun(int*b,intm,intn,intdata)”,而調(diào)用數(shù)組時(shí),用數(shù)組名表示一個(gè)指向數(shù)組第一個(gè)元素的指針,因此,調(diào)用時(shí)的形式為:fun(a,4,5,1)。27、以下程序段的輸出結(jié)果是()。#include<sldio.b>main(){charp[][4]={"ABC","DEF","GHI"};inti;for(i=0;i<3;i++)puts(p[i]);}A、ABCB、ADGC、ABCDEFGHID、ABC標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題首先定義了一個(gè)字符串?dāng)?shù)組p,通過for循環(huán)輸出p[0]、p[1]、p[2]的值。28、下面程序的運(yùn)行結(jié)果是()。#include<stdio.h>#include<string.h>main(){char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}A、正數(shù)B、負(fù)數(shù)C、零D、不確定的值標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查字符串比較函數(shù)和字符串的比較原則的兩個(gè)知識(shí)點(diǎn):①原則是依次比較兩個(gè)字符串同一位置的一對(duì)字符,若它們的ASCII碼值相同,則繼續(xù)比較下一對(duì)字符,若它們的ASCII碼值不同,則ASCII碼值較大的字符所在的字符串較大;若所有字符相同,則兩個(gè)字符串相等;若一個(gè)字符串全部i個(gè)字符與另一個(gè)字符串的前i個(gè)字符相同,則字符串較長的較大。②“strcmp(s1,s2)”的返回值,當(dāng)“str1<str2”時(shí),返回值<0;當(dāng)“str1=str2”時(shí),返回0;當(dāng)“str1>str2”,返回值>0。29、已知:intc[3][4];,則對(duì)數(shù)組元素引用正確的是()。A、c[1][4]B、c[1.5][0]C、c[1+0][0]D、以上表達(dá)都錯(cuò)誤標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題考查的是數(shù)組元素的引用。對(duì)于已定義的數(shù)組a[M][N],數(shù)組元素的正確引用必須滿足行下標(biāo)小于M,列下標(biāo)小于N,且為正整數(shù)。因此,選項(xiàng)A)中列下標(biāo)溢出;選項(xiàng)B)中行下標(biāo)出現(xiàn)小數(shù);選項(xiàng)C)滿足要求。30、C語言中允許用外部說明來指定變量、函數(shù)和其他標(biāo)識(shí)符的特征,這里所說的外部指的是()。A、冠以關(guān)鍵字extemB、位置在函數(shù)體外部C、作用范圍是全程的D、位置在函數(shù)的外部標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C語言中允許用位置在函數(shù)外部的說明來指定變量、函數(shù)和其他標(biāo)識(shí)符的特征。31、有以下程序:#include<stdio.h>intfun(intx,inty){if(x==y)retum(x);elsereturn((x+y)/2);}main(){int]]a=1,b=2,c=3;printf("%d\n",fun(2*a,fun(b,c)));}程序運(yùn)行后的輸出結(jié)果是()。A、2B、3C、4D、5標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:fun(b,c)即fun(2,3),2!=3,所以返回(2+3)/2=2;fun(2*a,2)即fun(2,2),2==2,所以返回2。32、若有“chars[3][3]={"AAA","BBB","CCC"};”說明語句,則與它等價(jià)的語句是()。A、char**s={"AAA","BBB","CCC"};B、char*s[3]={"AAA","BBB","CCC"};C、chars[][5]={"AAA","BBB","CCC"};D、chars[][3]={"AAA","BBB","CCC"};標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:二維字符數(shù)組在定義時(shí)可省略第一維的維數(shù),根據(jù)初始化有3個(gè)字符串,所以選項(xiàng)D)中數(shù)組有3行,與已知說明語句等價(jià)。33、計(jì)算機(jī)高級(jí)語言程序的運(yùn)行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的是()。A、C語言程序僅可以編譯執(zhí)行B、C語言程序僅可以解釋執(zhí)行C、C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D、以上說法都不對(duì)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語言作為計(jì)算機(jī)高級(jí)語言,用它編寫的程序必須經(jīng)過C語言的編譯器編譯后,轉(zhuǎn)換為二進(jìn)制的機(jī)器碼來運(yùn)行。34、若有如下說明,且int類型占兩個(gè)字節(jié),則正確的敘述為()。structst{inta;intb[2];}a;A、結(jié)構(gòu)體變量a與結(jié)構(gòu)體成員a同名,定義是合法的B、程序只在執(zhí)行到該結(jié)構(gòu)體時(shí)才為結(jié)構(gòu)體st分配存儲(chǔ)單元C、程序運(yùn)行時(shí)為結(jié)構(gòu)體st分配8字節(jié)存儲(chǔ)單元D、類型名structst可以通過extern關(guān)鍵字提前引用標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題主要考查結(jié)構(gòu)體的用法:①結(jié)構(gòu)體變量a與結(jié)構(gòu)體成員a同名,定義合法;②在程序編譯的時(shí)候結(jié)構(gòu)的定義并不會(huì)使系統(tǒng)為該結(jié)構(gòu)分配內(nèi)存空間,只有在說明結(jié)構(gòu)變量時(shí)才分配內(nèi)存空間;③inta占2個(gè)字節(jié),intb[2]占4個(gè)字節(jié),共6個(gè);④類型名“structst”不可以通過extern關(guān)鍵字提前引用。35、有以下程序:#include<stdio.h>intfun(int*k){intb=0;b=*k+b;return(b);}main(){inta[10]={1,2,3,4,5,6,7,8),i;for(i=2;i<4;i++){printf("%d",fun(&a[i]));}printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。A、1012B、810C、34D、1028標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:b是局部變量,因此,當(dāng)i=2時(shí),fun的返回值為3,i=3時(shí)fun返回值為436、設(shè)有一聯(lián)合體變量定義如下:uniondata{longa;floatb;intc;chard;};uniondatax;執(zhí)行下列語句后,正確的聯(lián)合體變量x的值是()。x.a(chǎn)=111111;x.b=2222;x.c=2.1546;x.d=’R’;A、111111B、2222C、2.1546D、R’;標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題主要考查的知識(shí)點(diǎn)是聯(lián)合體的內(nèi)存使用。聯(lián)合體與結(jié)構(gòu)體的定義相同,其本質(zhì)區(qū)別就在于內(nèi)存使用方式的不同。聯(lián)合體所占用的內(nèi)存空間為最長的成員所占用的空間,各個(gè)成員分量全部是從低地址方向開始使用內(nèi)存單元:聯(lián)合體中的空間在某一時(shí)刻只能保持某一個(gè)成員的數(shù)據(jù),所以本題執(zhí)行完一系列賦值后,只得到最后執(zhí)行的字符’R’。37、若x=2,y=3,則x&y的結(jié)果是()。A、0B、2C、3D、5標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題主要考查按位與,(&)運(yùn)算的知識(shí)點(diǎn)?!?”是對(duì)兩個(gè)運(yùn)算量相應(yīng)的位進(jìn)行邏輯與,“&”的規(guī)則與邏輯與“&&”相同。x=2的二進(jìn)制為00000010,y=3的二進(jìn)制為00000011,x&y=00000010,轉(zhuǎn)化為十進(jìn)制即為2。38、已知一個(gè)文件中存放若干工人檔案記錄,其數(shù)據(jù)結(jié)構(gòu)如下:structa{charnumber[100];intage;floatp[6];};定義一個(gè)數(shù)組:structanumber[10];假定文件已正確打開,不能正確地從文件中讀入10名工人數(shù)據(jù)到數(shù)組b中的是()。A、fread(b,sizeof(structa),10,fp);B、for(i=0;i<10;i++)fread(b[i],sizeof(structa),1,fp);C、for(i=0;i<10;i++)fread(b+i,sizeof(structa),1,fp);D、for(i=0;i<5;i+=2)fread(b+i,sezeof(structa),2,fp);標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:數(shù)據(jù)塊輸入/輸出函數(shù)的調(diào)用形式為:fread(buffer,size,count,fp)。fread函數(shù)參數(shù)說明:“buffer”是一個(gè)指針,對(duì)fread來說,它是讀入數(shù)據(jù)的存放地址。對(duì)fwrite來說,是要輸出數(shù)據(jù)的地址。“size”是要讀寫的字節(jié)數(shù);“count”是要進(jìn)行讀寫多少個(gè)size字節(jié)的數(shù)據(jù)項(xiàng);“fp”是指文件型指針。選項(xiàng)B)中b[i]是一個(gè)數(shù)組,不是指針,需改為&b[i]。注意:完成一次讀操作(fread())后,如果沒有關(guān)閉流(fclose()),則指針(FILE*fp)自動(dòng)向后移動(dòng)前一次讀寫的長度,不關(guān)閉流則繼續(xù)下一次讀操作,接著上次的輸出繼續(xù)輸出。二、程序填空題(本題共1題,每題1.0分,共1分。)39、函數(shù)fun的功能是:根據(jù)所給的年、月、日,計(jì)算出該日是這一年的第幾天,并作為函數(shù)值返回。其中函數(shù)isleap用來判別某一年是否為閏年。例如,若輸入:200851,則程序輸出:2008年5月1日是該年的第122天。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容,并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>intisleap(intyear){intleap;leap=(year&4==0&&year&100!=0‖year&400==0);/**********found**********/Eeturn___1___;}intfun(intyear,intmonth,intday){inttable[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};intdays=0,i;for(i=1;~<month;i++)days=days+table[i];/**********found**********/days=days+___2___;if(isleap(year)&&month>2)/**********found**********/days=days+___3___;reLurndays;}main(){intyear,month,day,days;prntf("請(qǐng)輸入年、月、日:");scanf("%d%d%d",&year,&month,&day);days=fun(year,month,day);printf("%d年%d月%d日是該年的第%d天\n",year,month,day,days);}標(biāo)準(zhǔn)答案:(1)leap(2)day(3)1知識(shí)點(diǎn)解析:本題中函數(shù)fun的功能是根據(jù)所給的年、月、日,計(jì)算出該日是這一年的第幾天,并作為函數(shù)值返回,其中,要考慮是否為閏年。這道問題其實(shí)很簡單,唯一要考慮的變化因素也只有閏年這個(gè)變化,而且這個(gè)變化導(dǎo)致的程序變化也很簡單。首先設(shè)置常規(guī)的月份天數(shù),這需要一個(gè)數(shù)組(注意這個(gè)數(shù)組應(yīng)該有13個(gè)數(shù)據(jù),而不是12個(gè),因?yàn)樵路菔菑?月份開始的,而數(shù)組是從位置0開始的,所以這里應(yīng)該將數(shù)組的第一個(gè)數(shù)據(jù)定義為0,后面12個(gè)數(shù)據(jù)按照常規(guī)月份來然后給出我們需要的月份和日數(shù)后進(jìn)行常規(guī)統(tǒng)計(jì)),這是一般情況,如果是閏年的話且月份超過二月的話就加上1即可,應(yīng)該這種情況特別給出一個(gè)判斷函數(shù)就行了。第一空:“return___1___;p”這一空出現(xiàn)在isleap函數(shù)中,是為了判斷我們給出的年份是否為閏年的函數(shù),這里要填的為此函數(shù)的返回值。很明顯地,這里的數(shù)據(jù)為leap,判斷是否為閏年后,我們還需要返回leap是否是閏年。所以這一空應(yīng)該填lea。第二空:“days=days+___2___;p”這一空出現(xiàn)在fun函數(shù)中,所填的是days的數(shù)據(jù)結(jié)果算式,days即為我們需要統(tǒng)計(jì)的天數(shù)。這里根據(jù)條件和函數(shù)的下一步,我們可以看出來這里的days統(tǒng)計(jì)是當(dāng)年份不為閏年時(shí)的天數(shù)統(tǒng)計(jì),而當(dāng)年份不為閏年時(shí),只要將給出的月份前面幾個(gè)月份天數(shù)相加,再加上這個(gè)月的日期即為這個(gè)給出年月目在這一年中的天數(shù),再根據(jù)上一步我們知道算式右邊的days代表的即為本月前面月份的天數(shù)總和,所以這里只需要加上本月的日期就可以得到我們需要的一年中的第幾天。所以這一空應(yīng)該填的是給出的日期day。第三空:“days=days+___3___;p”這一空出現(xiàn)在fun函數(shù)中,這里所填也是days的數(shù)據(jù),但是我們可以看到這里的days是在判斷完為閏年且月份大于2時(shí)進(jìn)行的計(jì)算,所以這里的days算法不同于上一步days的算法。根據(jù)常識(shí)我們都可以知道,閏年大于2的月份是要比普通的年份多一個(gè)2月29號(hào)的,所以要比普通的日期天數(shù)多一天,所以這里應(yīng)該加上1,所以這一空應(yīng)該填的是1。三、程序修改題(本題共1題,每題1.0分,共1分。)40、給定程序MODI1.C中函數(shù)fun的功能是:逐個(gè)比較p、q所指兩個(gè)字符串對(duì)應(yīng)位置中的字符,把ASCII值大或相等的字符依次存放到c所指數(shù)組中,形成一個(gè)新的字符串。例如,若主函數(shù)中a字符串為:aBCDeFgH,主函數(shù)中b字符串為:ABcd,則C中的字符串應(yīng)為:aBcdeFgH。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include<stdio.h>#include<string.h>voidfun(char*p,char*q,char*c){/**********found**********/intk=1;/**********found**********/while(*p!=*q){if(*p<*q)c[k]=*q;elsec[k]=*p;if(*p)p++;if(*q)q++;k++;}}main(){chara[10]="aBCDeFgH",b[10]="ABcd",C[80]={’\0’};fun(a,b,c);printf("Thestringa:");puts(a);printf("Thestringb:");puts(b);printf("Theresult:");puts(c);}標(biāo)準(zhǔn)答案:(1)intk=1改為intk=0;(2)(*p!=*q)改為(*p‖*q);知識(shí)點(diǎn)解析:本題中函數(shù)fun的功能是:逐個(gè)比較p、q所指兩個(gè)字符串對(duì)應(yīng)位置中的字符,把ASCII值大或相等的字符依次存放到c所指數(shù)組中,形成一個(gè)新的字符串。While循環(huán)為字符串比較的提供前提條件,然后再比較得到p、q兩個(gè)字符串一一對(duì)應(yīng)的符合條件中可用的一個(gè)字符,最終合并得到新的字符串c。(1)第一個(gè)錯(cuò)誤在fun函數(shù)最開始定義的k的初始值。根據(jù)fun函數(shù)的功能我們可以知道這里k是新字符串c各字符的位置,然后根據(jù)比較結(jié)果一一對(duì)應(yīng)新字符串個(gè)位置的字符。這里犯了一個(gè)明顯的錯(cuò)誤就是:從字符串的第一個(gè)字符比較,得到的第一個(gè)字符在字符串中的位置不是c[1]而是c[0],所以k的初始值不是1

溫馨提示

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

評(píng)論

0/150

提交評(píng)論