


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、初級程序員下午試題模擬75試題一1、閱讀以下說明和流程圖,將應該填入處的字句填寫完整。說明求連續函數f(x)的根(方程f(x)=0的解)的最簡單方法是二分法。為此,首先需要在若干點上檢查函數值的符號,如果發現f(a)與f(b)符號相反(ab),則在區間(a,b)中必然存在f(x)的 根。因為當x從a變到b時,連續函數的值將從正變到負(或從負變到正),必然要經過0。區間(a,b) 就是根的初始范圍。取該區間的中點m,如果f(m)=0,則根就是m。如果f(a)與f(m)符號相反,則根一定在區間(a,m)中;如果f(m)與f(b)符號相反,則根一定在區間(m,b)中。因此,根的范圍縮小了一半。依此類
2、推,將區間一半一半地分下去,當區間的長度很小(達到根的精度要求,例如0.001)時,或者當區間中點處的函數值幾乎接近于0(即絕對值小于預先規定的微小量,例如0.001)時, 近似計算就可以結束了。以程圖描述了用二分法近似計算區間(a,b)中f(x)的根的過程。流程圖試題二2、閱讀以下函數說明和C語言函數,將應填入處的字句填寫完整。說明設有n個人圍坐一圈并按順時針方向從1到n編號,從第s個人開始進行1到m的報數,報數到第m 個人,則此人出圈,再從他的下一個人重新開始1到m的報數,如此進行下去,直到所有的人都出圈為止。現要求按出圈次序,每10人一組,給出這n個人的順序表。設n=100,s=1,m=
3、10。(1) 將1到n個人的序號存入一維數組p中;(2) 若第i個人報數后出圈,則將p置于數組的倒數第i個位置上,而原來第i+1個至倒數第i個元素依次向前移動一個位置;(3) 重復第(2)步,直至圈中只剩下p1為止。函數#includestdio.h #define N 100#define S 1#define M 10 void main()int p100,n,s,m; m=M;n=N; s=S;int i,j,s1,w; s1=s;for(i=1;i+) =i; for(i=n;i2;i-)s1=; if(s1=0)s1=i; w=;for(j=s1;ji;j+) pj-1=pj;pi
4、-1=; printf("%4d",pi)試題三3、閱讀以下函數說明和C語言函數,將應填入處的字句填寫完整。說明給定函數fun的功能是:將從鍵盤上輸入的每個單詞的第一個字母轉換為大寫字母,輸入時各單詞必須用空格隔開,用“.”結束輸入。函數int fun(char*c,int status)if(='') return 1;elseif(&&&&) ='A'-'a'return 0;main()int flag=1; char ch;printf("請輸入一字符串,用點號結束輸入!n&q
5、uot;); doch=getchar(); flag=fun(&ch,flag); putchar(ch);while(ch!='.');printf(!"n");試題四4、閱讀以下函數說明和C語言函數,將應填入處的字句填寫完整。說明編寫程序,生成一個新文本文件,它由一個已知文本文件的所有偶數行組成。要求已知文本文件名和新文本文件名均從鍵盤輸入。請填空完善程序。C語言程序#includestdio.h main()FILE*oldf,*newf; char ch,fname20; int i;doprintf("Enter name of
6、 existed text file to be read:"); scanf("%s",fname);if(oldf=fopen(fname,"r")=NULL) printf("File%s can't open!n",fname);while(oldf=NULL); doprintf("Enter mane of new text file to be written:"); scanf("%s",fname);if(=NULL)printf("File%s c
7、an't open!n",fname);while(); i=1;while(!feof(oldf)while(ch=fgetc(oldf)!=)if(i%2=) fputo(ch,newf);fputc('n',newf); ;fclose(oldf); fclose(newf);試題五5、閱讀以下說明,以及用C+在開發過程中所編寫的程序代碼,將應填入處的字句填寫完整。說明在下面函數橫線處填上適當的字句,使其輸出結果為: 構造函數構造函數1,25,6析析數 數C+代碼#include"iostream.h" class AApublic:
8、AA(int i,int j)A=i;B=j;cout“構造函數.n"AA();void print(); private:int A,B;void AA:print()coutA","Bendl; void main()AA*al,*a2; =new AA(1,2); a2=new AA(5,6); ;a2-print(); a1; a2;試題六閱讀以下Java代碼,回答問題1和問題2,將解答填寫完整。Java代碼class usethread implements int numusethread(int n) num=n;public void for(in
9、t i=0;i3;i+)System.out.println("running:"+num); System.out.println("finished:"+num);public class multhreadpublic static void main(String args)InterruptedException Thread m1=new Thread(new usethread6);Thread m2=new Thread(new usethread7); m1.start8;m2.start8; m1.join8; m2.join8;6、
10、補充完整上面Java代碼中的處。7、寫出上面Java代碼運行的結果。:試題一1、(1)(a+b)/2,或其等價表示 (2)f(x),或f(a+b)/2),或其等價表示(3)|y|,或abs(y)其中y可由f(x)或f(a+b)/2)代替(4)b(5)a 本題描述了求函數根(0點)的二分法,題中還詳細說明了二分法的原理。假設a和b是區間兩端點值的變量。流程圖中,一開始就將函數兩端的值分別送y1和y2,接著y1與y2符號是否相反(同號時該算法不能往下進行)。若相反,則a與b的中點值(a+b)/2送x。此時的函數值f(x),即f(a+b)/2)填“f(x)”或“f(a+b)/2)”。y。因此,第一空
11、處應填“(a+b)/2”,第二空處可接著需要新的函數值是否已經接近0,因此,第三空處應填“|y|”或“abs(y)”。如果這個新函數值已經接近0,則可以直接輸出變量x的值(根;如果該函數值尚未接近0,則需要將該區間進行二分,即需要繼續進行迭代計算。的中點值)作為函數的近似選用左半區間還是右半區間,如果y*y10,則說明新的函數值與原區間的左端函數值符號相反,因此應取左半區間,否則應取右半區間。若取左半區間,則原來的區間左端點a沒有變化,左端點的函數值y1也沒有變化,只要將中點值x送右端點變量b就可以。因此,第四空處填“b”。若取右半區間,則區間的右端點沒有變化,右端點的函數值y2也沒有變化,這
12、時需要將中點值x送左端點變量a。因此,第五空處應填“a”。由于每次迭代都需要y*y1的符號,因此y1的改變將影響下次迭代。因此,此時還需要將中點處的函數值y送y1,作為新區間的左端點函數值。當新的區間(a,b)長度b-a很小時,迭代計算就可以結束,輸出已經得到的近似根x就可以了。試題二2、 (1)i=n(2)pi-1(3)(s1+m-1)%i(4)ps1-1(5)w 題目中給出了n個人出圈問題的具體實現方法,要求用C語言來實現,結合題目中給出的方法,我們來具體分析程序。第1空是循環的條件,根據題目的要求和看,這個循環應該用來把n個人的編號存放可以知道循環變量是i,因此此空到數組p中,總共是n個
13、人,那么循環上界應該是n,從為“i=n”。第2空在循環體中,從上面的分析已經知道,這個循環實現將n個人的編號存放到數組p中,第一個人的編號應該存放到數組下標為0的位置,而第二個人的編號就存放到數組下標為1的位置,依此類推。因此此空為“pi-1”。第3空在另一個循環體中,結合整個看,不難推斷出此循環體應該用來實現題目中的第二個與第三個要求。此空是用來給變量s1賦一個值,從后面的是當前報數的人是否該出圈,如果為0,則出圈,因此此空可以推斷出,變量s1中存放的為“(s1+m-1)%i”。第4空是給一個變量w賦一個值,從此空上面的程序我們知道找到了要出圈的人,根據題目要求,出圈人的編號置于數組的倒數第
14、i個位置上,在將其存放到倒數第i個位置時肯定要移動數組中的元素,而元素的移動是以當前位置為前提的,那么需要將當前位置人的編號先保存到變量w中,而當前位置人的編號存放在數組ps1-1中,因此此空為“ps1-1”。第5空很明顯是給pi-1賦一個值,而pi-1正好是數組的倒數第i個位置,應該用來存放當前出圈人的編號,而編號在變量w中,因此此空試題三為“w”。3、(1)*c(2)status(3)*c='z'(4)*c='a'(5)*c+ 本題考查在C語言中對字符串的處理。題目要求程序將從鍵盤上輸入的每個單詞的第一個字母轉換為大寫字母,而輸入的各單詞必須用空格隔開,用“
15、.”結束輸入。要實現這個功能,關鍵之一在于如何取出單詞中的第一個字母,關鍵之二是如何實現大小寫字母的轉換。第1空是一個條件語句的條件,如果條件成立,則返回1,而從可以看出,此條件判斷語句是當前取到的字符是否等于空格字符。從主函數中可以看到,每次在調用功能函數fun()前都從輸入的字符串中取出一個字符,并存放在變量ch中,而在調用函數將變量ch的地址傳遞給了指針變量c,因此此空的為“*c”。第2空、第3空和第4空應該結合起來看,它們都是條件語句的條件,這個條件語句下面的程序是將一個小寫字母改變成一個大寫字母,根據題目要求,此條件語句的條件應該是判斷當前取到的字母是一個單詞的第一個字母且是一個小寫
16、字母,再結合主函數來看,我們不難發現單詞的第一個字母用一個標記變量flag標識,如果是第一個字母,這個標記變量flag的值為1,否則為0。要一個字母是否是小寫字母,應該其ASCII碼值是否在a與z的ASCII碼值之間。所以這3個空的應該分別為“status”、“*c='z'”、“*c='a;”。第5空是在上面條件成立的情況下執行的一條語句,條件成立我們在上面已經分析過了,表明當前取到的字符是一個單詞的第一個字母且是小寫字母,此空所在語句的任務是將小寫字母變成大寫字母,根據上面的分析,因此可以得到此空為“*c+”。試題四4、(1)newf=fopen(fname,&quo
17、t;w")(2)newf=NULL(3)'n'(4)0(5)i=i+1或i+ 本題考查用C語言實現對文本文件的操作。題目要求程序生成一個新文本文件,它的個已知文本文件的所有偶數行組成,而已知文本文件名和新文本文件名均從鍵盤輸入,題目的關鍵在于對文件的操作。下面來具體分析代碼。第1空在一個循環體中,是條件語句的條件,此循環的作用我們不難從看出,是用來打開新文本文件的,在C語言中要打開一個文件應該用函數fopen(),它的兩個參數分別是其文件名和對文件操作的屬性,根據題目意思,對這個文件的操作只有寫操作。因此,此空“newf=fopen(fname,"w&quo
18、t;)”。為第2空是一個循環的條件,上面我們已經分析了該循環的作用,是用來打開新文本文件的,結合第一個文件的打開程序,我們很容易發現此空的為“newf=NULL”。第3空是一個二重循環第二層循環的條件,這個二重循環的作用是用來實現將已知文本文件的所有偶數行內容寫到新文件中,這里需要注意每次取到的內容都是偶數行的內容,在對已知文本文件進行取內容逐行取的,那么條件語句是用來是否取完了一行內容,在C語言中,一般用換行符'n'來標第4空是循環下條件的結束,因此此空為“'n'”。語句的條件,根據題目要求可以知道每次對新文件進行寫的數據都是已知文本文件的偶數行的內容,那么在
19、寫之前應該首先內容是否是偶數行的內容。此空所在語0,因此此空為“0”。句就是用來實現這能的,而偶數對2取余的結果第5空是二重循環的最后一條語句,在上面的空中我們已經分析到,在對新文件進行寫內容時要首先其內容所在行是否為偶數行,而當前行號存放在變量i中,整個程序都沒有改變變量i的值,那么此空應該是用來改變變量i的值的,因此此空試題五為“i+”。5、(1)cout"析數.n"(3)a1-print()(2)a1(4)delete(5)delete 本題考查用C+語言對輸出的實現。題目中沒有什么條件,只給出了輸出結構,要求程序能實現這個輸出。下面來具體分析代碼。第1空很明顯是類A
20、A的析數的函數體,類的析數一般在撤銷一個對象時調用,根據題目的要求,要輸出析數這樣的結果,而在沒有與此相關的操作,那么此空應該是用來實現這個功能的,借鑒構造函數中的內容,我們很容易就得出此空數.n"”。為“cout"析第2空在主函數中,很明顯此空所在的語句是創建一個AA類的對象,并讓一個AA型的指針變量指向這個對象。在函數開始的時候那么這里只有用變量a1,因此此空了兩個AA型的指針變量a1和a2,而a2在下面已經有了值,為“a1”。第3空是在創建了兩個對象后執行的語句,根據程序不難推斷出,這里應該要實現對象a1的數據輸出,那么就要調用函數print(),因此此空為“a1-p
21、rint()”。第4空所在的語句是在實現了構造函數與數據輸出后執行的語句,從題目要求來分析,這里應該要調用對象的析數來輸出“析數”這樣一個結果,上面我們已經分析到了對象的析數一般在撤銷對象時調用。從對象的執行過程來分析,在對象的所有處理完成后也應該撤銷對象來釋放所占的,那么此空的任務應該是用來撤銷a1對象,在C+中一般用關鍵字delete,因此此空為“delete”。第5空和第4空的情況一樣,因此此空試題六為“delete”。6、(1)Runnable 7、程序輸出結果:running:1 running:2 running:1 running:2 running:1 running:2 finished:1 finished:2(2)run()(3)throws 本題考查Java中線程的相關知識。題目要求按照程序給出的內容來完成
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新興技術軟件設計師考試試題及答案
- 機電系統優化分析方法試題及答案
- 軟考網絡工程師能力提升試題及答案
- 軟件設計師考試全方位考慮及試題答案
- 政策創新的理論框架與實踐試題及答案
- 公共政策影響評估的挑戰與解決方案試題及答案
- 雙碳目標下的公共政策試題及答案
- 未來公共政策面臨的挑戰與機遇分析試題及答案
- 軟件設計師考試技巧與策略試題及答案
- 機電工程行業技術提升試題及答案
- JB-T 14320-2022 氧氣用止回閥
- 供配電技術-供配電二次回路和繼電保護
- 電工儀表與測量(第六版)中職技工電工類專業全套教學課件
- 110kV變電站及110kV輸電線路運維投標技術方案(第一部分)
- 拆模安全操作規程培訓
- 數字化系列研究之財務數智化篇:大型集團企業財務管理的數智化
- 2024年全國兩會精神主要內容
- 骨科手術后的傷口護理方法
- 《鋼鐵生產流程》課件
- 偏癱科普宣教
- 中醫類診所規章制度與崗位職責
評論
0/150
提交評論