




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
初級程序員-2025年程序員模擬題1問答題(共5題,共5分)(1.)閱讀以下問題說明、C程序和函數,將解答填入答題紙的對應欄內?!締栴}1】分析下面的C程序,指出錯誤代碼((江南博哥)或運行異常代碼)所在的行號?!綜程序】【問題2】函數inputArr(inta[],intn)的功能是輸入一組整數(輸入0或輸入的整數個數達到n時結束)存入數組a,并返回實際輸入的整數個數。函數inputArr可以成功編譯。但測試函數調用inputArr后,發現運行結果不正確。請指出錯誤所在的代碼行號,并在不增加和刪除代碼行的情況下進行修改,寫出修改正確后的完整代碼行,使之符合上述設計意圖?!綜函數】正確答案:參考解析:【問題1】5,或arrChar="test"7,或*P='0';【問題2】【解析】本題考查C程序編寫和調試中常見錯誤的識別和改正。【問題1】在C語言中,指針表示內存單元的地址,指針變量可用于存儲指針類型的值,即內存單元的地址值。變量的值在程序運行過程中允許修改,而常量則不允許修改??梢粤钪羔樦赶蛞粋€變量或常量,但若指針指向一個常量,則不允許通過指針修改該常量。第5行代碼有錯,即對數組名arrChar的賦值處理是錯誤的。在C語言中,數組名是表示數組空間首地址的指針常量,程序中不允許對常量賦值。第7行代碼有錯,在第6行中,通過p="testing"使指針變量指向了一個字符串常量,此后可以再令指針p指向其他字符或字符串,但不能通過指針修改字符串常量的內容。【問題2】該函數中出現的錯誤是編寫C程序時的常見錯誤。scanf是C標準庫函數中的格式化輸入函數,其原型如下:intscanf(char*format,...);使用時,第一個實參是格式控制串,之后的實參是地址1,地址2,…在本題中,要求以十進制整數格式輸入一個整數并存入a[k],數組元素a[k]實質上一個整型變量,必須用"&"求得a[k]的地址作為實參調用scanf函數,因此,第4行出錯,正確代碼應為"scanf("%d&a[k]);"。C程序中將相等運算符"="誤用為賦值運算符"="也是常見的一個錯誤,由于"="也是合法的運算符并且C語言中用0和非0來表示邏輯假和邏輯真,因此在應產生邏輯值的地方產生了其他數值也可以,因此該錯誤通常只能用人工檢查和排除。第6行的正確代碼應為"if(k==n)break;"。在該程序中,結束循環的一個條件是k等于n,另一個條件是輸入的整數為0。另外,do-whi1e的循環條件為真(非0)時要繼續循環,因此,循環條件應該是判斷輸入的值不等于0。觀察循環體中與數組元素有關的部分,如下所示:scanf("%d",&a[k]);(2.)閱讀以下Java代碼,填充(1)~(5)的空缺,將解答填入答題紙的對應欄內?!菊f明】進行兩個整數之間的比較,由考生通過輸入窗口分別輸入兩個整數,程序比較出結果。例如:先后輸入的兩個數分別為25和36。比較結果顯示:25!=3625<3625<=36【Java代碼】importjavax.swing.JOptionPane;publicclassJava3{publicstaticvoidmain(Stringargs[]){String(1)//用戶輸入第1個字符串secondNuimber,//用戶輸入第2個字符串result;//包含輸出結果的字符串intnumber1,//比較的第1個數number2;//比較的第2個數//讀用戶輸入的第1個字符串firstNumber=JOptionPane(2)("Enterfirstinteger:");//讀用戶輸入的第2個字符串secondNumber=JOpttionPane.showlnputDialog("Entersecondinteger:");//將字符串類型轉換成整數類型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;//顯示結果JOptionPane.(5)(null,result,"ComparisonResults",JOptionPane.INFORMATION_MESSAGE.;//程序正常退出System.exit(0);}}正確答案:參考解析:(1)firstNumber(2)showInputDialog(3)parseInt(4)number1==number2(5)showMessageDialog【解析】試題要求由考生通過輸入窗口分別輸入兩個整數,比較其大小并輸出結果。下面來分析程序代碼,程序中定義了一個類Java3,在這個類中實現題目要求的功能。第1空所在代碼行的注釋是用戶輸入第1個字符串,但這在程序的開始,沒有進行輸入操作,應該是聲明一個字符串型變量用來存放用戶輸入的第1個字符串,而在這個空的前面有一個關鍵字String用來表明所聲明的變量是字符串型的,結合后面的程序,我們知道用來存放輸入的第1個字符串的變量是firstNumber,因此,此空答案為“firstNumber。根據注釋,第2空所在代碼行的作用是讀用戶輸入的第1個字符串,而實現這個功能的是JOptionPane包中的showInputDialog()函數,結合后面的程序,我們不難找出此空的答案為“showlnputDialog”。再根據注釋,我們知道第3空所在代碼行的作用是將第1個字符串類型的內容轉換成整數類型,在Java中,一般通過類型對象的parseInt()方法,結合后面的程序,我們也不難找出此空的答案為“parseInt”。第4空是條件判斷語句中的條件,根據整個程序,我們不難發現變量result中存放的是要輸出的結果,而語句result=number1+"=="+number2是將number1=number2這樣一個結果存放到result中,那么只有當number1等于number2時,才輸出這個結果,因此,第4空的作用應該是確定number1等于number2。所以,此空答案為“number1==number2”。第5空在注釋顯示結果下面,從上面的程序中我們知道,變量result中存放的是要輸出的結果,根據下面的程序,很明顯是要調用包JOptionPane中的某個方法來實現輸出。此方法應該是showMessageDialog(),因此,此空答案為“showMessageDialog”。(3.)閱讀以下說明和C函數,填充(1)~(5)的空缺,將解答填入答題紙的對應欄內。【說明】編寫程序,對于從鍵盤輸入的3個實數a、b、c,計算實系數一元二次方程的根并輸出所求的根?!竞瘮怠?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)【解析】對于如何求出一元二次方程的根,是解決這個題目的關鍵。首先我們來回憶一下數學中求一元二次方程根的方法。在數學中求一元二次方程根的步驟如下。第一步是確定方程是否為一元二次方程,這需要判斷二次方系數和一次方系數是否為0,如果都為0,則方程有錯。如果只是二次方系數為零,則方程為一元一次方程,方程有一個解。第二步是用Δ=b*b-4*a*c與0的關系來判斷解的個數,如果Δ>0,方程有2個不同的解;如果Δ=0,方程有一個解;而Δ<0時,方程無解。第三步才是求解?,F在我們來看主函數,在主函數中,首先聲明了一些實數變量,其中變量a、b、c分別存放我們從鍵盤輸入的3個實數,而detal中存放的是Δ的值,x1、x2中存放方程根的值。接下來是從鍵盤輸入3個值,作為一元二次方程的系數,在對一元二次方程求解以前我們需要考慮系數值為0的情況,因此,第1空應該填“a==0”,第2空應該填“b==0”。在a等于0而b不等于0的情況下,方程為一元一次方程,可以直接用-c/b求得其解,第3空明顯是要輸出這個解。再往下看,程序計算了Δ的值,那么接下來應該是判斷Δ與0的關系了,從程序中可以看出,方程在第4空的條件下有兩個解,那么第4空應該填“delta>0”。而第5空是在delta=0的條件下方程的解,因此第5空應該填“-b/(2*a)”。(4.)閱讀說明和流程圖,填補流程圖中的空缺(1)?(5),將答案填入答題紙對應欄內?!菊f明】本流程圖用于計算菲波那契數列{a1=1,a2=1,…,an=an-1+an-2!n=3,4,…}的前n項(n>=2)之和S。例如,菲波那契數列前6項之和為20。計算過程中,當前項之前的兩項分別動態地保存在變量A和B中?!玖鞒虉D】正確答案:參考解析:(1)2或A+B(2)n(3)A+B(4)B-A(5)S+B【解析】菲波那契數列的特點是首2項都是1,從第3項開始,每一項都是前兩項之和。該數列的前幾項為1,1,2,3,5,8,…。在流程圖中,送初始值1—A,2—B后,顯然前2項的和S應等于2,所以(1)處應填2(或A+B)。此時2→i(i表示動態的項編號),說明已經計算出前2項之和。接著判斷循環的結束條件。顯然當i=n時表示已經計算出前n項之和,循環可以結束了。因此(2)處填n。判斷框中用“>”或“≥”的效果是一樣的,因為隨著i的逐步增1,只要有i=n結束條件就不會遇到i>n的情況。不過編程的習慣使循環結束條件擴大些,以防止邏輯出錯時繼續循環。接下來i+1→i表示數列當前項的編號增1,繼續往下計算。原來的前兩項值(分別在變量A和B中)將變更成新的前兩項再放到變量A和B中。首先可以用A+B—B實現(原A)+(原B)—(新B),因此(3)處填A+B。為了填新A值(原來的B值),不能用B—A,因為變量B的內容已經改變為(原A)+(原B),而B-A正是((原A)+(原B))-(原A)=(原B),因此可以用B-A—A來實現新A的賦值。這樣,(4)處填B-A。最后應是前n項和值的累加(比原來的S值增加了新B值),所以(5)處應填S+B。填完各個空后,最好再用具體的數值來模擬流程圖走幾個循環檢查所填的結果(這是防止邏輯上出錯的好辦法)。(5.)閱讀下列說明和C代碼,回答問題1至問題3,將解答寫在答題紙的對應欄內?!菊f明】模式匹配是指給定主串t和子串s,在主串t中尋找子串s的過程,其中s稱為模式。如果匹配成功,返回s在t中的位置,否則返回-1。KMP算法用next數組對匹配過程進行了優化。KMP算法的偽代碼描述如下:1.在串t和串s中,分別設比較的起始下標i=j=0。2.如果串t和串s都還有字符,則循環執行下列操作:(1)如果j=-l或者t[i]=s[j],則將i和j分別加1,繼續比較t和s的下一個字符;(2)否則,將j向右滑動到next[j]的位置,即j=next[j]。3.如果s中所有字符均已比較完畢,則返回匹配的起始位置(從1開始);否則返回-1。其中,next數組根據子串s求解。求解next數組的代碼已由get_next函數給出?!綜代碼】(1)常量和變量說明t,s:長度為lt和ls的字符串next:next數組,長度為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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西安理工大學《新時代高校勞動教育通論》2023-2024學年第二學期期末試卷
- 南京理工大學《乒乓球教學》2023-2024學年第二學期期末試卷
- 吉首大學張家界學院《聲樂一》2023-2024學年第二學期期末試卷
- 滁州職業技術學院《民間美術圖形創新設計》2023-2024學年第二學期期末試卷
- 桂林醫學院《軟件設計模式與體系結構(雙語)》2023-2024學年第二學期期末試卷
- 社區服務中心設計
- 小學科學實驗室安全教育
- 2024年水電站計算機監控裝置項目資金籌措計劃書代可行性研究報告
- 相關管理規定制度的教育
- 新生兒肺炎護理
- 智能監測與控制系統-深度研究
- 水利施工超標準洪水應急預案
- 《自動瓷磚切割機的結構設計》12000字(論文)
- 海上絲綢之路(浙江海洋大學)學習通測試及答案
- 皮帶機安全培訓課件
- ISO 27040-2015 信息技術安全技術存儲安全管理手冊程序文件制度文件表單一整套
- 【MOOC】游戲開發程序設計基礎-中國傳媒大學 中國大學慕課MOOC答案
- 【MOOC】葡萄酒文化與鑒賞-西北工業大學 中國大學慕課MOOC答案
- 【MOOC】百年歌聲-中國流行音樂鑒賞-中國礦業大學 中國大學慕課MOOC答案
- 2024年同等學力人員申請碩士學位英語試卷與參考答案
- 【MOOC】3D工程圖學應用與提高-華中科技大學 中國大學慕課MOOC答案
評論
0/150
提交評論