版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
國家二級(C語言)機試模擬試卷31(共9套)(共67題)國家二級(C語言)機試模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和3門課的成績。函數(shù)fun的功能是將形參a所指結(jié)構(gòu)體變量8中的數(shù)據(jù)進行修改,并把a中地址作為函數(shù)值返回主函數(shù),在主函數(shù)中輸出修改后的數(shù)據(jù)。例如:a所指變量s中的學(xué)號、姓名、和三門課的成績依次是:10001、”ZhangSan”、95、80、88,修改后輸出t中的數(shù)據(jù)應(yīng)為:10002、”LiSi”、96、81、89。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)l#include#includestructstudent{longsno;charname[10];floatscore[3];};/**********found**********/【1】fun(structstudent*a){inti;a->sno=10002;strcpy(a->name,"LiSi");/**********found**********/for(i=0;i<3;i++)【2】+=1;/**********found**********/return【3】;}main(){structstudents={10001,"ZhangSan",95,80,88},*t;inti;printf("\n\nTheoriginaldata:\n");printf("\nNo:%ldName:%s\nScores:",s.sno,);for(i=0;i<3;i++)printf("%6.2f",s.score[i]);printf("\n");t=fun(&s);printf("\nThedataaftermodified:\n");printf("\nNo:%ldName:%s\nScores:",t->sno,t->name);for(i=0;i<3;i++)printf("%6.2f",t->score[i]);printf("\n");}標(biāo)準(zhǔn)答案:structstudent*a->score[i]a知識點解析:第一空:主函數(shù)內(nèi)fun函數(shù)的調(diào)用形式是“t=fun(&s);”,t是student結(jié)構(gòu)體指針,故fun函數(shù)的返回值是student結(jié)構(gòu)體指針,因此第一空為“structstudent*”。第二空:“for(i=0;i<3;i++)__2__+=1;”是修改a的score數(shù)組元素的值,故第二空為“a->score[i]”。第三空:此處補充返回值,由第一空的分析可知,返回值是指針,a是指針變量,所以返回值為a,即第三空為“a”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:按順序給s所指數(shù)組中的元素賦予從2開始的偶數(shù),然后再按順序?qū)γ课鍌€元素求一個平均值,并將這些值依次存放在W所指的數(shù)組中。若s所指數(shù)組中元素的個數(shù)不是5的倍數(shù),多余部分忽略不計。例如,s所指數(shù)組有14個元素,則只對前10個元素進行處理,不對最后的4個元素求平均值。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include#defineSIZE20fun(double*s,doublew){intk,i;doublesum;for(k=2,i=0;i標(biāo)準(zhǔn)答案:sum=0.0;if((i+1)%5==0)知識點解析:(1)在第一標(biāo)識下“sun=0.0;”,根據(jù)題意,這是給sum賦值,而sun沒有定義編譯時會提示錯誤,應(yīng)改為“sum=0.0;”。(2)錯誤標(biāo)識下的if判斷語句是依順序取五個字符,if中的邏輯表達式語法有誤,由于1%5恒等于1,所以i+1%5也就等價于i+1了,所以將“if(i+1%5==0)”改為“if((i+1)%5==0)”,此處主要注意的是運算符的優(yōu)先級。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(inta[][N]),函數(shù)的功能是:使數(shù)組左下三角元素中的值全部置成0。例如:a數(shù)組中的值為則返回主程序后a數(shù)組中的值應(yīng)為注意:部分源程序存在文件PROGI.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#include#defineN5voidfun(inta[][N]){}NONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*rf,*wf;inti,j,a[5][5];rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<5;i++)for(j=0;j<5;j++)fscanf(rf,"%d",&a[i][j]);fun(a);for(i=0;i<5;i++){for(j=0;j<5;j++)fprintf(wf,"%4d",a[i][j]);fprintf(wf,"\n");}fclose(rf);fclose(wf);}main(){inta[N][N],i,j;printf("*****Thearray*****\n");for(i=0;i標(biāo)準(zhǔn)答案:{inti,j;for(i=0;i知識點解析:進入fun函數(shù),根據(jù)前面的分析:(1)對二維數(shù)組常用雙重循環(huán)結(jié)構(gòu)來處理:外層循環(huán)控制二維數(shù)組的行處理,內(nèi)層循環(huán)控制二維數(shù)組的列處理。(2)左下半三角元素的下標(biāo)特點是列下標(biāo)小于或等于行下標(biāo),即j<=i。(3)依次訪問二維數(shù)組,把符合以上條件的元素的值賦0。該題是對矩陣操作的考查。國家二級(C語言)機試模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:在形參s所指字符串中的每個數(shù)字字符之后插入一個*號。例如,形參s所指的字符串為:def35adh3kjsdf7。執(zhí)行結(jié)果為:def3*5*adh3*kjsdf7*。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)&&(2)0或“\0”(3)s[j]知識點解析:函數(shù)fun的功能是在形參s所指字符串中的每個數(shù)字字符之后插入一個“*”號。在fun函數(shù)中,首先尋找數(shù)字字符,找到之后,將其后的字符往后移動一位,然后再在數(shù)字字符后面插入“*”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中fun函數(shù)的功能是:分別統(tǒng)計字符串中大寫字母和小寫字母的個數(shù)。例如,給字符串s輸入:AAaaBBb123CCccccd,則應(yīng)輸出結(jié)果:upper=6,lower=8。請改正程序中的錯誤,使它能計算出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)voidfun(char*s,int*a,int*b)(2)*a=*a+1;(3)*b=*b+1;知識點解析:該程序功能是統(tǒng)計字符串中的大小寫字母的個數(shù)。從已給定源程序的main主函數(shù)開始入手,調(diào)用函數(shù)“fun(s,&uper,&lower);”,傳參數(shù)uper,lower的地址,對字符串s中的字符進行判斷,求得該字符串中大小寫字母的個數(shù)。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,其功能是:計算并輸出下列多項式的值:例如,在主函數(shù)中從鍵盤給n輸入50后,輸出為:s=1.718282。注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。標(biāo)準(zhǔn)答案:知識點解析:該程序功能是計算并輸出多項式值。根據(jù)題干中給出的數(shù)列,首先推出每一項的表達式,然后再對多項式進行累加求和。國家二級(C語言)機試模擬試卷第3套一、選擇題(本題共40題,每題1.0分,共40分。)1、數(shù)據(jù)結(jié)構(gòu)主要研究的是數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的運算和()。A、數(shù)據(jù)的方法B、數(shù)據(jù)的存儲結(jié)構(gòu)C、數(shù)據(jù)的對象D、數(shù)據(jù)的邏輯存儲標(biāo)準(zhǔn)答案:B知識點解析:數(shù)據(jù)結(jié)構(gòu)是研究數(shù)據(jù)元素及其之間的相互關(guān)系和數(shù)據(jù)運算的一門學(xué)科,它包含3個方面的內(nèi)容,即數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和數(shù)據(jù)的運算。2、一棵二叉樹的前序遍歷結(jié)果是ABCEDF,中序遍歷結(jié)果是CBAEDF,則其后序遍歷的結(jié)果是()。A、DBACEFB、CBEFDAC、FDAEBCD、DFABEC標(biāo)準(zhǔn)答案:B知識點解析:由于該二叉樹的前序遍歷結(jié)果是ABCEDF,顯然A結(jié)點為根結(jié)點,所以后序遍歷時A結(jié)點是最后遍歷的,其后序遍歷的結(jié)果為CBEFDA。3、在數(shù)據(jù)處理中,其處理的最小單位是()。A、數(shù)據(jù)B、數(shù)據(jù)項C、數(shù)據(jù)結(jié)構(gòu)D、數(shù)據(jù)元素標(biāo)準(zhǔn)答案:B知識點解析:數(shù)據(jù)元素是由多個數(shù)據(jù)項組成,數(shù)據(jù)是能夠被計算機識別、存儲和加工處理的信息載體,數(shù)據(jù)處理的最小單位是數(shù)據(jù)項。4、在數(shù)據(jù)庫系統(tǒng)的內(nèi)部結(jié)構(gòu)體系中,索引屬于()。A、模式B、內(nèi)模式C、外模式D、概念模式標(biāo)準(zhǔn)答案:B知識點解析:內(nèi)模式又稱物理模式,它給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法,如數(shù)據(jù)存儲的文件結(jié)構(gòu)、索引、集簇及hash等存取方式與存取路徑,內(nèi)模式的物理性主要體現(xiàn)在操作系統(tǒng)及文件級上,它還未深入到設(shè)備級上(如磁盤及磁盤操作)。5、以下()不屬于對象的基本特征。A、繼承性B、封裝性C、分類性D、多態(tài)性標(biāo)準(zhǔn)答案:A知識點解析:對象具有如下特征:標(biāo)識惟一性。指對象是可區(qū)分的。分類性。指可以將具有相同屬性和操作的對象抽象成類。多態(tài)性。指同一個操作可以是不同對象的行為。封裝性。從外面看只能看到對象的外部特征,而不知道也無需知道數(shù)據(jù)的具體結(jié)構(gòu)以及實現(xiàn)操作的算法。模塊獨立性好。對象是面向?qū)ο蟮能浖幕灸K,對象內(nèi)部各種元素彼此結(jié)合得很緊密,內(nèi)聚性強。6、數(shù)據(jù)庫系統(tǒng)的核心是()。A、數(shù)據(jù)模型B、軟件開發(fā)C、數(shù)據(jù)庫設(shè)計D、數(shù)據(jù)庫管理系統(tǒng)標(biāo)準(zhǔn)答案:D知識點解析:數(shù)據(jù)庫管理系統(tǒng)DBMS是數(shù)據(jù)庫系統(tǒng)的核心。DBMS是負(fù)責(zé)數(shù)據(jù)庫的建立、使用和維護的軟件。DBMS建立在操作系統(tǒng)之上,實施對數(shù)據(jù)庫的統(tǒng)一管理和控制。用戶使用的各種數(shù)據(jù)庫命令以及應(yīng)用程序的執(zhí)行,最終都必須通過DBMS。另外,DBMS還承擔(dān)著數(shù)據(jù)庫的安全保護工作,按照DBA所規(guī)定的要求,保證數(shù)據(jù)庫的完整性和安全性。7、開發(fā)軟件所需高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象稱做()。A、軟件矛盾B、軟件危機C、軟件藕合D、軟件產(chǎn)生標(biāo)準(zhǔn)答案:B知識點解析:隨著計算機軟件規(guī)模的擴大,軟件本身的復(fù)雜性不斷增加,研制周期顯著變長,正確性難以保證,軟件開發(fā)費用上漲,生產(chǎn)效率急劇下降,從而出現(xiàn)了入們難以控制軟件發(fā)展的局面,即所謂的“軟件危機”。8、關(guān)系模型允許定義3類數(shù)據(jù)約束,下列不屬于數(shù)據(jù)約束的是()。A、實體完整性約束B、參照完整性約束C、屬性完整性約束D、用戶自定義的完整性約束標(biāo)準(zhǔn)答案:C知識點解析:關(guān)系模型允許3類數(shù)據(jù)約束,它們是:實體完整性約束該約束要求關(guān)系的主鍵中屬性值不能為空值,這是數(shù)據(jù)庫完整性的最基本要求。參照完整性約束該約束是關(guān)系之間相關(guān)聯(lián)的基本約束,它不允許關(guān)系引用不存在的元組:即在關(guān)系中的外鍵要么是所關(guān)聯(lián)關(guān)系中實際存在的元組,要么就為空值。用戶定義的完整性約束用戶定義的完整性就是針對某一具體關(guān)系數(shù)據(jù)庫的約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求。9、關(guān)系表中的每一行記錄稱為一個()。A、字段B、元組C、屬性D、關(guān)鍵碼標(biāo)準(zhǔn)答案:B知識點解析:在關(guān)系表中,每一列稱為一個屬性,對應(yīng)表中的一個字段;每一行稱為一個元組,對應(yīng)表中的一條記錄。10、在數(shù)據(jù)庫管理技術(shù)的發(fā)展中,數(shù)據(jù)獨立性最高的是()。A、人工管理B、文件系統(tǒng)C、數(shù)據(jù)庫系統(tǒng)D、數(shù)據(jù)模型標(biāo)準(zhǔn)答案:C知識點解析:在人工管理階段,數(shù)據(jù)無法共享,冗余度大,不獨立,完全依賴程序;在文件系統(tǒng)階段,數(shù)據(jù)共享性差;在數(shù)據(jù)庫系統(tǒng)階段,共享性好,獨立性高。11、以下敘述錯誤的是()。A、C語言區(qū)分大小寫B(tài)、C程序中的一個變量,代表內(nèi)存中一個相應(yīng)的存儲單元,變量的值可以根據(jù)需要隨時修改C、整數(shù)和實數(shù)都能用C語言準(zhǔn)確無誤地表示出來D、在C程序中,正整數(shù)可以用十進制、八進制和十六進制的形式來表示標(biāo)準(zhǔn)答案:C知識點解析:本題涉及C語言最基本的3個概念:①C語言是區(qū)分大小寫的,q和Q是兩個不同的變量:②變量的實質(zhì)就是在內(nèi)存中占據(jù)一定的存儲單元,存儲單元里存放的是該變量的值,變量的值可以根據(jù)需要進行修改;③整數(shù)在允許的范圍內(nèi)可以準(zhǔn)確的表示出來,但不可能表示無限度的實數(shù)。正整數(shù)可用二進制、十進制、八進制和十六進制表示。12、有以下程序段:inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){case1:case3:printf("%d\n",n);break;case2:case4:printf("%d\n",n);continue;case0:exit(0);}printf("%d\n",n);}以下關(guān)于程序段執(zhí)行情況的敘述,正確的是()A、for循環(huán)語句固定執(zhí)行8次B、當(dāng)產(chǎn)生的隨機數(shù)n為4時結(jié)束循環(huán)操作C、當(dāng)產(chǎn)生的隨機數(shù)n為1和2時不做任何操作D、當(dāng)產(chǎn)生的隨機數(shù)n為0時結(jié)束程序運行標(biāo)準(zhǔn)答案:D知識點解析:當(dāng)產(chǎn)生的隨機數(shù)n為0時,執(zhí)行case0:exit(0)這條語句,結(jié)束程序的運行。13、可在C程序中用作用戶標(biāo)識符的一組標(biāo)識符是()。A、voiddeftneWORDB、as_b3_123IfC、For—abccaseD、2cDOSIG標(biāo)準(zhǔn)答案:B知識點解析:C語言規(guī)定,標(biāo)識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或下劃線,關(guān)鍵字不能用作用戶標(biāo)識符。14、若變量已正確定義并賦值,則以下符合C語言語法的表達式是()。A、a=a+7;B、a=7+b+c,a++C、int(12.3%4)D、a=a+7=c+b標(biāo)準(zhǔn)答案:B知識點解析:選項A)是一個C語句,不是表達式;選項B)是利用一個逗號表達式給a賦值;選項C)中的“%”求余運算符要求兩個運算對象都必須是整型;選項D)中,不能用表達式給表達式賦值,但是變量可以給自身賦值,例如:a=a+1。15、有以下程序段charch;intk:ch=’a’;k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII十進制代碼為97,則執(zhí)行上述程序段后輸出結(jié)果是()。A、因變量類型與格式描述符的類型不匹配輸出無定值B、輸出項與格式描述符個數(shù)不符,輸出為零值或不定值C、a,97,12k=12D、a,97,k=12標(biāo)準(zhǔn)答案:D知識點解析:在用基本輸出函數(shù)printf時,格式說明與輸出項的個數(shù)應(yīng)該相同。如果格式說明的個數(shù)少于輸出項的個數(shù),多余的輸出項不予輸出;如果格式說明個數(shù)多于輸出項個數(shù),則對于多余的格式項輸出不定值或O。16、下列敘述中錯誤的是()。A、計算機不能直接執(zhí)行用C語言編寫的源程序B、C程序經(jīng)C編譯程序編譯后,生成后綴為.obj的文件是一個二進制文件C、后綴為.obj的文件,經(jīng)連接程序生成后綴為.exe的文件是一個二進制文件D、后綴為.obj和.exe的二進制文件都可以直接運行標(biāo)準(zhǔn)答案:D知識點解析:C源程序經(jīng)過程序編譯之后生成一個后綴為“.obi”的二進制文件(稱為目標(biāo)文件),然后由稱為“連接程序”的軟件包文件與C語言提供的各種庫函數(shù)連接起來生成一個后綴為“.exe”的可運行文件。17、有以下程序#include<stdio.h>voidmain(){inta=1,b=0;printf("%d,",b=(a++)+(a++));printf("%d\n",a+b);}程序運行后的輸出結(jié)果是()。A、4,6B、2,5C、3,5D、2.6標(biāo)準(zhǔn)答案:B知識點解析:在主函數(shù)中定義了兩個整型變量a和b,并把它們的初值分別設(shè)置為1和0;在第二條語句中,首先計算b=a+a,然后a自增兩次,因此第二句結(jié)束時,b-2,a=3,然后第三句,a+b=5。18、若有代數(shù)式,(其中e僅代表自然對數(shù)的底數(shù),不是變量),則下列能夠正確表示該代數(shù)式的C語言表達式是()。A、sqrt(abs(n^x+e^x))B、sqrt(fabs(pow(n,x)+pow(x,e)))C、sqrt(fabs(pow(n,x)+exp(x)))D、sqrt(fabs(pow(x,n)+exp(x)))標(biāo)準(zhǔn)答案:C知識點解析:n和e的x冪次方,要分別調(diào)用C語言的數(shù)學(xué)庫函數(shù)doublepow(n,x)和doubleexp(x),因為這兩個函數(shù)的返回值都為double型,對兩者的和計算絕對值,調(diào)用庫函數(shù)doublefabs(pow(n,x)+exp(x)),求出和的絕對值,再調(diào)用開平方函數(shù)doublesqrt(fabs(pow(n,x)+exp(x))),這樣計算出的結(jié)果就是題干中表達式的值。19、設(shè)有定義:intk=0;,下列選項的4個表達式中與其他3個表達式的值不相同的是()。A、k++B、k+=1C、#NAME?D、k+l標(biāo)準(zhǔn)答案:A知識點解析:因為題中有語句“intk=0;”,所以選項B)、C)、D)都是對k的值加1,選項A)的語句k++表示先利用k的值進行運算,然后k的值才加1。20、有下列程序,其中%u表示按無符號整數(shù)輸出。main(){unsignedintx=0xFFFF;/*x的初值為十六進制數(shù)*/printf("%u\n",x);}程序運行后的輸出結(jié)果是()。A、-1B、65535C、32767D、0xFFFF標(biāo)準(zhǔn)答案:B知識點解析:“%u”格式符表示以十進制形式輸出無符號整形變量。本題中無符號整形變量x=0xFFFF。表示的是十六進制無符號整型變量的最大值65535,所以最后輸出的結(jié)果為65535。21、下面程序的運行結(jié)果是()。for(i=3;i<7;i++)printf((i%2)?("**%d\n"):("##%d\n"),i);A、
B、
C、
D、
標(biāo)準(zhǔn)答案:D知識點解析:本題考查printf函數(shù)的輸出格式和條件表達式“?:”的使用。①printf函數(shù)輸出時“**%d\n”和“##%d\n”中的“##”和“**”都是直接輸出。②條件表達式的基本格式為:“a?b:c”。它的運算規(guī)則為:當(dāng)a為非0時,整個表達式的值取b的值,當(dāng)a為0時,整個表達式取c的值。22、設(shè)有語句:if(a==1)b=2;c=3;,以下語句中與之等價的是()。A、if(a==1){b=2;c=3;)B、if(a!=1){;}else{b=2;c=3;)C、if(a==1)c=3;b=2;D、(a==1)?b=2:a=a;c=3;標(biāo)準(zhǔn)答案:D知識點解析:在C語言中,用分號表示一條語句的結(jié)束,用{}把幾條語句放在一塊表示一個語句塊,其整體表示一個功能。因而在題目給出的四個選項中,選項A)、B)、C)均與題中所給不同,而選項D)相同。23、運行下列程序時,若輸入數(shù)據(jù)為“321”,則輸出結(jié)果是()。main(){intnum,i,j,k,s;scanf("%d",&num);if(hum>99)s=3;elseif(num>9)s=2;elses=1;i=num/100;j=(num-i*100)/10;k=(num-i*100-j*10);switch(s){case3:printf("%d%d%d\n",k,j,i);break;case2:printf("%d%d\n",k,j);case1:printf("%d\n",k);}}A、123B、1,2,3C、321D、3,2,1標(biāo)準(zhǔn)答案:A知識點解析:本題考查if-else語句和switch語句。scanf函數(shù)通過鍵盤讀入num的值。因為num=321>99,所以s=3,i=3,j=2,k=1。因為s=3,所以執(zhí)行case3,輸出k,j,i的值,然后通過break結(jié)束程序。24、有以下程序#include<stdio.h>#include<string.h>StructA{inta;charb[10];doublec;};structAf(structAt);main(){structAa={1001,"ZhangDa",1098.0);a=f(a);printf("%d,%s,%6.1f\n",a.a(chǎn),a.b,a,c);}structAf(StructAt){t.a(chǎn)=1002;strcpy(t.b,"WangPeng");t.C=1220,0;returnt;)程序運行后的輸出結(jié)果是()。A、1001,ZhangDa,1098.0B、1002,ZhangDa,1220.0C、1001,WangPeng,1098.0D、1002,WangPeng,1220.0標(biāo)準(zhǔn)答案:D知識點解析:在主函數(shù)中定義結(jié)構(gòu)體A的變量a,并對其賦初值,再調(diào)用函數(shù)f(a),在函數(shù)f(a)中對結(jié)構(gòu)體變量a的各個成員重新進行了賦值操作,并把其值返回在屏幕上輸出。25、判斷char型變量c1是否為小寫字母的正確表達式為()。A、’a’<=c1<=’z’B、(c1>=a)&&(c1<=z)C、(’a’>=c1‖(’z’<=c1)D、(c1>=’a’)&&(c1<=’z’)標(biāo)準(zhǔn)答案:D知識點解析:C語言規(guī)定,字符常量在程序中要用單引號括起來。首先判斷c1是否為小寫字母的主要條件c1>=’a’和c1<=’z’是邏輯與關(guān)系,其次選項A)的這種形式C語言中沒有,所以選項D)正確。26、設(shè)有定義:chars[10];inti=0;,以下不能將一行(不超過100個字符)帶有空格的字符串正確讀入的語句或語句組是()。A、gets(s);B、scanf("%s",s);C、while((s[i++]=getchar())!=’\n’);s[i]=’\0’;D、do{scanf("%c",&s[i]);}while(s[i++]!=’\n’);s[i]=’\0’;標(biāo)準(zhǔn)答案:B知識點解析:本題考查標(biāo)準(zhǔn)輸入輸出函數(shù)和循環(huán)語句。gets(s)函數(shù)的作用是將輸入的字符讀入字符串s,直到遇到回車。而scanf()函數(shù)接收字符串時的結(jié)束標(biāo)志為回車或者空格。因此選項B)不能,選項C)和選項D)中按字符逐個讀入字符串s中,直到讀入的字符是換行符為止,因此正確。27、下面4個關(guān)于C語言的結(jié)論中錯誤的是()。A、可以用do…while語句實現(xiàn)的循環(huán)一定可以用while語句實現(xiàn)B、可以用for語句實現(xiàn)的循環(huán)一定可以用while語句實現(xiàn)C、可以用while語句實現(xiàn)的循環(huán)一定可以用for語句實現(xiàn)D、do…while語句與while語句的區(qū)別僅是關(guān)鍵字“while”出現(xiàn)的位置不同標(biāo)準(zhǔn)答案:D知識點解析:本題考查幾個循環(huán)語句的關(guān)系。①do…while語句、while語句、for語句所實現(xiàn)的循環(huán)可以相互替代;②do…while語句和while語句的區(qū)別是do…while語句至少執(zhí)行一次,再判斷循環(huán)條件,while語句是先判斷條件再執(zhí)行。28、若有以下程序段:structst{intn;int*m;};inta=2,b=3,c=5;structsts[3]=({101,&a},{102,&c),{103,&b)};main(){structst*p;p=s;…}則以下表達式中值為5的是()。A、(p++)->mB、*(p++)->mC、(*p).mD、*(++p)->m標(biāo)準(zhǔn)答案:D知識點解析:本題考查如何通過指針引用數(shù)組元素。首先定義了一個結(jié)構(gòu)體,然后定義了一個結(jié)構(gòu)體變量s[3],并賦了初值。在主程序中,定義了一個指向結(jié)構(gòu)體變量s的指針p,要使表達式的值為5,就應(yīng)該引用s[1].m的值,使指針p指向s[1],++p可以實現(xiàn)將p指針加1,指向s[1]。29、下列程序的運行結(jié)果是()。#include<stdio.h>voidsub(int*s,int*y){staticintm=4;*y=s[0];m++:}voidmain(){inta[]={1,2,3,4,5),k;intx;printf("\n");for(k=0;k<=4;k++){sub(a,&x);printf("%d,",x);}}A、1,1,1,1,1,B、1,2,3,4,5,C、0,0,0,0,0,D、4,4,4,4,4,標(biāo)準(zhǔn)答案:A知識點解析:本題中sub(int*s,int*y)函數(shù)的參數(shù)是兩個指針型變量,在函數(shù)體內(nèi)將數(shù)組s的第一個元素賦給y。主程序內(nèi),首先定義了一維數(shù)組并賦初值,然后通過for循環(huán),5次調(diào)用sub(a,&x)函數(shù),每一次調(diào)用都是將數(shù)組a的第一個元素1賦給x,并輸出。30、有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)return(y);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序運行后的輸出結(jié)果是()。A、3B、6C、8D、12標(biāo)準(zhǔn)答案:B知識點解析:fun(b,c)即fun(5,6),5!=6,所以返回6;fun(2*a,6)即fun(8,6),8!=6,所以返回6。31、C語言中規(guī)定,程序中各函數(shù)之間()。A、既允許直接遞歸調(diào)用也允許間接遞歸調(diào)用B、不允許直接遞歸調(diào)用也不允許間接遞歸調(diào)用C、允許直接遞歸調(diào)用不允許間接遞歸調(diào)用D、不允許直接遞歸調(diào)用允許間接遞歸調(diào)用標(biāo)準(zhǔn)答案:A知識點解析:本題考查函數(shù)調(diào)用的基本概念。在函數(shù)調(diào)用時,只要符合函數(shù)的使用,程序中的各個函數(shù)間既可以直接調(diào)用其他函數(shù),也可以遞歸調(diào)用其自身。32、以下程序的輸出結(jié)果是()。#include<stdio.h>main(){inta[3][3]={0,1,2,0,1,2,0,1,2),i,j,s=1;for(i=0;i<3;i++)for(j=i;j<=i.j++)s+=a[i][a][j][j];printf("%d\n",s);}A、3B、4C、1D、9標(biāo)準(zhǔn)答案:B知識點解析:當(dāng)外層循環(huán)為i時,內(nèi)層循環(huán)j只能取j=i,所以s+=a[i][a[j][j]],其實就是s+=a[i][a[i][i]],當(dāng)i=0時,s=s+a[0][a[0][0]]=s+a[0][0]=1,當(dāng)i=1時,s=s+a[1][a[1][1]]=s+a[1][1]=1+1=2,當(dāng)i=2時,s=s+a[2][a[2][2]]=s+a[2][2]=2+2=4。33、有以下程序:#include<stdio.h>#defineX5+6main(){inta=2,c;c=X*2;printf("%d",c);}程序運行后的輸出結(jié)果是()。A、17B、22C、16D、11標(biāo)準(zhǔn)答案:A知識點解析:define語句僅進行簡單替換,因此c=5+6*2=17。34、當(dāng)用“#defineF37.5f”定義后,下列敘述正確的是()。A、F是float型數(shù)B、F是char型數(shù)C、F無類型D、F是字符串標(biāo)準(zhǔn)答案:D知識點解析:字符替換定義格式為:#define標(biāo)識符(形參表)形參表達式。題中F是代表形參表達式的標(biāo)識符(字符串)。35、若有定義語句:inta=3,b=2,c=1;,以下選項中錯誤的賦值表達式是()。A、a=(b=4)=3;B、a=b=c+1;C、a=(b=4)+c;D、a=1+(b=x=4);標(biāo)準(zhǔn)答案:A知識點解析:這道題目主要考察賦值表達式,對于賦值表達式來說,賦值號“=”的左邊一定為變量名,右邊為一個C語言合法的表達式。36、以下說法正確的是()。A、宏定義是C語句,要在行末加分號B、可以使用#undefine提前結(jié)束宏名的使用C、在進行宏定義時,宏定義不能嵌套D、雙引號中出現(xiàn)的宏名也要進行替換標(biāo)準(zhǔn)答案:B知識點解析:本題考查宏的使用規(guī)則:①字符替換格式:#define標(biāo)識符字符串,行末不加分號;②雙引號中出現(xiàn)的宏名不替換;③如果提前結(jié)束宏名的使用,程序中可以使用#undefine:④在進行宏定義時,宏定義能層層置換,能夠嵌套。37、下面程序的輸出結(jié)果是()。typedefunion{longx[1];inty[4];charz[10];}M;Mt;main(){printf("%d\n",sizeof(t));}A、32B、26C、10D、4標(biāo)準(zhǔn)答案:C知識點解析:“聯(lián)合體”所占用的內(nèi)存空間為最長的成員所占用的空間。題中聯(lián)合體的z[10]成員是聯(lián)合體中占空間最長的成員。38、以下程序中函數(shù)sort的功能是對a數(shù)組中的數(shù)據(jù)進行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10),i;sort(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序運行后的輸出結(jié)果是()。A、1,2,3,4,5,6,7,8,9,10,B、10,9,8,7,6,5,4,3,2,1,C、1,2,3,8,7,6,5,4,9,10,D、1,2,10,9,8,7,6,5,4,3,標(biāo)準(zhǔn)答案:C知識點解析:程序中sort函數(shù)的功能是對數(shù)組中的數(shù)據(jù)進行從大到小的排序。主函數(shù)main中調(diào)用函數(shù)sort(&aa[3],5);,使得數(shù)組aa中從第4個元素開始的5個元素進行從大到小的排序,數(shù)組aa中的元素變?yōu)椋?,2,3,8,7,6,5,4,9,10。并輸出這些元素。39、設(shè)x=061,y=016,則z=x|y的值是()。A、1111B、1.11111e+007C、111111D、1.1e+007標(biāo)準(zhǔn)答案:C知識點解析:本題主要考查按位或運算,x=061(二進制為00110001),y=016(二進制為00001110),進行或運算后結(jié)果為00111111。40、函數(shù)rewind(fp)的作用是()。A、使fp指定的文件的位置指針重新定位到文件的開始位置B、將fp指定的文件的位置指針指向文件中所要求的特定位置C、使fp指定的文件的位置指針向文件的末尾D、使fp指定的文件的位置指針自動移至下一個字符位置標(biāo)準(zhǔn)答案:A知識點解析:位置指針重返文件頭函數(shù)rewind()的調(diào)用形式為:rewind(fp)。其中,“fp”是指向文件的文件型指針。rewind(fp)的功能是:使fp指定的文件的位置指針重新定位到文件的開始位置。二、程序填空題(本題共1題,每題1.0分,共1分。)41、給定程序中,函數(shù)fun的功能是:找出100~999之間(含100和999)所有整數(shù)中各位上數(shù)字之和為X(x為一正整數(shù))的整數(shù),然后輸出;符合條件的整數(shù)個數(shù)作為函數(shù)值返回。例如,當(dāng)X值為5時,100~999之間各位上數(shù)字之和為5的整數(shù)有:104、113、122、131、140、203、212、221、230、302、311、320、401、410、500。共有15個。當(dāng)x值為27時,各位數(shù)字之和為27的整數(shù)是:999。只有1個。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<Stdio.h>intfun(intx){intn,s1,s2,s3,t;n=0;t=100;/**********found**********/while(t<=____1____){/**********found**********/s1=t%10;S2=(____2____)%10;s3=t/100;/**********found**********/if(s1+s2+s3==____3____){printf("%d",t);n++;}t++;}returnn;}main(){intx=1;.while(x<0){printf("Pleaseinput(x>0):¨);scanf("%d¨,&x);}printf(¨\nTheresultis:%d\n",fun(x));}標(biāo)準(zhǔn)答案:(1)999(2)t/10(3)x知識點解析:第一空:第一處是補充while循環(huán)的終止條件,題干要求fun尋找100~999之間滿足條件的數(shù)x,因此循環(huán)終止條件是999,故第一空處應(yīng)填“999”。第二空:“s1=t%10;s2=(___2___)%10;s3=t/100;”可知s1求得t的個位數(shù),s3求得t的百位數(shù),因此s2是求t的十位數(shù)。(t/10)變量t變成兩位數(shù),再次對10取余便得到t的十位數(shù),因此第二空處應(yīng)為“t/10”。第三空:“if(s1+s2+s3==___3___)”是判斷t是否滿足題干條件:各位上數(shù)字之和為x,因此第三空處應(yīng)為“x”。三、程序修改題(本題共1題,每題1.0分,共1分。)42、給定程序MODI1.C中函數(shù)fun的功能是:用下面的公式求x的近似值,直到最后一項的絕對值小于指定的數(shù)(參數(shù)num)為止:例如,程序運行后,輸入0.0001,則程序輸出3.1414。請改正程序中的錯誤,使它能輸出正確的結(jié)果。注意:不要改動smain函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<math.h>#include<stdio.h>floatfun(floatnum){ints;float;n,t,pi;t=1;pi=0;n=1;s=1;/**********found**********/while(t>=num){pi=pi+t;n=n+2;s=-s;/**********found**********/t=s%n;}pi=pi*4;returnpi;}main(){floatn1,n2;printf("Enterafloatnumber:");scanf("%f",&n1);n2=fun(n1);printf("%6.4f\n",n2);}標(biāo)準(zhǔn)答案:(1)while(fabs(t)>=num)(2)t=s/n;知識點解析:(1)題干中要求進行循環(huán)的條件是絕對值小于某范圍,可以調(diào)用C語言提供的取絕對值函數(shù)fabs對t取絕對值。所以將“while(t>=num)”改為“while(fabs(t)>=num)”。(2)表達式s%n中,n是浮點型,而%運算符只能用于整數(shù)運算,且要進行的是除法運算而不是求余運算。所以,第二個標(biāo)識下“t=s%n;”應(yīng)該改為“t=s/n;”。四、程序設(shè)計題(本題共1題,每題1.0分,共1分。)43、請編寫函數(shù)fun,它的功能是:計算并輸出n(包括n)以內(nèi)能被5或9整除的所有自然數(shù)的倒數(shù)之和。例如,在主函數(shù)中從鍵盤給n輸入20后,輸出為:s=0.583333。注意:要求11的值不大于100。部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include<stdio.h>doublefun(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,"%1f\n",s);}fclose(rf);fclose(wf);}main(){intn;doubles;printf("\nInputn:");scanf("%d",&n);s=fun(n);printf("\n\ns=%f\n",s);NONO();}標(biāo)準(zhǔn)答案:inti;doublesum=0.0;for(i=1;i<=n;i++)if(i%5==0||i%9==0)/*被5或9整除*/sum+=1.0/i;returnsum;知識點解析:(1)首先,通過循環(huán),判斷小于等于n的每一個整數(shù)是否符合題干中的要求。其中的判斷條件能否被5或者被9整除為i%5==0‖i%9==0。(2)然后求得符合(1)要求的數(shù)的倒數(shù)的累加和。國家二級(C語言)機試模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是計算下式例如,若形參e的值為1e-3,函數(shù)的返回值2.985678。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)0(2)i++(3)2.0*i知識點解析:函數(shù)fun的功能是求級數(shù)和,觀察可知,級數(shù)項有規(guī)律變化,可以用循環(huán)來累加求和。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun()的功能是:根據(jù)形參m的值(2≤m≤9),在m行m列的二維數(shù)組中存放如下所示的數(shù)據(jù),由main()函數(shù)輸出。例如,若輸入2,則輸出1224輸入4,則輸出1234246836912481216請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).試題程序:#include<conio.h>#include<stdio.h>#defineM10intaiM][MI={0};/***************found*******************/fun(int**a,intm){intj,k;for(j=0;j<m;j++)for(k=0;k<m;k++)/***************found*******************/a[j][k]=k*j;}main(){inti,j,n;clrscr();printf("Entern\n");scanf("%d",&n);fun(a,n);for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%4d",a[i][j]);printf("\n");}}標(biāo)準(zhǔn)答案:(1)錯誤:fun(int**a,intm)正確:voidfun(int(*a)[M],intm)(2)錯誤:a[j][k]=k*j;正確:a[j][k]=(k+1)*(j+1);知識點解析:對于二維數(shù)組,應(yīng)該理解成為是由幾個一維數(shù)組作元素組成的一維數(shù)組,或者說,二維數(shù)組實際是一個一維數(shù)組,只不過它的每個數(shù)組元素又都是一個一維數(shù)組。我們先來看看指針數(shù)組的表示形式:(1)p+i和a+i均表示a[i]的地址,或者講,它們均指向數(shù)組第i號元素,即指向a[i]。(2)*(p+i)和*(a+i)都表示p+i和a+i所指對象的內(nèi)容,即為a[i]。(3)指向數(shù)組元素的指針,也可以表示成數(shù)組的形式,也就是說,它允許指針變量帶下標(biāo),如p[i]與*(p+i)等價。因此,二維數(shù)組元素a[i][j]可表示成*(a[i]+j)或*(*(a+i)+j),它們都與a[i][j]等價,或者還可寫成(*(a+i))[j]。了解了以上這些內(nèi)容后本題就好解決了。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫程序fun,函數(shù)的功能是:實現(xiàn)B=A+A’,即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計算結(jié)果在main函數(shù)中輸出。例如,輸入下面的矩陣:其轉(zhuǎn)置矩陣為:程序輸出:注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(inta[3][3],intb[3][3]){}main()/*主程序*/{inta[3][3]=({1,2,3},{4,5,6},{7,8,9}},t[3][3];inti,j;voidNONO();fun(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%7d",t[i][j]);printf("\n");}NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/inti,j,k,a[3][3],t[3][3];FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(k=0;k<5;k++){for(i=0;i<3;i++)fscanf(rf,"%cl%d%d",&a[i][0],&a[i][1],&a[i][2]);fun(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)fprintf(wf,"%7d",t[i][j]);fprintf(wf,"\n");}}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:intc[3][3];inti,j;for(i=0;i<3;i++)for(j=0;j<3;j++){c[i][j]=a[j][i];//矩陣的轉(zhuǎn)置b[i][j]=a[i][j]+c[i][j];}知識點解析:(1)首先,將a所指數(shù)組元素中的值進行轉(zhuǎn)置并放到c所指數(shù)組中。(2)矩陣相加是指把兩個矩陣中下標(biāo)相同的元素的值一一對應(yīng)相加。國家二級(C語言)機試模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、標(biāo)準(zhǔn)答案:NN-10知識點解析:第一空:題目要求對每行元素中的值均右移1個位置,故第一空處循環(huán)變量每次增1,共循環(huán)N次,完成對N行的移位操作,因此第一空處應(yīng)為“N”。第二空:“x=t[i][___2___];”保存第i行元素的最后一個元素t[i][N-1],故第二空應(yīng)為“t[i][N-1]”。第三空:此處是右邊被移出矩陣的元素繞回左邊,即將x內(nèi)保存的元素放在每行的第一位置,故第三空應(yīng)為“0”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:將s所指字符串中的字母轉(zhuǎn)換為按字母序列的后續(xù)字母(但Z轉(zhuǎn)換為A,z轉(zhuǎn)換為a),其他字符不變。請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includevoidfun(char*s){/***************found*************/while(*s!=’@’){if(*s>=’A’&&’s<=’Z’||*s>=’a’&&*s<=’Z’){if(*s==’Z’)*s=’A’;elseif(*s==’Z’)*s=’a’;elSe*s+=1;}/***************found*************/(*s)++;}}main(){chars[80];printf("\nEnterastringwithlength<80.:\n\n");gets(S);printf("\nThestring:\n\n’’);puts(s);fun(s);printf("\n\nTheCords:\n\n");puts(s);}標(biāo)準(zhǔn)答案:(1)while(*s)或while(*s!=’\0’)或while(*s!=0)(2)s++j知識點解析:(1)第一個錯誤標(biāo)識下的“while(*s!=’@’)"語句原意是s不指向字符串尾就進入下面的循環(huán),所以對于指針判斷不為尾符的語句應(yīng)該是“while(*s)"或者“while(*s!=’\0’)"或者“while(*s!=’\0’)"。(2)第二個標(biāo)識下“(*s)++;"是對字符內(nèi)容加1,而原題是對字符位置加1,所以將其改為“s++;"。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun。它的功能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。注意:部分源程序在文件PROGI.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(char*a){}main(){chars[81];voidNONO();printf("Enterastring:\n");gets(s);fun(s);printf("Thestringafterdeleted:\n");puts(s);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*in,*out;inti;chars[81];in=fopen("in.dat","r");out=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%s\n",s);}fclose(in);fclose(out);}標(biāo)準(zhǔn)答案:inti=0;char*p,*q;p=q=a;while(*p)p++;p一一;while(*p==’*’)p--;while(q<=p){a[i]=*q;i++;q++;}a[i]=’\0’;知識點解析:(1)首先,使用一個指針p指向串尾,然后對指向串尾的指針p指向的字符進行判斷,如果是"*",指針p就跳過,這樣來設(shè)置一個指針變量q指向字符串的頭位置。(2)然后,將由字符串起始到最后一個字母之間的字符拷貝到字符串a(chǎn)。(3)最后,在新生成的字符串尾加’\0’。國家二級(C語言)機試模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:判定形參a所指的NxN(規(guī)定N為奇數(shù))的矩陣是否是“幻方”,若是,函數(shù)返回值為1:不是,函數(shù)返回值為O?!盎梅健钡呐卸l件是:矩陣每行、每列、主對角線及反對角線上元素之和都相等。例如,以下3×3的矩陣就是一個“幻方”:492357816請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)0(2)11(3)1知識點解析:本題中函數(shù)fun的功能是判定形參a所指的N×N的矩陣是否是”幻方”,“幻方"的判定條件是:矩陣每行、每列、主對角線及反對角線上元素之和都相等,因此判斷“幻方”對先求每行、每列、主對角及反對角元素和,然后判斷是否都相等,都相等則是幻方,否則不是幻方。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:比較兩個字符串,將長的那個字符串的首地址作為函數(shù)值返回。請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)char*fun(char*s,char*t)(2)ss++;(3)tt++;知識點解析:本題中函數(shù)的功能是比較兩個字符串,將長的那個字符串的首地址作為函數(shù)值返回。解題思路是對調(diào)試過程中產(chǎn)生的錯誤提示進行跟蹤,也就是題干中給出的錯誤標(biāo)識符號下的語句。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,函數(shù)的功能是求出小于或等于lim的所有素數(shù)并放在aa數(shù)組中,函數(shù)返回所求出的素數(shù)的個數(shù)。注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。標(biāo)準(zhǔn)答案:知識點解析:該程序功能是求一定范圍內(nèi)的素數(shù)。素數(shù)是只能被1和自身除盡的數(shù)。判斷i是不是素數(shù)最簡單的方法就是用2~(i/2)去除i,只要能除盡就不是素數(shù)。國家二級(C語言)機試模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:計算出形參s所指字符串中包含的單詞個數(shù),作為函數(shù)值返回。為便于統(tǒng)計,規(guī)定各單詞之間用空格隔開。例如,形參s所指的字符串為:ThisisaClanguageprogram,函數(shù)的返回值為6。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includeintfun(char*s){intn=0,flag=0;while(*s!=’\0’){if(*s!=’’&&flag==0){/******************found*******************/【1】;flag=1;}/******************found*******************/if(*s==’’)flag=【2】;/******************found*******************/【3】;}returnn;}main(){charstr[81];intn;printf("\nEnteralinetext:\n");gets(str);n=fun(str);printf("\nfhereare%dwordsinthistext.\n\n",n);}標(biāo)準(zhǔn)答案:(1)n++(2)0(3)s++知識點解析:第一空:“if(*s!=’’&&flag==0)"說明找到空格了,單詞的數(shù)量應(yīng)加1,故第一空處應(yīng)為“n++"。第二空:“if(*s!=’’&&flag==0)"和“if(*s==’’)flag=【2】:"在flag為0的情況下,n才加1,因此第二空處是將flag置0,即第二空處應(yīng)為“0"。第三空:“while(’s!=’\0’)"循環(huán)的終止條件是s達到結(jié)尾,因此在循環(huán)體內(nèi)s應(yīng)該不斷往字符串尾移動,即第三空為"s++"。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:為一個偶數(shù)尋找兩個素數(shù),這兩個素數(shù)之和等于該偶數(shù),并將這兩個素數(shù)通過形參指針傳回主函數(shù)。請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includevoidfun(inta,int*b,int*c)(inti,j,d,y;for(i=3;i<=a/2;i=i+2){/**********found***********/Y=1;for(j=2;j<=Sqrt((double)i);j++)if(i%j==0)y=0;if(y==1){/***********found************/d==a-i;for(j=2;j<=sqrt((double)d);j++)if(d%j==0)y=0;if(y==1){*b=i;*c=d;}}}}main()(inta,b,c;do{printf("\nInputa:"),scanf("%d",&a);}while(a%2);fun(a,&b,&c);printf("\n\n%dl=%d+%d\n",a,b,c);}標(biāo)準(zhǔn)答案:(1)y=1;(2)d=a—i;知識點解析:(1)第一標(biāo)識下“Y=1:"變量Y沒有定義,編譯時會提示出錯。題中用標(biāo)志y區(qū)別i是否是素數(shù),y=1是素數(shù),y=0不是素數(shù)。第一個標(biāo)識下當(dāng)i是素數(shù)時,y最后的值就是進入循環(huán)結(jié)構(gòu)前的初始化值0,標(biāo)識該值不是素數(shù),所以“Y=1;"應(yīng)該改為“y=1:"。(2)在語句“if[y=1)"中,應(yīng)該是判斷(a-i)是否是素數(shù),即d應(yīng)賦值“a-i"而不是“d==a-i:",所以第二個標(biāo)識下"d==a-i;"改為“d=a-i:"。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun。它的功能是:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。注意:部分源程序在文件PROGI.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(char*a){}main(){chars[81];voidNONO();printf("Enterastring:\n");gets(s);fun(s);printf("Thestringafterdeleted:\n");puts(s);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*in,*out;inti;chars[81];in=fopen("in.dat","r");out=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%s\n",s);}fclose(in);fclose(out);}標(biāo)準(zhǔn)答案:inti=0;char*p,*q;p=q=a;while(*p)p++;p一一;while(*p==’*’)p--;while(q<=p){a[i]=*q;i++;q++;}a[i]=’\0’;知識點解析:(1)首先,使用一個指針p指向串尾,然后對指向串尾的指針p指向的字符進行判斷,如果是"*",指針p就跳過,這樣來設(shè)置一個指針變量q指向字符串的頭位置。(2)然后,將由字符串起始到最后一個字母之間的字符拷貝到字符串a(chǎn)。(3)最后,在新生成的字符串尾加’\0’。國家二級(C語言)機試模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:計算出帶有頭結(jié)點的單向鏈表中各結(jié)點數(shù)據(jù)域中值之和作為函數(shù)值返回。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineN8typedefstructlist{intdata;structlist*next;}SLIST;SLIST*creatlist(int*);voidoutlist(SLIST*);intfun(SLIST*h){SLIST*p;ints=0;p=h->next;while(p){/**********found**********/s+=p->【1】;/**********found**********/p=p->【2】;}returns;}main(){SLIST*head;inta[N]={12,87,45,32,91,16,20,48};head=creatlist(a);outlist(head);/**********found**********/printf("\nsum=%d\n",fun(【3】));}SLIST*creatlist(inta[]){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;}p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*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");}}標(biāo)準(zhǔn)答案:datanexthead知識點解析:第一空:循環(huán)“while(p)”遍歷整個鏈表,在循環(huán)體中,s是累加變量,每個結(jié)點的數(shù)據(jù)域上的數(shù)據(jù)都累加在s上,因此第一空處應(yīng)為“s+=p->data;”。第二空:p是循環(huán)變量,p不斷指向下一個結(jié)點,故第二空處應(yīng)為“p=p->next;”。第三空:fun函數(shù)的聲明為:intfun(SLIST*h),參數(shù)是SLIST結(jié)構(gòu)體指針,表示頭結(jié)點地址,因此第三空處的函數(shù)調(diào)用應(yīng)為“printf("\nsum=%d\n",fun(head));”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.c中函數(shù)fun的功能是:找出一個大于形參m且緊隨m的素數(shù),并作為函數(shù)值返回。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includeintfun(intm){inti,k;for(i=m+1;;i++){for(k=2;k<i;k++)/**************found**************/if(i%k!=0)break;break;/**************found**************/if(k標(biāo)準(zhǔn)答案:if(i%k==0)if(k>=i)知識點解析:(1)“if(i%k!=0)break;”說明k是i的因子的情況,i肯定不是素數(shù)可直接跳出循環(huán),因此第一標(biāo)識下應(yīng)改成“if(i%k==0)”。(2)“if(k=i時i是素數(shù),故第二標(biāo)識下應(yīng)改為“if(k>=i)”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,其功能是:計算并輸出下列多項式的值:例如,在主函數(shù)中從鍵盤給n輸入8后,輸出為:s=0.662872。注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#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.ctat”,”w”);for(i=0;i<10;i++){fscanf(rf,”%d”,&n);S=fun(n);fprintf(wf,”%lf\n”,s);}fclose(rf);fclose(wf);}main(){intnjdoubles;printf("\nInputn:");scanf(”%d”,&n);s=fun(n);printf(”\ns=%f\n”,s);NONO();}標(biāo)準(zhǔn)答案:{inti;doublesum=0.0;if(n>1&&n<=100){for(i=1;i<=n;i++)sum+=1.0/(2*i-1)-1.0/(2*i);}returnsum;}知識點解析:(1)根據(jù)題
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 流感疫苗培訓(xùn)
- 活動執(zhí)行培訓(xùn)課件
- 松下新風(fēng)推銷培訓(xùn)
- 2024-2025學(xué)年江蘇省連云港市灌南縣高一下學(xué)期期中考試歷史試題(解析版)
- 2026年世界歷史文化世界史通識測試題目
- 2026年證券從業(yè)資格考考試專業(yè)知識速成與練習(xí)題
- 2026年金融投資知識題庫股票市場分析與投資策略
- 2026年電子商務(wù)法律法規(guī)考試題
- 2026年財務(wù)專業(yè)面試審計經(jīng)驗交流會
- 2026年游戲開發(fā)全流程項目實操練習(xí)題
- 在市人力資源和社會保障局2026年度工作座談會上的講話
- 2026年陜西西安市高三高考一模數(shù)學(xué)試卷試題(含答案詳解)
- 勞務(wù)服務(wù)公司財務(wù)制度
- 外事工作培訓(xùn)
- 婦產(chǎn)科臨床技能:輸精管結(jié)扎護理課件
- 鎮(zhèn)海區(qū)國資系統(tǒng)招聘筆試題庫2026
- 2025至2030中國高壓套管行業(yè)調(diào)研及市場前景預(yù)測評估報告
- 廣州市2026屆高一數(shù)學(xué)第一學(xué)期期末統(tǒng)考試題含解析
- AI在建筑中的應(yīng)用【演示文檔課件】
- 2026秋招:國家電投面試題及答案
- 《2025年CSCO前列腺癌診療指南》更新要點解讀
評論
0/150
提交評論