國家二級(C語言)機試模擬試卷4(共261題)_第1頁
國家二級(C語言)機試模擬試卷4(共261題)_第2頁
國家二級(C語言)機試模擬試卷4(共261題)_第3頁
國家二級(C語言)機試模擬試卷4(共261題)_第4頁
國家二級(C語言)機試模擬試卷4(共261題)_第5頁
已閱讀5頁,還剩77頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級(C語言)機試模擬試卷4(共9套)(共261題)國家二級(C語言)機試模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的功能是將帶頭節(jié)點的單向鏈表逆置,即若原鏈表中從頭至尾節(jié)點數(shù)據(jù)域依次為2、4、6、8、10,逆置后,從頭至尾節(jié)點數(shù)據(jù)域依次為10、8、6、4、2。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#include<stdlib.h>#defineN5typedefstructnode{intdata;structnode*next;}NODE;voidfun(NODE*h){NODE*p,*q,*r;/*********found*********/p=h->【1】;/*********found*********/if(p==【2】)return;q=p->next;p->next=NULL;while(q){r=q->next;q->next=p;/*********found*********/p=q;q=【3】;}h->next=p;}NODE*creatlist(inta[]){NODE*h,*p,*q;inti;h:(NODE*)malloc(sizeof(NODE));h->next=NULL:for(i=0;i<N;i++){q=(NODE*)malloc(sizeof(NODE));q->data=a[i];q->next=NULL:if(h->next==NULL)h->next=p=q;else{p->next=q;p=q;)}returnh;}voidoutlist(NODE*h){NODE*p;p=h->next;if(p==NULL)printf("ThelistisNULL!\n");else(printf("\nHead");do{printf("->%d",p->data);p=p->next;)while(p!=NULL);printf("->End\n");}}main(){NODE*head;inta[N]={2,4,6,8,10};head=creatlist(a);printf("\nTheoriginallist:\n");outlist(head);fun(head);printf("\nThelistafterinverting:\n");outlist(head);}標準答案:(1)next(2)NULL(3)r知識點解析:填空1:本空考查了為p賦初值,根據(jù)題目的要求是將帶頭節(jié)點的單向鏈表逆置可知,p的初值應該為h->next。填空2:if判斷語句表明當p等于什么時就要返回,因此只能當p等于NULL時返回,不用做后面的鏈表的逆置了。填空3:把q的指針向后移動,才能實現(xiàn)將帶頭節(jié)點的單向鏈表逆置。因此本空填寫r。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modil中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:計算s所指字符串中含有t所指字符串的數(shù)目,并作為函數(shù)值返回。請改正程序中的錯誤或在下劃線處填上正確的內容并把下劃線刪除,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdlib.h>#include<conio.h>#include<string.h>#include<stdio.h>#defineN80intfun(char*s,char*t){intn;char*p,*r;n=0;/*********found*********/*r=t:while(*s){p=s;while(*r){if(*r==*p){r++;p++;}elsebreak;if(*r==’\0’)n++;}/*********found*********/<u>1</u>;s++;}returnn;}voidmain(){chara[N],b[N];intm;printf("\nPleaseenterstringa:");gets(a);printf("\nPleaseentersubstringb:");gets(b);m=fun(a,b),printf("\nTheresultis:m=%d\n",m);}標準答案:(1)r=t;(2)r=t;或r=&t[0];知識點解析:從字符串s中找出子字符串的方法是:從第一個字符開始,對字符串進行遍歷,若s串的當前字符等于t串的第一個字符,兩字符串的指針自動加1,繼續(xù)比較下一個字符;若比較至字符串t的末尾,則跳出循環(huán);若s串的字符與t串的字符不對應相同,則繼續(xù)對s串的下一個字符進行處理。三、程序設計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun,其功能是:將放在字符串數(shù)組中的M個字符串(每串的長度不超過N),按順序合并組成一個新的字符串。例如,若字符串數(shù)組中的M個字符串為{“AAAA”,“BBBBBBB”,“CC”},則合并后的字符串內容應該是“AAAABBBBBBBCC”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#defineM3#defineN20voidfun(charaIM][N],char*b){}voidmain(){charw[M][N]={"AAAA","BBBBBBB","CC"};chara[100]={"##################");inti;printf("Thestring:\n");for(i=0;i<M;i++)puts(w[i]);printf("\n");fun(w,a);printf("TheAstring:\n");printf("%s",a);printf("\n\n");}標準答案:voidfun(chara[M][N],char*b){inti,j,k=0;for(i=0;i知識點解析:本題考查:字符串連接操作。本程序中第1個for循環(huán)的作用是對二維數(shù)組行的控制,第2個循環(huán)的作用是從同一行中取出字符并存放到一維數(shù)組b中,語句是b[k++]=a[i][j];。國家二級(C語言)機試模擬試卷第2套一、選擇題(本題共38題,每題1.0分,共38分。)1、若有定義:inta=0,b=0,c=0,d=0;,有C語言表達式(a++&&b++)?c++:d++,以下關于其執(zhí)行順序的敘述中正確是()。A、先執(zhí)行a++,表達式a++的值為0,由此即可確定(a++&&b++)值為0,因此執(zhí)行d++B、先執(zhí)行a++,表達式a++的值為0;再執(zhí)行b++,表達式b++的值為0,由此可確定(a++&&b++)值為0,因此執(zhí)行d++C、先執(zhí)行a++,表達式a++的值為1;再執(zhí)行b++,表達式b++的值為1,由此可確定(a++&&b++)值為1,因此執(zhí)行c++D、先執(zhí)行b++,表達式b++的值為1;再執(zhí)行a++,表達式a++的值為1,由此可確定(a++&&b++)值為1,因此執(zhí)行c++標準答案:A知識點解析:把握前置運算和后置運算的基本運算規(guī)則。2、下面是有關C語言字符數(shù)組的描述,其中錯誤的是()。A、不可以用賦值語句給字符數(shù)組名賦字符串B、可以用輸入語句把字符串整體輸入給字符數(shù)組C、字符數(shù)組中的內容不一定是字符串D、字符數(shù)組只能存放字符串標準答案:D知識點解析:字符數(shù)組可以用來存放單個的字符或者字符串。3、有以下程序:#include<stdio.h>voidfun(intp){intd=2:p=d++;printf("%d",p);}main(){inta=1:fun(a);printf("%d\n",a);}程序運行后的輸出結果是()。A、32B、12C、21D、22標準答案:C知識點解析:C語言中函數(shù)參數(shù)傳遞滿足“單向傳遞”,實現(xiàn)傳遞值的功能,實參能傳給形參,形參卻不能傳回給實參。fun函數(shù)體內輸出p的值為2,并不影響到fun函數(shù)外a的值,a的值在main函數(shù)內依然為1。4、下面程序的運行結果是()。#include<stdio.h>voiddel(char*s){inti,j;char*a;a=s;for(i=0,j=0;a[i]!=’\0’;i++){if(a[i]>=’0’&&a[i]<=’9’){s[j]=a[i];j++;}s[j]=’\0’;}}main(){chars[]="aa89gggh";del(s);printf("\n%s",s);}A、aaB、89C、ggghD、aa89gggh標準答案:B知識點解析:本題中del(char*s)函數(shù)實現(xiàn)的功能是:逐個讀入s數(shù)組中的字符,如果遇到數(shù)字,則將其重新存在s中,遇到非數(shù)字字符則跳過。所以最后輸出的應該是字符串s中的所有數(shù)字。5、下述程序的輸出結果是()。#include<stdio.h>voidmain(){inta[20],*p[4];inti,k=0;for(i=0;i<20;i++)a[i]=i;for(i=0;i<4;i++)p[i]=&a[i*i+1];for(i=0;i<4;i++){k=k+*p[i];}printf("%d",k);}A、10B、18C、6D、數(shù)組元素引用不合法,輸出結果不定標準答案:B知識點解析:第一個for循環(huán),給數(shù)組a的20個元素分別賦值0~19;第二個for循環(huán),給數(shù)組p賦值,p[0]=a[1]=1,p[1]=a[2]=2,p[2]=a[5]=5,p[3]=a[10]=10;第三個for循環(huán),將數(shù)組p中元素的值進行累加,k=1+2+5+10=18。6、以下程序中c的二進制值是()。chara=2,b=4,c;c=a^b>>2A、00000011B、00010100C、00011100D、00011000標準答案:A知識點解析:本題主要考查按位異或和右移運算。b=4的二進制為00000100,b>>2后為00000001,a=2的二進制為00000010,兩者異或為00000011。7、設有定義:intx=2;,以下表達式中,值不為6的是()。A、2*x,x+=2B、x++,2,xC、x*=(1+x)D、x*=x+1標準答案:A知識點解析:A選項中逗號表達式先計算第一表達式2*x,然后計算表達式x+=2的值,即x=x+2即4,整個逗號表達式為第二個表達式的值4,所以選擇A。B選項中首先計算逗號表達式中第一表達式x++,此時x為3,在執(zhí)行第二個表達式2*x=2*3=6,所以逗號表達式為第二個表達式的值6。C選項的賦值表達式可以表示為x=x}(1+x)=2*(1+2)=6。D選項中的表達式可以表示為x=x*(x+1)=2*3=6。8、在源程序的開始處加上“#include<stdio.h>”進行文件引用的原因,以下敘述正確的是()。A、stdio.文件中包含標準輸入輸出函數(shù)的函數(shù)說明,通過引用此文件以便能正確使用printf、scanf等函數(shù)B、將stdio.h中標準輸入輸出函數(shù)鏈接到編譯生成的可執(zhí)行文件中,以便能正確運行C、將stdio.h中標準輸入輸出函數(shù)的源程序插入到引用處,以便進行編譯鏈接D、將stdio.h中標準輸入輸出函數(shù)的二進制代碼插入到引用處,以便進行編譯鏈接標準答案:A知識點解析:“stdio.h”文件中包含標準輸入輸出函數(shù)的函數(shù)說明,預處理指令#include<stdio.h>是指程序可以在該文件中找到printf、scanf等函數(shù)。9、下面程序的輸出結果是()。typedefunion{longx[1];inty[4];charz[10];}M;Mt:main(){printf("%d\n",sizeof(t));}A、32B、26C、10D、4標準答案:C知識點解析:“聯(lián)合體”所占用的內存空間為最長的成員所占用的空間。題中聯(lián)合體的z[10]成員是聯(lián)合體中占空間最長的成員。10、軟件按功能可以分為:應用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是()。A、編譯程序B、操作系統(tǒng)C、教務管理系統(tǒng)D、匯編程序標準答案:C知識點解析:編譯軟件、操作系統(tǒng)、匯編程序都屬于系統(tǒng)軟件,只有C教務管理系統(tǒng)才是應用軟件11、在軟件生產(chǎn)過程中,需求信息的來源是()。A、程序員B、項目經(jīng)理C、設計人員D、軟件用戶標準答案:D知識點解析:軟件需求是指用戶對目標軟件系統(tǒng)在功能、性能、設計約束等方面的要求,是由用戶提出的。12、對關系S和R進行集合運算,結果中既包含S中的所有元組也包含R中的所有元組,這樣的集合運算稱為()。A、并運算B、交運算C、差運算D、積運算標準答案:A知識點解析:關系的并運算是指由結構相同的兩個關系合并,形成一個新的關系,新關系中包含兩個關系中的所有元組。13、開發(fā)軟件所需高成本和產(chǎn)品的低質量之間有著尖銳的矛盾,這種現(xiàn)象稱做()。A、軟件矛盾B、軟件危機C、軟件藕合D、軟件產(chǎn)生標準答案:B知識點解析:隨著計算機軟件規(guī)模的擴大,軟件本身的復雜性不斷增加,研制周顯著變長,正確性難以保證,軟件開發(fā)費用上漲,生產(chǎn)效率急劇下降,從而出現(xiàn)了人們難以控制軟件發(fā)展的局面,即所謂的“軟件危機”。14、下列4個程序中,完全正確的是()。A、#include<stdio.h>main();{/*programming*/printf(”programming!\n’’);}B、#include<stdio.h>main(){/*/programming/*/printf(’’programming!\h’’);}C、#include<stdio.h>main(){/*/programming*/*/printf(’’programming!\n’’);}D、include<stdio.h>main(){/*programming*/printf(’’programming!\n’’);}標準答案:B知識點解析:選項A中,main()函數(shù)后面的分號是錯誤的,C語言在函數(shù)名后面不能有分號;在C語言中注釋內容必須放在“/*”和“*/”之間,“/#”和“*/”必須成對出現(xiàn),按語法規(guī)定在注釋之間不可再嵌套“/*”和“*/”,選項C的程序段中注釋語句之間有嵌套;C語言用#include命令行來實現(xiàn)文件包含的功能。#include命令行的形式為:#include“文件名”,選項D中的include前面少了一個#符號。15、軟件詳細設計產(chǎn)生的圖如下:該圖是()。A、N-S圖B、PAD圖C、程序流程圖D、E-R圖標準答案:C知識點解析:程序流程圖基本圖符有3種:控制流(用箭頭表示)、加工步驟(用方框表示)、邏輯條件(用菱形表示)。控制結構有5種:①順序結構;②選擇結構;③多分支選擇結構;④后判斷重復型結構;⑤先判斷重復型結構。因此該圖是選擇結構的程序流程圖。16、有以下程序#include<stdio.h>main(){FILE*pf;char*s1="China",*s2="Beijing";pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指針回到文件開頭*/fwrite(s1,5,1,pf);fclose(pf);}以上程序執(zhí)行后abc.dat文件的內容是A、ChinaB、ChinangC、ChinaBeijingD、BeijingChina標準答案:B知識點解析:本題考查文件操作函數(shù),fwrite和rewind函數(shù),題目中先是將s2字符串寫入adc.dat中,然后將寫指針回到文件開頭,然后寫入s1字符串,那么s1字符串就將前五個字符覆蓋,所以最終結果為Chinang,選項B正確。17、開發(fā)大型軟件時,產(chǎn)生困難的根本原因是()。A、大型系統(tǒng)的復雜性B、人員知識不足C、客觀世界千變萬化D、時間緊、任務重標準答案:A知識點解析:隨著計算機軟件規(guī)模的擴大,軟件本身的復雜性不斷增加,研制周期顯著變長,正確性難以保證,軟件開發(fā)費用上漲,生產(chǎn)效率急劇下降,從而出現(xiàn)了人們難以控制軟件發(fā)展的局面,即所謂的“軟件危機”。18、若有定義:inta=7;floatx=2.5,y=4.7;則表達式“x+a%3*(int)(x+y)%2/4”的值是()。A、2.500000B、2.750000C、3.500000D、0.000000標準答案:A知識點解析:此題考查的是變量的類型轉換。表達式中“(int)(x+y)把x+y=(7.2)”的值強制轉化成整型即得到7,那么“a%3*(int)(x+y)%2”的值為整型常量1,所以“a%3*(int)(x+y)%2/4”的值為0;因為變量x是浮點型變量,所以表達式“x+a%3*(int)(x+y)%2/4”的結果也是浮點型,得到2.500000。19、有以下程序:#includemain(){inta=1,b=0;printf("%d,",b=a+b);printf("%d\n",a=2*b;}A、1,2B、1,0C、3,2D、0,0標準答案:A知識點解析:首先打印b=a+b=1+0=1的值1,此時已給b賦值為l。然后打印a=2*b=2*1=2的值2。所以結果是1,2。20、若有以下定義:intx[10],*pt=x;則對x數(shù)組元素的正確引用是()。A、*&x[10]B、*(x+3)C、*(pt+10)D、pt+3標準答案:B知識點解析:數(shù)組的下標是從0開始的,故x[10]實際上具體為x[0],x[1],…,x[9],而若使用x[10]就會溢出,編譯出錯,所以AC兩項錯誤;D項,pt+3指向地址,并未引用到元素;B項的表達正確,引用x[3]。21、程序調試的任務是()。A、設計測試用例B、驗證程序的正確性C、發(fā)現(xiàn)程序中的錯誤D、診斷和改正程序中的錯誤標準答案:D知識點解析:程序調試的任務是診斷和改正程序中的錯誤。22、有以下程序段:charname[20];intnum;scanf(’’name=%snum=%d’’,name,&num);當執(zhí)行上述程序段,并從鍵盤輸入:name=Lilinum=1001<回車>后,name的值為()。A、IJKB、ABCDE\OFG\OIJKC、ABCDIJKD、EFGIJK標準答案:C知識點解析:字符數(shù)組a中包含兩個’\0’,遇到第一個’\0’時就表示字符串a(chǎn)結束。字符串處理函數(shù)strcat(字符數(shù)組a,字符數(shù)組h),功能是連接兩個字符數(shù)組中的字符串,把字符串b連接到a的后面,結果放在字符數(shù)組a中。連接時將字符串a(chǎn)后的’0’取消,只在新串最后保留一個’\0’。本題相當于將“ABCD”和“IJK”連接。因此C選項正確。23、有以下程序#include<stdio.h>#include<stdlib.h>voidfun(int*p1,int*p2,int*s){s=(int*)malloc(sizeof(int));*s=*p1+*(p2++);}main(){inta[2]={1,2},b[2]={10,20},*s=a;fun(a,b,s);printf("%d\n",*s);}程序運行后的輸出結果是A、11B、10C、1D、2標準答案:C知識點解析:本題考查把數(shù)組名作為函數(shù)參數(shù),執(zhí)行fun函數(shù)后,s的值并沒有發(fā)生變化,仍然是指向a,所以輸出結果為1,選項C正確。24、下列關于C語言數(shù)據(jù)文件的敘述中正確的是()。A、文件由ASCⅡ碼字符序列組成,C語言只能讀寫文本文件B、文件由二進制數(shù)據(jù)序列組成,C語言只能讀寫二進制文件C、文件由記錄序列組成,可按數(shù)據(jù)的存放形式分為二進制文件和文本文件D、文件由數(shù)據(jù)流形式組成,可按數(shù)據(jù)的存放形式分為二進制文件和文本文件標準答案:B知識點解析:本程序首先定義了靜態(tài)字符數(shù)組a,然后將指針p指向數(shù)組a的首地址,第一次for循環(huán),p=a,p指向數(shù)組的第一個元素,*p是取指針p所指地址的內容,輸出p;第二次for循環(huán),p=p+2,則p指向數(shù)組的第三個元素,*p是取指針p所指地址的內容,輸出o;第三次for循環(huán),p=p+2,則p指向數(shù)組的第5個元素,*p是取指針p所指地址的內容,輸出r;第四次for循環(huán),p=p+2,則p指向數(shù)組的第7個元素,*p是取指針p所指地址的內容,輸出m;結束循環(huán)。25、在數(shù)據(jù)管理技術發(fā)展的三個階段中,數(shù)據(jù)共享最好的一個階段是()。A、人工管理階段B、文件系統(tǒng)階段C、數(shù)據(jù)庫系統(tǒng)階段D、三個階段相同標準答案:C知識點解析:數(shù)據(jù)管理技術的三個發(fā)展階段為人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫管理階段。只有在數(shù)據(jù)庫管理階段實現(xiàn)數(shù)據(jù)的自由分享更加容易和方便。26、有以下程序#include<stdio.h>main(){inta=-2,b=0;while(a++&&++b);printf("%d,%d\n",a,b);}程序運行后輸出結果是A、0,2B、0,3C、1,3D、1,2標準答案:D知識點解析:本題重點考察while語句,變量a和b分別賦初值為-2和1,while語句的語義是:計算表達式的值,當值為真(非0)時,執(zhí)行循環(huán)體語句。a++即a參與運算后,a的值再自增1。++b即b自增1后再參與其它運算。當表達式的值為0時,退出循環(huán),最后輸出a和b的值為1和2。因此D選項正確。27、下列不合法的用戶標識符是()。A、j2_KEYB、DoubleC、4dD、_8_標準答案:C知識點解析:在C語言程序中,合法標識符的命名規(guī)則是:標識符可以由字母、數(shù)字和下劃線組成,并且第一個字符必須是字母或下劃線。28、若要求從鍵盤讀入含有空格字符的字符串,應使用函數(shù)()。A、getc()B、gets()C、getchar()D、scanf()標準答案:B知識點解析:scanf()語句中用“空格”間隔不同的字符串,空格將被全部忽略掉,所以用scanf()函數(shù)不能輸入空格;getchar()函數(shù)用于輸入字符,其調用形式為:ch=getchar(),getehar()函數(shù)從終端讀入一個字符作為函數(shù)值,把讀入的字符賦給變量ch。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶敲入。Enter鍵時,讀入才開始執(zhí)行。gets()函數(shù)的調用形式為:gets(str_adr,),其中str_adr是存放輸入字符串的起始地址,可以是字符數(shù)組名、字符數(shù)組元素的地址或字符指針變量。gets函數(shù)用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止。getc()函數(shù)的調用形式為:ch=gete(pf)其中pf是文件指針。函數(shù)的功能是從pf指定的文件中讀入一個字符,并把它作為函數(shù)值返回。29、以下選項中,合法的實數(shù)是A、4.5E2B、E1.3C、7.11ED、1.2E1.2標準答案:A知識點解析:實型常量用帶小數(shù)點的數(shù)字表示,其值有兩種表達形式,分別為十進制小數(shù)形式和指數(shù)形式。十進制小數(shù)形式由數(shù)字和小數(shù)組成,必須有小數(shù)點,且小數(shù)點的位置不受限制。指數(shù)形式由十進制數(shù)加階碼標志"e"或"E"以及階碼(只能為整數(shù),可以帶符號)組成。4.5E2為指數(shù)形式實數(shù),A選項正確。E1.3階碼標志前缺少十進制數(shù),并且階數(shù)不是整數(shù),B選項錯誤。7.11E缺少階數(shù),C選項錯誤。1.2E1.2階數(shù)不是整數(shù),D選項錯誤。30、設有n個數(shù)按從大到小的順序存放在數(shù)組x中,以下能使這n個數(shù)在x數(shù)組中的順序變?yōu)閺男〉酱蟮氖茿、for(i=0;i<n/2;i++){t=x[i];x[i]=x[n-i-1];x[n-i-1]=t;}B、for(i=0;i<n;i++){t=x[i];x[i]=x[n-i-1];x[n-i-1]=t;}C、for(i=0;i<n/2;i++){t=x[i];x[i]=x[n-i+1];x[n-i+1]=t;}D、for(i=0;i<n/2;i+=2){t=x[i];x[i]=x[n-i-1];x[n-i-1]=t;}標準答案:A知識點解析:本題使用for循環(huán)實現(xiàn)數(shù)組元素首尾倒置。A選項中控制變量上限為n/2,用變量t實現(xiàn)數(shù)下標值i與n-i-1的元素交換,使數(shù)組元素首尾倒置,從而實現(xiàn)從小到大排列,A選項正確。B選項控制變量上限為n,用變量t實現(xiàn)數(shù)下標值i與n-i-1的元素交換,當i=n/2時,已經(jīng)實現(xiàn)數(shù)組首尾倒置,而繼續(xù)運行至i=n,將再次將新的數(shù)組首尾倒置,與原數(shù)組相比沒有發(fā)生變化,依然是從大到小排列,B選項錯誤。C選項數(shù)組越界,i=0時x[n+1]不存在,C選項錯誤。D選項控制變量每次加2,實現(xiàn)數(shù)組偶數(shù)下標值的元素首尾倒置,奇數(shù)下標值元素不變,不能實現(xiàn)整個數(shù)組從小到大排列,D選項錯誤。31、有以下程序#include<stdio.h>main(){chars[10]="verygood",*ps=s;ps="too";s[4]=’\0’;puts(ps);}程序的運行結果是A、tooB、verygoodC、veryD、good標準答案:A知識點解析:程序中定義指針ps后,將數(shù)組s首地址賦給ps初始化后,再使指針ps指向字符串"too"的首地址,修改s[4](即字符g)不會改變ps的值,所以輸出ps的結果是"too",答案為選項A。32、有以下程序#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},k;fp=fopen("data.dat","w+");fprintf(fp,"%d\n",a[0]);for(i=1;i<6;i++){rewind(fp);fprintf(fp,"%d\n",a[i]);}rewind(fp);fscanf(fp,"%d",&k);fclose(fp);printf("%d\n",k);}程序運行后的輸出結果是A、6B、21C、123456D、654321標準答案:A知識點解析:本題首先定義文件指針變量fp和一個數(shù)組a[],再打開一個文件"data.dat",隨后先給文件寫入數(shù)據(jù)a[0],由于rewind函數(shù)是將文件指針從當前位置重新指向文件開始位置,所以for循環(huán)依次將數(shù)組a中的數(shù)據(jù)寫入文件開始位置,退出循環(huán)后,文件中的數(shù)據(jù)順序為:654321,重新使指針指向文件開始位置,將此時fp指向的數(shù)據(jù)(即文件中第一個數(shù)據(jù)6)寫入變量k中,關閉文件,輸出k值,答案為A選項。33、一棵完全二叉樹共有360個結點,則在該二叉樹中度為1的結點個數(shù)為A、0B、1C、180D、181標準答案:B知識點解析:在二叉樹中,一個結點所擁有的后件個數(shù)稱為該結點的度。完全二叉樹指除最后一層外,每一層上的結點數(shù)均達到最大值,在最后一層上只缺少右邊的若干結點。由定義可以知道,完全二叉樹中度為1的結點個數(shù)為1或者0。若結點總數(shù)為偶數(shù),則有1個度為1的結點;若結點總數(shù)為奇數(shù),沒有度為1的結點。由于題目中的完全二叉樹共有360個結點,則度為1的結點個數(shù)為1。故選擇B選項34、有以下程序#include<stdio.h>main(){inta[3][3]={{1,3,5,},{7,9,11,},{13,15,17}};int(*p)[3]=a,i,j,n=0;for(i=0;i<3;i++)for(j=0;j<2;j++)n+=*(*(p+i)+j);printf("%d\n",n);}程序運行后的輸出結果是A、54B、60C、36D、48標準答案:D知識點解析:for循環(huán)的作用是求數(shù)組各行前二列的數(shù)字之和。*(*(p+i)+j)?p[i][j]1+3+7+9+13+15=48,因此答案為D選項.35、設循環(huán)隊列存儲空間為Q(1:50),初始狀態(tài)為front=rear=50。經(jīng)過一系列入隊和退隊操作后,front=rear=25,則該循環(huán)隊列中元素個數(shù)為A、26B、25C、24D、0或50標準答案:D知識點解析:循環(huán)隊列是隊列的一種順序存儲結構,用隊尾指針rear指向隊列中的隊尾元素,用排頭指針front指向排頭元素的前一個位置。循環(huán)隊列長度為50,由初始狀態(tài)為front=rear=50可知此時循環(huán)隊列為空。入隊運算時,首先隊尾指針rear進1(即rear+1),然后在隊尾指針rear指向的位置插入新元素。特別的,當隊尾指針rear=50+1時,置rear=1。退隊運算時,排頭指針front進1(即front+1),然后刪除front指針指向的位置上的元素,當排頭指針front=50+1時,置front=1。若經(jīng)過運算,front=rear可知隊列空或者隊列滿,則隊列中有0或者50個元素。故選D選項36、有以下程序段charch;intk;ch=’a’;k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII十進制代碼為97,則執(zhí)行上述程序段后輸出結果是()。A、因變量類型與格式描述符的類型不匹配輸出無定值B、輸出項與格式描述符個數(shù)不符,輸出為零值或不定值C、a,97,12k=12D、a,97,k=12標準答案:D知識點解析:在用基本輸出函數(shù)printf時,格式說明與輸出項的個數(shù)應該相同。如果格式說明的個數(shù)少于輸出項的個數(shù),多余的輸出項不予輸出;如果格式說明個數(shù)多于輸出項個數(shù),則對于多余的格式項輸出不定值或0。37、有以下程序#include<stdio.h>intfun(inta,intb){if(b=0)returna;elsereturn(fun(--a,--b));}main(){printf("%d\n",fun(4,2));}程序的運行結果是()。A、1B、2C、3D、4標準答案:B知識點解析:由程序可知,函數(shù)fun(inta,intb)是一個遞歸函數(shù)。所以當主函數(shù)中調用“fun(4,2)”時,其執(zhí)行過程如下“fun(4,2)->fun(3,1)->fun(2,0)”,其返回值為2。所以正確答案為選項B)。38、在結構化方法中,軟件功能屬于軟件開發(fā)中的()階段。A、詳細設計B、需求分析C、總體設計D、編程調試標準答案:C知識點解析:總體設計過程通常由兩個主要階段組成:系統(tǒng)設計,確定系統(tǒng)的具體實現(xiàn)方案;結構設計,確定軟件結構。為確定軟件結構,首先需要從實現(xiàn)角度把復雜的功能進一步分解。分析員結合算法描述仔細分析數(shù)據(jù)流圖中的每個處理,如果一個處理的功能過分復雜,必須把它的功能適當?shù)胤纸獬梢幌盗斜容^簡單的功能。二、程序填空題(本題共1題,每題1.0分,共1分。)39、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:統(tǒng)計形參S所指的字符串中數(shù)字字符出現(xiàn)的次數(shù),并存放在形參t所指的變量中,最后在主函數(shù)中輸出。例如,若形參s所指的字符串為“abcdef35adgh3kjsdf7”,則輸出結果為4。請在程序的下畫線處填入正確內容并將下畫線刪除,使程序得出正確的結果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>voidfun(char*s,int*t){inti,n;n=0;/*********found*********/for(i=0;【1】!=0;i++)/*********found*********/if(s[i]>=’0’&&s[i]<=【2】)n++;/*********found*********/【3】;}main(){chars[80]="abcdef35adgh3kjsdf7";intt;printf("\nTheoriginalstringis:%s\n",s);fun(s,&t);printf("\nTheresultis:%d\n",t);}標準答案:(1)s[i](2)’9’(3)*t=n知識點解析:填空1:通過for循環(huán)語句來判斷是否到字符型結尾,變量i用來存放字符型數(shù)組下標,則應填入s[i]。填空2:題目要求判斷數(shù)字字符,所以此處應填入‘9’。填空3:將數(shù)字字符個數(shù)存入變量t中,此處需注意變量t是指針變量。三、程序修改題(本題共1題,每題1.0分,共1分。)40、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:用遞歸算法計算斐波拉契數(shù)列中第n項的值。從第1項起,斐波拉契數(shù)列為:1,1,2,3,5,8,13,21.…例如,若給n輸入7,則該項的斐波拉契數(shù)值為13。請改正程序中的錯誤,使它能得出正確結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>longfun(intg){/*********found*********/switch(g);{case0:return0;/*********found*********/case1;case2:return1;}return(fun(g-1)+fun(g-2));}voidmain(){longfib;intn;printf("Inputn:");scanf("%d",&n);printf("n=%d\n”,n);fib=fun(n);printf("fib=%d\n\n",fib);}標準答案:(1)去掉分號(2)case1:case2:return1;知識點解析:C語言中,switch語句之后不能有分號,并且case語句常量后應用的是冒號。四、程序設計題(本題共1題,每題1.0分,共1分。)41、函數(shù)fun的功能是:將s所指字符串中除下標為偶數(shù)同時ASCII碼值也為偶數(shù)的字符外,其余的全部刪除;字符串中剩余字符所形成的新串放在t所指的數(shù)組中。例如,若S所指字符串中的內容為“ABCDEFG123456”,其中字符A的ASCII碼值為奇數(shù),因此應當刪除;字符B的ASCII碼值為偶數(shù),但在數(shù)組中的下標為奇數(shù),因此也應當刪除;字符2的ASCII碼值為偶數(shù),在數(shù)組中的下標也為偶數(shù),因此不應當刪除,其他依此類推。最后t所指的數(shù)組中的內容應足“246”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}voidmain(){charS[100],t[100];system(“CLS”);printf(“\nPleaseenterstringS:”);scanf(“%S”,S);fun(s,t);printf(“\nTheresultis:%s\n”,t);}標準答案:voidfun(char*s,chart[]){inti,j=0;for(i=0;s[i]!=‘\0’;i++)if(i%2==0&&s[i]%2==0)/*將s所指字符串中下標和ASCII碼值都為偶數(shù)的字符放入數(shù)組t中*/t[j++]=s[i],t[j]=‘\0’;/*在字符串最后加上結束標識*/}知識點解析:本題要求刪除除了下標為偶數(shù)同時ASCII碼值也為偶數(shù)的字符,即保留下標為偶數(shù)同時ASCII碼值也為偶數(shù)的字符。循環(huán)語句用于遍歷字符串,條件語句用于判斷當前字符是否符合要求。注意判斷條件是下標為偶數(shù),同時ASCII碼值也為偶數(shù),所以應使用邏輯與“&&”運算符。國家二級(C語言)機試模擬試卷第3套一、選擇題(本題共38題,每題1.0分,共38分。)1、下列哪一條不屬于數(shù)據(jù)庫設計的任務?()A、設計數(shù)據(jù)庫應用結構B、設計數(shù)據(jù)庫概論結構C、設計數(shù)據(jù)庫邏輯結構D、設計數(shù)據(jù)庫物理結構標準答案:A知識點解析:數(shù)據(jù)庫設計工作量大而且過程復雜,既是一項數(shù)據(jù)庫工程也是一項龐大的軟件工程。考慮數(shù)據(jù)庫及其應用系統(tǒng)開發(fā)全過程.將數(shù)據(jù)庫設計分為以下6個階段:需求分析、概念結構設計、邏輯結構設計、物理結構設計、數(shù)據(jù)庫實施和數(shù)據(jù)庫的運行和維護。2、有以下程序:#inlude<stdio.h>main(){ints,t,A=10;doubleB=6:s=sizeof(A);t=sizeof(B);printf("%d,%d\n",s,t);}在VC6.0平臺上編譯運行,程序運行后的輸出結果是()。A、10,6B、4,4C、2,4D、4,8標準答案:D知識點解析:C語言中利用sizeof()函數(shù)判斷數(shù)據(jù)類型長度,在VC6.0平臺中,整型int占有4個字節(jié),double型數(shù)據(jù)占有8個字節(jié)。3、設有定義:chars[81];inti=0;以下不能將一行(不超過80個字符)帶有空格的字符串正確讀入的語句或語句組是()。A、gets(s);B、while((s[i++]=getchar())!=’\n’);s[i]=’\0’;C、scanf("%s",s);D、do{scanf("%c",&s[i]);}while(s[i++]!=’\n’);s[i]=’\0’;標準答案:C知識點解析:字符串的輸入不能使用scanf("%s",s);而應該使用gets(s)。4、字符串"\\\"ABCDEF\"\"的長度是()。A、11B、10C、5D、3標準答案:B知識點解析:本題涉及字符串的兩個最基本的概念。①字符串的長度是指字符串中字符的個數(shù),但不包含字符串結束符;②以反斜線“\”開頭的特殊字符序列,意思是把反斜線后面的字符序列轉換成特定的含義,而不是原來的含義,不包含在字符串長度之內,“\”連同后面的字符為一個長度。5、有以下程序:#include<stdio.h>main(){inti;FILE*fp;for(i=0;i<3;i++){fp=fopen("res.txt","w");fputc(’K’+i,fp);fclose(fp);}}程序運行后,在當前目錄下會生成一個res.txt文件,其內容是()。A、MB、EOFC、KLMD、L標準答案:A知識點解析:通過三次循環(huán),最后i的值定格在2,最后儲存值’K’+2=’M’,所以最后保存的數(shù)值為M。注意:fclose函數(shù),每次都關閉文件,并且重新回到文件首地址。6、以下敘述錯誤的是()。A、C語言區(qū)分大小寫B(tài)、C程序中的一個變量,代表內存中一個相應的存儲單元,變量的值可以根據(jù)需要隨時修改C、整數(shù)和實數(shù)都能用C語言準確無誤地表示出來D、在C程序中,正整數(shù)可以用十進制、八進制和十六進制的形式來表示標準答案:C知識點解析:本題涉及C語言最基本的3個概念:①C語言是區(qū)分大小寫的,q和Q是兩個不同的變量;②變量的實質就是在內存中占據(jù)一定的存儲單元,存儲單元里存放的是該變量的值,變量的值可以根據(jù)需要進行修改;③整數(shù)在允許的范圍內可以準確的表示出來,但不可能表示無限度的實數(shù)。正整數(shù)可用二進制、十進制、八進制和十六進制表示。7、有以下程序:#include<stdio.h>main(){intn,*p=NULL;*p=&n;printf("Inputn:");seanf("%d",&p);prinff("outputn:");printf("%d\n",p);}該程序試圖通過指針p為變量n讀入數(shù)據(jù)并輸出,但程序有多處錯誤,以下語句正確的是()。A、intn,*P=NULL;B、*p=&n;C、scanf("%d",&p)D、printf("%d\n",p);標準答案:A知識點解析:選項B的正確寫法應為p=&n;選項C的正確寫法應為scanf("%d",p);選項D的正確寫法應為printf("%d\n",*p)。8、數(shù)據(jù)庫應用系統(tǒng)中的核心問題是()。A、數(shù)據(jù)庫設計B、數(shù)據(jù)庫系統(tǒng)設計C、數(shù)據(jù)庫維護D、數(shù)據(jù)庫管理員培訓標準答案:A知識點解析:數(shù)據(jù)庫應用系統(tǒng)中的核心問題是數(shù)據(jù)庫的設計。9、檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。A、確認測試B、需求測試C、驗證測試D、路徑測試標準答案:A知識點解析:確認測試的任務是驗證軟件的功能和性能,以及其他特性是否滿足需求規(guī)格說明中確定的各種需求。10、有以下程序#includevoidmain(){chars[][={"01aXy");inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]<=’a’&&s[i]>=’z’)n++;printf("%d、n",n);}程序運行后的輸出結果是()。A、0B、2C、3D、5標準答案:A知識點解析:這段程序的功能求出字符串s中字符的ASCII碼小于小寫字符a并且大于小寫字符z的字符的個數(shù)。因為小寫字符z的ASCII碼大于小寫字符a的ASCII碼,所以滿足a的ASCII碼并且大于z的的ASCII碼的字符是不存在的,所以輸出0。11、以下程序運行后的輸出結果是()。#includemain()voidreverse(inta[],intn){intb[10]={10,9,8,7,6,5,4,3,2,1};inti,s=0;{inti,t;reverse(b,10);for(i=0;iA、27B、6c)25C、30標準答案:B知識點解析:本題考查函數(shù)調用時的參數(shù)傳遞。函數(shù)reverse將數(shù)組b進行了逆置,此時b[10]={10,9,8,7,6,5,4,3,2,1},后面for語句的功能是將b中的后3個數(shù)累加,并將結果放在s中,最后將s輸出,結果s=1+2+3=6。12、下列不屬于軟件工程3個要素的是()。A、工具B、過程C、方法D、環(huán)境標準答案:D知識點解析:軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術手段;工具支持軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制、管理。13、下面的程序在編譯時產(chǎn)生錯誤,其出錯原因是()。#inc1udemain(){int1_case;floatprintF;printf("請輸入2個數(shù):");scanf("%d%f",&1_case,&printF);printf("%d%f\n",1_case,printF);}A、定義語句出錯,1case不能作為變量名B、定義語句出錯,printF不能用作用戶自定義標識符C、定義語句無錯,scanf不能作為輸入函數(shù)使用D、定義語句無錯,printf不能輸出1case的值標準答案:A知識點解析:C語言變量名可由數(shù)字,字母,下劃線構成,但首字符不能為數(shù)字。14、對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序標準答案:D知識點解析:在最壞的情況下,堆排序需要比較的次數(shù)為O(nlog2n),所以選擇D)。15、若a、b、c、d都是int型變量且都已經(jīng)正確賦初值,則以下不正確的賦值語句是()。A、a+d;B、a++;C、a=b=c=d=100;D、a=(b=3)+(d=5);標準答案:A知識點解析:C語言規(guī)定,賦值號的右邊可以是一個賦值表達式,因此選項C)、選項D)正確;在選項B)中,a++是一個自加1的表達式,a被重新賦值,因此它是一個合法的賦值表達式;選項A)中,a+d是一個算術表達式,雖然最后有一個分號,但這個表達式中沒有賦值操作,因此它不是一條賦值語句。16、設有以下說明,則不正確的敘述是()。unionun{inta;charb:floatc;}art;A、arr所占的內存長度等于成員c的長度B、arr的地址和它的各成員的地址都是同一地址C、arr可以作為函數(shù)參數(shù)D、不能在定義arr時對它初始化標準答案:C知識點解析:本題主要考查聯(lián)合體的內存使用:聯(lián)合體所占用的內存空間為最長的成員所占用的空間,int占2個字節(jié),char占1個字節(jié),float占4個字節(jié),所以arr所占的內存長度等于成員c的長度;arr的地址和它的各成員的地址都是同一地址;不能直接對arr賦值,即不能在定義arr時對它初始化;arr也不可以作為函數(shù)參數(shù)。17、有以下程序:#include<stdio.h>main(){inta=1,b=2,c=3,x;x=(a^b)&c;printf("%d\n",x);}程序運行后的輸出結果是()。A、3B、1C、2D、0標準答案:A知識點解析:本題考查位運算符以及相關運算,^為按位或,&為按位與,那么a^b為3,再與c按位與仍然為3,所以答案為A選項。18、軟件按功能可以分為:應用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件),下面屬于應用軟件的是()。A、編譯程序B、操作系統(tǒng)C、教務管理系統(tǒng)D、匯編程序標準答案:C知識點解析:系統(tǒng)軟件主要包括:①操作系統(tǒng)軟件;②各種語言的解釋程序和編譯程序;③各種服務性程序;④各種數(shù)據(jù)庫管理系統(tǒng)。操作系統(tǒng)、編譯程序與匯編程序屬于系統(tǒng)軟件,編譯程序與匯編程序屬于支撐軟件,教務管理系統(tǒng)屬于應用軟件。19、有以下程序:#includeintfun(inta,intb){if(b==0)returna;elsereturn(fun(--a,--b));}main(){printf("%d/n",fun(4,2));}程序運行的結果是()。A、1B、2C、3D、4標準答案:B知識點解析:fun函數(shù)是一個遞歸函數(shù),其功能是:當b的值為零時,返回此時a的值;否則,返回fun(--a,--b),即將a和b的值分別減1后返回fun(a,b)。當b不斷遞減時,a也不斷遞減,直到b為零。執(zhí)行過程為:執(zhí)行fun(4,2),b=2,返回fun(3,1),此時b=1,返回fun(2,0),b=0,返回a的值2。20、有以下程序:#include<stdio.h>voidfull(int*s,intn1,intn2){inti,j,t;i=n1;j=n2;while(i<J){t=s[i];s[i]=s[J];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4,9);fun(a,0,9);for(k=0;k<10;k++)printf("%d",a[k]);printf("\n");}程序運行后的輸出結果是()。A、4321098765B、5678901234C、0987654321D、0987651234標準答案:B知識點解析:該程序首先給一維數(shù)組賦值,然后三次調用fun函數(shù),其中fun(a,0,3);功能是將一維數(shù)組中笫1,個元素和第4個元素互換,第2個元素和第3個元素互換;其中fun(a,4,9);功能是將一維數(shù)組中第5個元素和第10個元素互換,第6個和第9個元素互換,第7個元素和第8個元素互換;其中fun(a,0,9);功能是將將一維數(shù)組中第1個元素和第10個元素互換,第2個元素和第9個元素互換……依此類推。因此B選項正確。21、若變量已正確定義,有以下程序段:i=0:doprintf("%d,",i);while(i++);printf("%d\n",i);其輸出結果是()。A、0,0B、0,1C、1,1D、程序進入無限循環(huán)標準答案:B知識點解析:do…while循環(huán)的執(zhí)行過程如下:①執(zhí)行do后面的循環(huán)體中的語句。②計算while后一對圓括號中表達式的值。當值為非O時,轉去執(zhí)行步驟①;當值為0時,執(zhí)行步驟③。③退出do…while循環(huán)。對于本題變量i的初始值等于“0”,接著執(zhí)行do后面的循環(huán)體中的語句,輸出變量i的值0。再判斷while后面括號中表達式i++的值,其值為0,所以循環(huán)結束。此時變量i的值經(jīng)過自加已經(jīng)變?yōu)?,所以再次輸出i的值“1”。22、有以下程序:#include#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf("%4.1f\n",S(a+b));}程序運行后的輸出結果是()。A、7.5B、31.5C、程序有錯無輸出結果D、14.0標準答案:C知識點解析:宏定義不是c語句,末尾不需要分號。所以語句“printf("%4.1f、n",S(a+b));”展開后為“printf("%4.1f\n",3.5;*a+b*a+b;);”所以程序會出現(xiàn)語法錯誤。23、有以下程序:#includestruetord{intx,y;}dt[2]={1,2,3,4};main(){struetord*P=dt;prinff(“%d,”,++(P一>x));prinff(“%d\n”,++(P一>y));}程序運行后的輸出結果是()。A、3,4B、4,1C、2,3D、1,2標準答案:C知識點解析:本題考查結構體數(shù)組的相關操作,dt為結構體數(shù)組,那么指針p指向了結構體數(shù)組的一個元素,所以p一>x為1,p一>y為2,結果為2,3。選項C正確。24、有以下程序:#inelude<stdio.h>intfun(inta[],intn,intx){int*p=a;while(p<a+n&&*p!=x)p++;if(p<a+n)returnp-a;elsereturn-1;}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};printf("%d\\n",fun(a,10,10));}程序運行后的輸出結果是()。A、9B、-1C、10D、0標準答案:A知識點解析:while(p<a+n&&*p!=x)p++;當p=a;n=10,x=10;時while循環(huán)條件成立,直到p=a+9,結束循環(huán),執(zhí)行下一條語句,if條件成立,返回p-a,此時執(zhí)行p-a=a+9-a=9;因此,輸出9。故答案為A選項。25、有以下程序:#includemain(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen("d1.dat","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fprintf(fp,"\n");fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);printf("%d\n",n);}程序的運行結果是()。A、321B、12300C、1D、123標準答案:D知識點解析:程序首先將數(shù)組a[10]中的元素l、2、3分別寫入了文件d1.dat文件中,然后又將d1.dat文件中的數(shù)據(jù)“123”整體寫入到了變量n的空間中,所以打印n時輸出的數(shù)據(jù)為123。26、有定義語句:inti;chars1[10],s2[10]=“Program”;則能正確給sl數(shù)組賦字符串的語句是()。A、for(i=0;i<=7;i++)s1[i]=s2[i];B、s1=s2;C、while(s2)s1++=s2++;D、for(i=0;s2[i];i++)s1[i]=s2[i];標準答案:A知識點解析:首先字符數(shù)組只有在初始化的時候整體賦值,否則只能對字符數(shù)組逐個賦值,所以選項B錯誤;字符數(shù)組名s1、s2是常量,不能改變,故選項C錯誤;字符串“Program”包含結尾的‘\0’,選項D中在處理到s2[i]=’\0’時,跳出循環(huán),未將’\0’賦給s1,所以選項D也是錯誤的;由于“Program”包含結尾的’\0’總共有8個字符,所以選項A是正確的,答案為A。27、以下敘述中正確的是A、數(shù)組下標的下限是1B、數(shù)組下標的下限由數(shù)組中第一個非零元素的位置決定C、數(shù)組下標的下限由數(shù)組中第一個被賦值元素的位置決定D、charc1,c2,*c3,c4[40];是合法的變量定義語句標準答案:D知識點解析:數(shù)組下標的下限是0。因此D選項正確。28、在以下選項中,按照C語言規(guī)定,不能出現(xiàn)在標識符中的是()。A、大寫字母B、下劃線C、數(shù)字字符D、連接符標準答案:D知識點解析:按照C語言規(guī)定,標識符由字母、數(shù)字和下劃線組成,且開頭必須是字母或下劃線,所以選項D不合法。29、有以下程序:intf1(doublea){returna*a;)intf2(intx,inty){doublea,b;a=f1(x);b=f1(y);returna+b;}main(){doublew;w=f2(2.1,4.0);}程序執(zhí)行后,變量W的值是()。A、20.21B、20C、20.0D、0.0標準答案:C知識點解析:本題考查函數(shù)調用的使用。計算w的時候,先調用f2函數(shù),f2函數(shù)的公式是“a+b”,計算a和b的時候又調用到f1函數(shù),f1的函數(shù)是“a*a”,因此,w的計算公式為:w=(double)[(int)(2.1*2.1)+(int)(4.0*4.0)]=20.0。30、有三個關系表R、S和T如下,其中三個關系對應的關鍵字分別為A,B和復合關鍵字(A,B)。表T的記錄項(b,q,4)違反了A、實體完整性約束B、參照完整性約束C、用戶定義的完整性約束D、關系完整性約束標準答案:B知識點解析:關系模型中可以有3類完整性約束:實體完整性約束、參照完整性約束和用戶定義的完整性約束。實體完整性約束是指,若屬性M是關系的主鍵,則屬性M中的屬性值不能為空值。T中主鍵不為空,A選項錯誤。參照完整性約束是指,若屬性(或屬性組)A是關系M的外鍵,它與關系M的主碼相對應,則對于關系M中的每個元組在A上的值必須為:要么取空值;要么等于關系M中某個元組的主碼值。屬性B為關系S的外鍵,它與關系S的主鍵相對應,則T中元組在B上應該為空或者與S中主鍵值相等,題目中不相等,違反參照完整性約束,B選項正確。此題關系中無語義要求,C選項錯誤。31、有如下程序#include<stdio.h>main(){char*p,old_str[10]="wind";intpassword;scanf("%d",&password);p=old_str;while(*p){printf("%c",*p+password);p++;}printf("\n");}程序運行時,從鍵盤輸入2<回車>,輸出結果是A、ykpfB、windC、xjoeD、2222標準答案:A知識點解析:程序執(zhí)行過程為:定義字符數(shù)組str并且初始化為:"wind",定義password并通過scanf函數(shù)從鍵盤為其賦值2。定義指針p并使其指向字符串。通過while循環(huán),將字符數(shù)組中每一個字符的ASCII碼加2,并且按字符格式輸出每一個字符。程序運行后輸出結果是:ykpf,A選項正確。32、設有定義:intn=1234;doublex=3.1415;則語句printf("%3d,%1.3f\n",n,x);的輸出結果是A、1234,3.142B、123,3.142C、1234,3.141D、123,3.141標準答案:A知識點解析:函數(shù)printf()中,%md指輸出帶符號的十進制整數(shù),給定最小寬度為m位,不足m位左端補空格,超過m位按實際位數(shù)輸出,%.nf表示以小數(shù)形式輸出實數(shù),小數(shù)占n位,對應題目,答案為A選項。33、有以下程序#include<stdio.h>main(){inti;FILE*fp;for(i=0;i<3;i++){fp=fopen("res.txt","w");fputc(’K’+i,fp);fclose(fp);}}程序運行后,在當前目錄下會生成一個res.txt文件,其內容是A、EOFB、MC、KLMD、L標準答案:B知識點解析:for循環(huán)中,每次都執(zhí)行打開文件res.txt、寫入文件、再關閉文件的操作,由于fopen函數(shù)使用’w’模式寫文件,所以每次打開res.txt后,都刪除文件中的原有數(shù)據(jù),再重新寫入新數(shù)據(jù)。所以文件最終的內容只與最后一次for循環(huán)有關,最后一次for循環(huán)是向文件res.txt寫入’K’+2,即M,正確答案是B選項。34、以下程序擬實現(xiàn)計算s=1+2*2+3*3+…+n*n+…,直到s>1000為止。#include<stdio.h>main(){ints,n;s=1;n=1;do{n=n+1;s=s+n*n;}while(s>1000);printf("s=%d\n",s);}程序運行后,不能得到正確結果,以下修改方案正確的是A、把while(s>1000);改為while(s<=1000);B、把s=1;改為s=0;C、把n=1;改為n=0;D、把n=n+1;改為n=n*n;標準答案:A知識點解析:題目中程序不能實現(xiàn)預期功能是因為while的循環(huán)條件錯誤,選項B,把s=1,改為s=0,最終的結果s=4,與題目原意不同,選項C,把n=1;改為n=0;最終的結果s=2,與題目原意不同,選項D,把n=n+1;改為n=n*n;最終的結果s=2,與題目原意不同,選項A,正確的修改了while循環(huán)條件,可以得到正確結果。故答案為A選項.35、有以下程序#include<stdio.h>main(){inti;charc;scanf("%c",&c);for(i=0;i<5;i++){if(i>c)continue;printf("%d,",i);}}執(zhí)行時輸入:0<回車>后,則輸出結果是A、5B、0,0,0,0,0,C、0,1,2,3,4,D、0,1,標準答案:C知識點解析:scanf("%c",&c),輸入的字符,題目中輸入了0,是字符,對應于ASCII碼為48,因此for循環(huán),i的范圍從0~5,均小于48,if條件不成立,直接執(zhí)行下一條語句,因此執(zhí)行printf,因此得到的結果是0,1,2,3,4。故答案為C選項36、設循環(huán)隊列存儲空間為Q(1:50),初始狀態(tài)為front=rear=50。經(jīng)過一系列入隊和退隊操作后,front=rear=25,則該循環(huán)隊列中元素個數(shù)為A、26B、25C、24D、0或50標準答案:D知識點解析:循環(huán)隊列是隊列的一種順序存儲結構,用隊尾指針rear指向隊列中的隊尾元素,用排頭指針front指向排頭元素的前一個位置。循環(huán)隊列長度為50,由初始狀態(tài)為front=rear=50可知此時循環(huán)隊列為空。入隊運算時,首先隊尾指針rear進1(即rear+1),然后在隊尾指針rear指向的位置插入新元素。特別的,當隊尾指針rear=50+1時,置rear=1。退隊運算時,排頭指針front進1(即front+1),然后刪除front指針指向的位置上的元素,當排頭指針front=50+1時,置front=1。若經(jīng)過運算,front=rear可知隊列空或者隊列滿,則隊列中有0或者50個元素。故選D選項37、下列敘述中錯誤的是()。A、C語句必須以分號結束B、復合語句在語法上被看作一條語句C、空語句出現(xiàn)在任何位置都不會影響程序運行D、賦值表達式末尾加分號就構成賦值語句標準答案:C知識點解析:C語言規(guī)定每條語句和數(shù)據(jù)定義的最后必須有一個分號,分號是C語句的必要組成部分。復合語句也稱為“語句塊”,其形式如下:{語句1;語句2;……”語句n;},即用一對大括號把若干語句括起來構成一個語句組。一個復合語句在語法上視為一條語句,在一對花括號內的語句數(shù)量不限。一個賦值表達式的最后加一個分號就成為一條語句,即賦值語句??照Z句是只有一個分號的語句,它什么也不做,程序設計中有時需要加一個空語句來表示存在一條語句,但隨意加分號會導致邏輯上的錯誤,而且這種錯誤十分隱蔽,編輯器也不會提示邏輯錯誤,需要慎用。38、以下敘述中正確的是()。A、在C語言中,預處理命令行都以#開頭B、預處理命令行必須位于C源程序的起始位置C、#include<stdio.h>必須放在C程序的開頭D、C語言的預處理不能實現(xiàn)宏定義和條件編譯的功能標準答案:A知識點解析:C語言中。凡是以#開頭的都被稱為編譯預處理行,選項A正確;預處理行可以放在C源程序的任何位置,習慣放在起始位置,選項B錯誤;語句#include<stdio.h>必須放在使用文件stdio.h中相關方法的語句之前,但是不一定非要放在C程序開頭.選項C錯誤;預處理包括宏定義、文件包含和條件編譯等,選項D錯誤。二、程序填空題(本題共1題,每題1.0分,共1分。)39、給定程序中,函數(shù)fun的功能是:計算形參x所指數(shù)組中N個數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),將所指數(shù)組中小于平均值的數(shù)據(jù)移至數(shù)組的前部,大于等于平均值的數(shù)據(jù)移至x所指數(shù)組的后部,平均值作為函數(shù)值返同,在主函數(shù)中輸出平均值和移動后的數(shù)據(jù)。例如,有10個正數(shù):47、30、32、40、6、17、45、15、48、26,其平均值為30.500000。移動后的輸出為:30、6、17、15、26、47、32、40、45、48。請在程序的下畫線處填入正確的內容并把下畫線刪除,使程序得出正確的結果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:1#include<stdlib.h>2#include<stdio.h>3#define.N104doublefun(double*x)5{inti,j;doubleav,y[N];6av=0;7for(i=0;i<N;i++)8/*********found*********/9av+=【1】;10for(i=j=0;i<N;i++)11if(x[i]<av){12y[j]=x[i];x[.i]=-1;13/*********found*********/14【2】;15}16i=0;17while(i<N)18{if(x[i]!=-1)y[j++]=x[i];19/*********found*********/20【3】;21}22for(i=0;i<N;i++)x[i]=y[i];23returnav;24}25main()26{inti;doublex[N];27for(i=0;i<N;i++)28{x[i]=rand()%50;29printf(’’%4.0f’’,x[i]);}30printf(’’\n’’);31printf(’’\nTheaverageis:%f\n’’,fun(x));32printf(’’\nTheresult:\n’’,fun(x));33for(i=0

溫馨提示

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

評論

0/150

提交評論