




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
初級(jí)程序員-2025年程序員模擬題1問答題(共5題,共5分)(1.)閱讀以下問題說(shuō)明、C程序和函數(shù),將解答填入答題紙的對(duì)應(yīng)欄內(nèi)?!締栴}1】分析下面的C程序,指出錯(cuò)誤代碼((江南博哥)或運(yùn)行異常代碼)所在的行號(hào)?!綜程序】【問題2】函數(shù)inputArr(inta[],intn)的功能是輸入一組整數(shù)(輸入0或輸入的整數(shù)個(gè)數(shù)達(dá)到n時(shí)結(jié)束)存入數(shù)組a,并返回實(shí)際輸入的整數(shù)個(gè)數(shù)。函數(shù)inputArr可以成功編譯。但測(cè)試函數(shù)調(diào)用inputArr后,發(fā)現(xiàn)運(yùn)行結(jié)果不正確。請(qǐng)指出錯(cuò)誤所在的代碼行號(hào),并在不增加和刪除代碼行的情況下進(jìn)行修改,寫出修改正確后的完整代碼行,使之符合上述設(shè)計(jì)意圖?!綜函數(shù)】正確答案:參考解析:【問題1】5,或arrChar="test"7,或*P='0';【問題2】【解析】本題考查C程序編寫和調(diào)試中常見錯(cuò)誤的識(shí)別和改正?!締栴}1】在C語(yǔ)言中,指針表示內(nèi)存單元的地址,指針變量可用于存儲(chǔ)指針類型的值,即內(nèi)存單元的地址值。變量的值在程序運(yùn)行過程中允許修改,而常量則不允許修改。可以令指針指向一個(gè)變量或常量,但若指針指向一個(gè)常量,則不允許通過指針修改該常量。第5行代碼有錯(cuò),即對(duì)數(shù)組名arrChar的賦值處理是錯(cuò)誤的。在C語(yǔ)言中,數(shù)組名是表示數(shù)組空間首地址的指針常量,程序中不允許對(duì)常量賦值。第7行代碼有錯(cuò),在第6行中,通過p="testing"使指針變量指向了一個(gè)字符串常量,此后可以再令指針p指向其他字符或字符串,但不能通過指針修改字符串常量的內(nèi)容?!締栴}2】該函數(shù)中出現(xiàn)的錯(cuò)誤是編寫C程序時(shí)的常見錯(cuò)誤。scanf是C標(biāo)準(zhǔn)庫(kù)函數(shù)中的格式化輸入函數(shù),其原型如下:intscanf(char*format,...);使用時(shí),第一個(gè)實(shí)參是格式控制串,之后的實(shí)參是地址1,地址2,…在本題中,要求以十進(jìn)制整數(shù)格式輸入一個(gè)整數(shù)并存入a[k],數(shù)組元素a[k]實(shí)質(zhì)上一個(gè)整型變量,必須用"&"求得a[k]的地址作為實(shí)參調(diào)用scanf函數(shù),因此,第4行出錯(cuò),正確代碼應(yīng)為"scanf("%d&a[k]);"。C程序中將相等運(yùn)算符"="誤用為賦值運(yùn)算符"="也是常見的一個(gè)錯(cuò)誤,由于"="也是合法的運(yùn)算符并且C語(yǔ)言中用0和非0來(lái)表示邏輯假和邏輯真,因此在應(yīng)產(chǎn)生邏輯值的地方產(chǎn)生了其他數(shù)值也可以,因此該錯(cuò)誤通常只能用人工檢查和排除。第6行的正確代碼應(yīng)為"if(k==n)break;"。在該程序中,結(jié)束循環(huán)的一個(gè)條件是k等于n,另一個(gè)條件是輸入的整數(shù)為0。另外,do-whi1e的循環(huán)條件為真(非0)時(shí)要繼續(xù)循環(huán),因此,循環(huán)條件應(yīng)該是判斷輸入的值不等于0。觀察循環(huán)體中與數(shù)組元素有關(guān)的部分,如下所示:scanf("%d",&a[k]);(2.)閱讀以下Java代碼,填充(1)~(5)的空缺,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)?!菊f(shuō)明】進(jìn)行兩個(gè)整數(shù)之間的比較,由考生通過輸入窗口分別輸入兩個(gè)整數(shù),程序比較出結(jié)果。例如:先后輸入的兩個(gè)數(shù)分別為25和36。比較結(jié)果顯示:25!=3625<3625<=36【Java代碼】importjavax.swing.JOptionPane;publicclassJava3{publicstaticvoidmain(Stringargs[]){String(1)//用戶輸入第1個(gè)字符串secondNuimber,//用戶輸入第2個(gè)字符串result;//包含輸出結(jié)果的字符串intnumber1,//比較的第1個(gè)數(shù)number2;//比較的第2個(gè)數(shù)//讀用戶輸入的第1個(gè)字符串firstNumber=JOptionPane(2)("Enterfirstinteger:");//讀用戶輸入的第2個(gè)字符串secondNumber=JOpttionPane.showlnputDialog("Entersecondinteger:");//將字符串類型轉(zhuǎn)換成整數(shù)類型number1=Integer.(3)(firstNumber);number2=Integer.parselnt(secondNumber);result="";if((4))result=number1+"=="+number2;if(number1!=number2)result=number1+"!=”"+number2;if(number1<number2)result=result+"\n"+number1+"<"+number2;if(numbe1>number2)result=result+"\n"+number1+">"+number2;if(number1<=number2)result=result+"\n"+number1+"<="+number2;if(number1>=number2)result=result+"\n"+number1+">="+number2;//顯示結(jié)果JOptionPane.(5)(null,result,"ComparisonResults",JOptionPane.INFORMATION_MESSAGE.;//程序正常退出System.exit(0);}}正確答案:參考解析:(1)firstNumber(2)showInputDialog(3)parseInt(4)number1==number2(5)showMessageDialog【解析】試題要求由考生通過輸入窗口分別輸入兩個(gè)整數(shù),比較其大小并輸出結(jié)果。下面來(lái)分析程序代碼,程序中定義了一個(gè)類Java3,在這個(gè)類中實(shí)現(xiàn)題目要求的功能。第1空所在代碼行的注釋是用戶輸入第1個(gè)字符串,但這在程序的開始,沒有進(jìn)行輸入操作,應(yīng)該是聲明一個(gè)字符串型變量用來(lái)存放用戶輸入的第1個(gè)字符串,而在這個(gè)空的前面有一個(gè)關(guān)鍵字String用來(lái)表明所聲明的變量是字符串型的,結(jié)合后面的程序,我們知道用來(lái)存放輸入的第1個(gè)字符串的變量是firstNumber,因此,此空答案為“firstNumber。根據(jù)注釋,第2空所在代碼行的作用是讀用戶輸入的第1個(gè)字符串,而實(shí)現(xiàn)這個(gè)功能的是JOptionPane包中的showInputDialog()函數(shù),結(jié)合后面的程序,我們不難找出此空的答案為“showlnputDialog”。再根據(jù)注釋,我們知道第3空所在代碼行的作用是將第1個(gè)字符串類型的內(nèi)容轉(zhuǎn)換成整數(shù)類型,在Java中,一般通過類型對(duì)象的parseInt()方法,結(jié)合后面的程序,我們也不難找出此空的答案為“parseInt”。第4空是條件判斷語(yǔ)句中的條件,根據(jù)整個(gè)程序,我們不難發(fā)現(xiàn)變量result中存放的是要輸出的結(jié)果,而語(yǔ)句result=number1+"=="+number2是將number1=number2這樣一個(gè)結(jié)果存放到result中,那么只有當(dāng)number1等于number2時(shí),才輸出這個(gè)結(jié)果,因此,第4空的作用應(yīng)該是確定number1等于number2。所以,此空答案為“number1==number2”。第5空在注釋顯示結(jié)果下面,從上面的程序中我們知道,變量result中存放的是要輸出的結(jié)果,根據(jù)下面的程序,很明顯是要調(diào)用包JOptionPane中的某個(gè)方法來(lái)實(shí)現(xiàn)輸出。此方法應(yīng)該是showMessageDialog(),因此,此空答案為“showMessageDialog”。(3.)閱讀以下說(shuō)明和C函數(shù),填充(1)~(5)的空缺,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)?!菊f(shuō)明】編寫程序,對(duì)于從鍵盤輸入的3個(gè)實(shí)數(shù)a、b、c,計(jì)算實(shí)系數(shù)一元二次方程的根并輸出所求的根?!竞瘮?shù)】#include<stdio.h>#include<stdlib.h>#include<math.h>Main(){floata,b,c,delta,x1,x2;printf("Entera,b,c");scanf("%f%f%f",&a,&b,&c));if((1))if((2))printf("Inputerror!\n");elseprintf("Thesinglerootis%f\n",(3));else{delta=b*b-4*a*c;if((4)){x1=(-b+sqrt(delta))/(2*a);x2=(-b-sqrt(delta))/(2*a);printf("x1=%8.2f\nx2=%8.2f\n",x1,x2,);}elseif(delta==0)printf("x1=x2=%8.2f\n",(5));else{Printf("z2=%8.2f+%8.2f*i\n",-b/(2*a),sqrt(-delta)/)(2*abs(a)));Printf("z2=%8.2f-%8.2f*i\n",-b/(2*a),sqrt(-delta)/(2*abs(a)));}}}正確答案:參考解析:(1)a==0(2)b==0(3)-c/b(4)delta>0(或b*b-4*a*c>0)(5)-b/(2*a)(或-b/2/a)【解析】對(duì)于如何求出一元二次方程的根,是解決這個(gè)題目的關(guān)鍵。首先我們來(lái)回憶一下數(shù)學(xué)中求一元二次方程根的方法。在數(shù)學(xué)中求一元二次方程根的步驟如下。第一步是確定方程是否為一元二次方程,這需要判斷二次方系數(shù)和一次方系數(shù)是否為0,如果都為0,則方程有錯(cuò)。如果只是二次方系數(shù)為零,則方程為一元一次方程,方程有一個(gè)解。第二步是用Δ=b*b-4*a*c與0的關(guān)系來(lái)判斷解的個(gè)數(shù),如果Δ>0,方程有2個(gè)不同的解;如果Δ=0,方程有一個(gè)解;而Δ<0時(shí),方程無(wú)解。第三步才是求解?,F(xiàn)在我們來(lái)看主函數(shù),在主函數(shù)中,首先聲明了一些實(shí)數(shù)變量,其中變量a、b、c分別存放我們從鍵盤輸入的3個(gè)實(shí)數(shù),而detal中存放的是Δ的值,x1、x2中存放方程根的值。接下來(lái)是從鍵盤輸入3個(gè)值,作為一元二次方程的系數(shù),在對(duì)一元二次方程求解以前我們需要考慮系數(shù)值為0的情況,因此,第1空應(yīng)該填“a==0”,第2空應(yīng)該填“b==0”。在a等于0而b不等于0的情況下,方程為一元一次方程,可以直接用-c/b求得其解,第3空明顯是要輸出這個(gè)解。再往下看,程序計(jì)算了Δ的值,那么接下來(lái)應(yīng)該是判斷Δ與0的關(guān)系了,從程序中可以看出,方程在第4空的條件下有兩個(gè)解,那么第4空應(yīng)該填“delta>0”。而第5空是在delta=0的條件下方程的解,因此第5空應(yīng)該填“-b/(2*a)”。(4.)閱讀說(shuō)明和流程圖,填補(bǔ)流程圖中的空缺(1)?(5),將答案填入答題紙對(duì)應(yīng)欄內(nèi)?!菊f(shuō)明】本流程圖用于計(jì)算菲波那契數(shù)列{a1=1,a2=1,…,an=an-1+an-2!n=3,4,…}的前n項(xiàng)(n>=2)之和S。例如,菲波那契數(shù)列前6項(xiàng)之和為20。計(jì)算過程中,當(dāng)前項(xiàng)之前的兩項(xiàng)分別動(dòng)態(tài)地保存在變量A和B中?!玖鞒虉D】正確答案:參考解析:(1)2或A+B(2)n(3)A+B(4)B-A(5)S+B【解析】菲波那契數(shù)列的特點(diǎn)是首2項(xiàng)都是1,從第3項(xiàng)開始,每一項(xiàng)都是前兩項(xiàng)之和。該數(shù)列的前幾項(xiàng)為1,1,2,3,5,8,…。在流程圖中,送初始值1—A,2—B后,顯然前2項(xiàng)的和S應(yīng)等于2,所以(1)處應(yīng)填2(或A+B)。此時(shí)2→i(i表示動(dòng)態(tài)的項(xiàng)編號(hào)),說(shuō)明已經(jīng)計(jì)算出前2項(xiàng)之和。接著判斷循環(huán)的結(jié)束條件。顯然當(dāng)i=n時(shí)表示已經(jīng)計(jì)算出前n項(xiàng)之和,循環(huán)可以結(jié)束了。因此(2)處填n。判斷框中用“>”或“≥”的效果是一樣的,因?yàn)殡S著i的逐步增1,只要有i=n結(jié)束條件就不會(huì)遇到i>n的情況。不過編程的習(xí)慣使循環(huán)結(jié)束條件擴(kuò)大些,以防止邏輯出錯(cuò)時(shí)繼續(xù)循環(huán)。接下來(lái)i+1→i表示數(shù)列當(dāng)前項(xiàng)的編號(hào)增1,繼續(xù)往下計(jì)算。原來(lái)的前兩項(xiàng)值(分別在變量A和B中)將變更成新的前兩項(xiàng)再放到變量A和B中。首先可以用A+B—B實(shí)現(xiàn)(原A)+(原B)—(新B),因此(3)處填A(yù)+B。為了填新A值(原來(lái)的B值),不能用B—A,因?yàn)樽兞緽的內(nèi)容已經(jīng)改變?yōu)椋ㄔ瑼)+(原B),而B-A正是((原A)+(原B))-(原A)=(原B),因此可以用B-A—A來(lái)實(shí)現(xiàn)新A的賦值。這樣,(4)處填B-A。最后應(yīng)是前n項(xiàng)和值的累加(比原來(lái)的S值增加了新B值),所以(5)處應(yīng)填S+B。填完各個(gè)空后,最好再用具體的數(shù)值來(lái)模擬流程圖走幾個(gè)循環(huán)檢查所填的結(jié)果(這是防止邏輯上出錯(cuò)的好辦法)。(5.)閱讀下列說(shuō)明和C代碼,回答問題1至問題3,將解答寫在答題紙的對(duì)應(yīng)欄內(nèi)。【說(shuō)明】模式匹配是指給定主串t和子串s,在主串t中尋找子串s的過程,其中s稱為模式。如果匹配成功,返回s在t中的位置,否則返回-1。KMP算法用next數(shù)組對(duì)匹配過程進(jìn)行了優(yōu)化。KMP算法的偽代碼描述如下:1.在串t和串s中,分別設(shè)比較的起始下標(biāo)i=j=0。2.如果串t和串s都還有字符,則循環(huán)執(zhí)行下列操作:(1)如果j=-l或者t[i]=s[j],則將i和j分別加1,繼續(xù)比較t和s的下一個(gè)字符;(2)否則,將j向右滑動(dòng)到next[j]的位置,即j=next[j]。3.如果s中所有字符均已比較完畢,則返回匹配的起始位置(從1開始);否則返回-1。其中,next數(shù)組根據(jù)子串s求解。求解next數(shù)組的代碼已由get_next函數(shù)給出。【C代碼】(1)常量和變量說(shuō)明t,s:長(zhǎng)度為lt和ls的字符串next:next數(shù)組,長(zhǎng)度為ls(2)C程序#include<stdio.h>#include<stdlib.h>#include<string.h>/*求next[]的值*/voidget_next(int*next,char*s,intls){inti=0,j=-1;next[0]=-1;/*初始化next[0]*/while(i<ls){/*還有字符*/
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 實(shí)體店復(fù)工活動(dòng)方案
- 小區(qū)讀書日活動(dòng)方案
- 小區(qū)睦鄰文化活動(dòng)方案
- 定向促銷活動(dòng)方案
- 實(shí)體店宣傳引流活動(dòng)方案
- 小學(xué)幼兒園結(jié)對(duì)活動(dòng)方案
- 小型煙花活動(dòng)方案
- 客戶漂流活動(dòng)方案
- 寺院鐘樓募捐活動(dòng)方案
- 小學(xué)建設(shè)活動(dòng)方案
- ESG趨勢(shì)下企業(yè)財(cái)務(wù)管理新挑戰(zhàn)
- 2024年公安機(jī)關(guān)理論考試題庫(kù)500道(基礎(chǔ)題)
- DB11∕T045-2025醫(yī)學(xué)實(shí)驗(yàn)室質(zhì)量與技術(shù)要求
- 2024年11月-礦山隱蔽致災(zāi)因素普查
- DBJ51T 163-2021 成都軌道交通設(shè)計(jì)防火標(biāo)準(zhǔn)
- 加熱爐安全操作規(guī)程培訓(xùn)課件
- 《星形膠質(zhì)細(xì)胞》課件
- 學(xué)校紅十字會(huì)工作手冊(cè)
- 特種設(shè)備隱患排查與整治
- 科技史10:改變世界的10大科技發(fā)明
- 2024年人教版七年級(jí)下冊(cè)生物期末檢測(cè)試卷及答案
評(píng)論
0/150
提交評(píng)論