




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2010下半年程序員考試真題及答案試題一【說明】F面的流程圖中有兩個判斷條件A> 0和B> 0。這些判斷條件的各種組合情況如下表所示。表中丫表示相應(yīng)的條件成立,N表示相應(yīng)的條件不成立。每一列表示一種條件組合,并在列首用相應(yīng)的序號來表示。序號條件1234AX)YYNNBX)YNYN【流程圖】【問題1】當遇到哪幾種條件組合時,流程圖能執(zhí)行“IT”?(寫出相應(yīng)的序號即可 )1,2本題考查程序模塊處理流程設(shè)計的理解能力。針對流程圖中的多個判斷條件及其組合,給出流程圖的各種輸入數(shù)據(jù)方案,檢查流程圖一組輸入數(shù)據(jù)方案就是一個測的執(zhí)行情況,這種方法實際上就是單元測試常用的白盒方法。試案例。對于本題
2、的處理流程, 三個判斷條件中有兩個是一樣的,即只有兩種判斷條件。 因此判斷條件的組合共有 4種。題中對這4種組合情況編制了序號。 我們可以分別對這 4種條件組合分析其執(zhí)行流程的情況,見下表:厚號1234A>0YYNNYYN執(zhí)行的語句1-13-k2fj3-t2勺3*因此,條件組合序號為 1、2時,該流程將執(zhí)行17i ?!締栴}2】當遇到哪幾種條件組合時,流程圖能執(zhí)行“29 ” ?(寫出相應(yīng)的序號即可) 2, 4本題考查程序模塊處理流程設(shè)計的理解能力。針對流程圖中的多個判斷條件及其組合,給出流程圖的各種輸入數(shù)據(jù)方案,檢查流程圖一組輸入數(shù)據(jù)方案就是一個測的執(zhí)行情況,這種方法實際上就是單元測試常用
3、的白盒方法。試案例。對于本題的處理流程,三個判斷條件中有兩個是一樣的,即只有兩種判斷條件。因此判斷條件的組合共有 4種。題中對這4種組合情況編制了序號。我們可以分別對這4種條件組1334A>0YYNNB>0YNY執(zhí)行的語句1T1-13-k2fj372勺37合分析其執(zhí)行流程的情況,見下表:因此,條件組合序號為 2、4時,該流程將執(zhí)行 27j 。【問題3】當遇到哪幾種條件組合時,流程圖能執(zhí)行“37k” ?(寫出相應(yīng)的序號即可)1, 3, 4本題考查程序模塊處理流程設(shè)計的理解能力。針對流程圖中的多個判斷條件及其組合,給出流程圖的各種輸入數(shù)據(jù)方案,檢查流程圖的執(zhí)行情況,這種方法實際上就是單
4、元測試常用的白盒方法。一組輸入數(shù)據(jù)方案就是一個測試案例。對于本題的處理流程, 三個判斷條件中有兩個是一樣的,即只有兩種判斷條件。因此判斷條件的組合共有 4種。題中對這4種組合情況編制了序號。我們可以分別對這4種條件組f*'*'序號 12341A>0YYNNYNYN執(zhí)行的語句IT3-k1-12勺3-k37合分析其執(zhí)行流程的情況,見下表:因此,條件組合序號為 1、3、4時,該流程將執(zhí)行 37k。【問題4】該流程圖共有多少條實際熱行路徑?由于這4種執(zhí)行的情況不同,即執(zhí)行路徑不同,因此,該流程圖共有4條不同的執(zhí)行路徑。4試題二【說明1】函數(shù)deldigit(char*s)的功能是
5、將字符串s中的數(shù)字字符去掉,使剩余字符按原次序構(gòu)成一個新串,并保存在原串空間中。 其思路是:先申請一個與s等長的臨時字符串空間并 令t指向它,將非數(shù)字字符按次序暫存入該空間,最后再復(fù)制給【C函數(shù)】void deldigitr (charchar = Cchu *) mailoc(11)int if k - D;if t!t) return;fx 徉-0? i <J i i+ + )if ( ! fs + i >='0* (£+i)i<=-9*) )<33-C2>"設(shè)置串結(jié)束標去/atrcpy (3, t);ft)7【說明2】函數(shù) rev
6、erse(char *s, int len)的功能是用遞歸方式逆置長度為len的字符串S。例如,若串s的內(nèi)容為"abcd”則逆置后其內(nèi)容變?yōu)?quot;dcba”【C函數(shù)】void reverse(char *呂,lenjchar ch;If C ch*3 - *(a+len-1); *(541en-l) = ch; reverse C (5)(1) strle n(s)+1 *(s+i)si,或其等價表示(3) *(t+k)tk,或其等價表示(4) len > 1,len> =1,或其等價表示(5) s+1 , len-2本題考查C程序基本結(jié)構(gòu)的理解和應(yīng)用。根據(jù)說明1,
7、在函數(shù)deldigit(char *s)中需先申請一個與s等長的臨時字符串空間并令指向它,因此空(1)處應(yīng)填入“ Strlen(s)+1”其中,力口1的原因是函數(shù)strlen 計算指向字符串的長度時,沒有包含串結(jié)束標志字符“0 ” 當然,申請比“strlen(s)+1”大的存儲區(qū)也可以,只是沒有必要。由于需要將非數(shù)字字符按原來的順序存入t所指向的存儲區(qū),所以空(2)處填入“ si或其等價表示形式。最后再設(shè)置t所指向字符串的結(jié)束標志,即令tk = '0'。在這里,空(3)處的tk寫為tk+也可以,而寫為tk+1或t+k則不符合整個代碼的處理邏輯。函數(shù) reverse(char *
8、s, int len)的功能是用遞歸方式逆置長度為 len的字符串S,其中,以下代碼實現(xiàn)了將 s所指字符與串中最后一個字符交換的處理: ch=*s;*s=*(s+le n-1);*(s+le n-1)=ch;顯然,當字符串的長度len小于或等于1時,無須進行交換,因此空(4)處應(yīng)填入“l(fā)en > 1 ” 或者“ len > =1”若長度為1時也進行交換,邏輯上沒有錯,但是運算是冗余的。試題三【說明1】F面代碼的設(shè)計意圖是:將保存在文本文件 data.txt 中的一系列整數(shù)(不超過100個)讀取出來存入數(shù)組arr,然后調(diào)用函數(shù)sort()對數(shù)組arr的元素進行排序,最后在顯示屏輸出數(shù)
9、組arr的內(nèi)容?!綜代碼】廳號;ft®frinc ludecstclio. hn2void sort(int a 口七 n)3"對n個元崇的整型組d按®増方式»列"4/*5處代碼省略G7return;*SJ9 110int main C11L21int i, num C;13int arrtlOO;iL4FILE fp;15fp - fopen ('data, txt", "r");16if (!fp)117return -Ij18whllNfeof (fp) 19f scanf ( fp,arr (num
10、*J );2321sort (arr J / num;22for (i = 0; i < num; JZ3fprlntf fstlout, "%darri+);24f-elose (fp);25leturn 0;2E【問題1】以上C代碼中有三處錯誤(省略部分的代碼除外),請指出這些錯誤所在的代碼行號,并在不增加和刪除代碼行的情況下進行修改,寫出修改正確后的完整代碼行。行號14FILEttat正摘后的完整代碼行.fscn £ (fp, tarr num-i-b J );'或 fscanEJfp, '魯d"# arr+nLim*+;I2sort(
11、arr, num;S或01 f 訂HIT ;在說明1之后的C代碼中有三處錯誤。第1個錯誤的源頭在第14行對變量fp的定義上。FILE是預(yù)定義的一個結(jié)構(gòu)體類型,在C語言程序中,必須通過定義FILE類型的指針變量和文件操作函數(shù)來訪問外存文件。因此,第14行的代碼應(yīng)為“ FILE*fp; ”。第2個錯誤位于第19行,函數(shù)fscanf與scanf函數(shù)的用法相同,以整型、浮點型和字&”,符型格式控制方式讀取文件中的數(shù)據(jù)時,需要在獲取值的變量名前加取地址運算符號“arrnum+等同于arrnum, num+=1,而數(shù)組元素arrnum的作用等同于一個變量,因此,該行的正確代碼為 “ fsca nf
12、(fp,"% d", &arrnum+);”。第3個錯誤位于第21行。根據(jù)函數(shù)sort的定義可知,調(diào)用函數(shù) sort時第一個實參應(yīng)該為數(shù)組名或?qū)?shù)組元素取地址。因此,該行的正確代碼為“sort(arr , num); ”或者"sort(&arr0, nu m);”?!締栴}2】若分別采用函數(shù)定義方式1、2和調(diào)用方式1、2,請分析程序的運行情況,填充下面的空(1)? (3)。若采用定義方式1和調(diào)用方式1,則輸出為“ 00000000”,若采用定義方式1和調(diào)用方式2,則(1)。若采用定義方式2和調(diào)用方式1,則(2)。若采用定義方式2和調(diào)用方式2,則(3)
13、。(1)輸出為“ 00000000”運行異常,無輸出(或含義相同的敘述)關(guān)于函數(shù)get_str輸出為“ test ing的兩種定義方式,其區(qū)別在形式參數(shù)的類型不同,從而導(dǎo)致調(diào)用時對 實參的要求不同。對于定義方式 1,其函數(shù)首部為: void get_str(char*p) ,參數(shù) p 是指針參數(shù),因此,調(diào)用1該函數(shù)時的實參應(yīng)為指針,可以是字符數(shù)組名、字符變量的地址或指針變量。在調(diào)用方式 中,正是以指針變量 ptr 為實參,此時,采用的參數(shù)傳遞方式為傳值,因此,回到調(diào)用函數(shù) 后,ptr的值并沒有變(仍然為 NULL),因此,輸出為“00000000 ”。而在調(diào)用方式 2 中,是get_str 時
14、,指針 p 指向的目標為變量 ptr ,但是調(diào)用了 malloc 函數(shù)后,重新為 p 賦值了,即 p 指向了其他存儲區(qū)(串拷貝函數(shù)運行后, p 所指區(qū)域的內(nèi)容為字符串testing ” ) ,p開始指向的目標變量ptr的內(nèi)容沒有變。由于是傳值調(diào)用,所以回到main 函數(shù)后, ptr 變量的值并沒有改變,因此,輸出仍為“ 00000000”。對于定義方式 2,其函數(shù)首部為:void get_str(char*p) ,參數(shù) p是指向指針的指針參數(shù),要求調(diào)用該函數(shù)時的實參為指針的地址,因此,對于調(diào)用方式1,以指針變量 ptr 為以指針變量 ptr 的地址為實參進行調(diào)用, 開始執(zhí)行函數(shù)函數(shù)main后,
15、ptr指向的目標改變了,因此輸出為“testing ”2 中,是以指實參,與形參的要求不匹配,會導(dǎo)致運行異常,不能產(chǎn)生輸出。而在調(diào)用方式 針變量 ptr 的地址為實參進行調(diào)用,符合要求,因此在函數(shù) get_str 中, *p 即表示目標變 量 ptr ,通過 malloc 申請到的存儲區(qū)域首地址復(fù)制給 *p ,也就是令 ptr 指向了申請到的存 儲區(qū)域起始位置,串拷貝函數(shù)運行后,將字符串“ testing ”放入該存儲區(qū),最后回到調(diào)用試題四【說明】已知單鏈表L含有頭節(jié)點,且節(jié)點中的元素值以遞增的方式排列。下面的函數(shù)-1,否則返回0。DeleteList 在L中查找所有值大于 minK且小于ma
16、xK的元素,若找到,則逐個刪除,同時釋放被刪節(jié)點的空間。若鏈表中不存在滿足條件的元素,則返回 例如,某單鏈表如下圖(a)所示。若令 minK為20、maxK為50,則刪除后的鏈表如圖(b)所示。(b>鏈表節(jié)點類型定義如下typ edef struct Nodeint data;struct Node *n ext;Node, *L in kList;【函數(shù)】in.t DeleteList (llnXList. L, int minK, Int"在含頭節(jié)點的單趙表1申刪降大于minKli小于的元素""P指向第一牛元紊節(jié)點“(1)= L, p = L->n
17、ext;int delTaq - 0;whil卡(p 5if ( p-AdatQ <- t q = p; p - elseif ( p->datdminK )q-AneKt P/我到冊除滿足條件的節(jié)點/ ireefpl ; delTag - 1;break;if (5)-i;return 0;(1) Node(2) p-> next(3) p->n ext(4) q->n ext!delTag, 或 delTag=0,或 delTag!=l本題目考查c語言指針和動態(tài)鏈表的應(yīng)用。函數(shù) DeleteList(LinkListL,intminK,int maxK)的功能
18、是在L在含頭節(jié)點的單鏈表L中刪除大于minK且小于maxK的元素,因此除了頭指針L以外,至少還需要兩個臨時指針,一個用于遍歷鏈表中的元素,另外一個用于刪除節(jié)點時重新鏈接節(jié)點,P和q就起這樣的作用??眨?)處用于定義指針變量P和q,由于P和q之前已經(jīng)有“* ”,因此,空(1)處應(yīng)填入“ Node”,若填入“ LinkList ”,則p和q為指向指針變量的指針變量,此后對它們的使用方式就不正確了。由于鏈表中的元素已經(jīng)按照升序排列,所以在第一個大于minK的元素之前都可以令指針一直沿著指針鏈后移,即“q=p;p=p->next ”,直到p指向第一個大于 minK的元素節(jié)點為止,在此過程中,q始
19、終指向P所指節(jié)點的前驅(qū)。因此,空(2)處應(yīng)填入“ P->next ”。刪除節(jié)點的處理由以下代碼完成:if(p->data<maxK)/*找到刪除滿足條件的節(jié)點*/q->n ext=(3);free (p);p=(4) ;delTag=1;當P指向需要被刪除的節(jié)點時,q正好指向其前驅(qū)節(jié)點,如下圖(a)所示,因此,“q->next=p->next ”就可以將p所指節(jié)點從鏈表中刪除,如下圖(b)所示:La)函數(shù)調(diào)用“ free(p) ”將p所指節(jié)點的空間釋放(由系統(tǒng)回收)。因此空(3)應(yīng)填入“P->next ”。此后,應(yīng)再令 P指向下一個需要被刪除的節(jié)點,即
20、空(4)應(yīng)填入“ q->next ”。因此根據(jù)題目的描述,空(5)處delTag的作用是判斷鏈表中是否存在滿足刪除條件的節(jié)點,應(yīng)填入“!delTag ”,當delTag的值保持為0時,說明鏈表中不存在滿足刪除條件的節(jié)點。試題五閱讀以下說明和C+弋碼,將應(yīng)填入(n)處的語句或語句成分寫在答題紙的對應(yīng)欄內(nèi)?!菊f明】30%的學(xué)生。某數(shù)據(jù)文件students.txt的內(nèi)容為100名學(xué)生的學(xué)號和成績,下面的程序?qū)⑽募械臄?shù)據(jù)全部讀入對象數(shù)組,按分數(shù)從高到低進行排序后選出排名前【C+弋碼】tincludeI include<io5t reatn><3trirg>iLsinq
21、narnespace std;class Student ( private:"學(xué)號string sNO; int cjcsdit;public:Student(string a八nt b) sNO a; credit b;Student()int ge匸Credit();void out ();j(1>:getCredit() return credit;(2): ;out 0 cout « "SNO: " « sNO « ", Credit*'* « credit « endl;clas
22、s Sortstudent publiq;void sort(Student *3, int n);Sortstudent()void Sortstudent:sort (Student *3,int n)(£oc(int 1=0; i < n-1; i+> (for(int j i+1; j < n; j+> (if(3) C Slj.(4)(Student terop s(il ;3i s(j;s【j3 temp;int main (int argc, char* argvJ)const int number 100; ifatream students;
23、 students.open (students;if < students. is_operi(>) throw 0;/學(xué)生總數(shù)Student testStudent(5) nuntberl;int k = 0;string s;while (getlIne(studentss,(/毎次瀆取一個學(xué)生的學(xué)號和成績Student student(s> substr <0,s.find(,), atoi(3 «substr(sfind lS')+l).c str()>testStude-nt k;+ = atudent;99-sort (testst
24、udentr ?cout3 0%: *«endl;for (k 0; Jc < number * 0.3;+ )testStudeRt Ic -out ;delete fteatStudent;return 0;(1) int Stude nt void Stude nt getCreditO getCredit() new Stude nt SortStude nt ss本題考查C+語言程序設(shè)計的能力,涉及類、對象、函數(shù)、訪問控制、對象數(shù)組的定義認真閱和相關(guān)操作,以及對象數(shù)組的排序算法。 要求考生根據(jù)給出的案例和執(zhí)行過程說明,讀理清程序思路,然后完成題目。首先分析程序的整體結(jié)
25、構(gòu)。本題中定義了兩個類:Student 和 SortStudent,分別用于充函數(shù)的返回類型和類名。函數(shù)getCredit和out在接口定義時已經(jīng)分別給出int和voidPublic 。C+定義學(xué)生和進行排序。類Student的定義中,第一部分為private 訪問權(quán)限的成員,要對其類SortStudent中定義了成員函數(shù)進行訪問,需要通過具有相應(yīng)訪問權(quán)限的成員函數(shù)。在第二部分的接口定義為 用類名約束機制允許將成員函數(shù)定義在類接口定義之外。sort,其功能是對參數(shù)為 Student對象數(shù)組根據(jù)分數(shù)進行排序。考查main函數(shù)的代碼,理清程序的行為:打開學(xué)生文件,創(chuàng)建對象數(shù)組,將學(xué)生的學(xué)號和成績讀
26、入,創(chuàng)建Student對象并加入對象數(shù)組,將對象數(shù)組排序,然后輸出top 30%的學(xué)生信息。1)和(2)需要補Student類的成員函數(shù)的定義在類外,需要用類名約束機制,因此空(類型,所以空( 1) 處即為 int Student, 空( 2) 處為 void Student 。SortStudent 類中的成員函數(shù) sort 對 Student 類的對象所構(gòu)成的對象數(shù)組根據(jù)分數(shù)進行排序, 而由于在 Student 類中學(xué)號和分數(shù)為 private 訪問權(quán)限, 不可從外部直接訪問, 所 以需要通過 getCredit 而得到。因此,空(3) 和空(4) 處均為 getCredit 函數(shù)調(diào)用獲得
27、分數(shù)。(5) 處為創(chuàng)main 函數(shù)中需要將學(xué)生信息讀入,并根據(jù)學(xué)生信息創(chuàng)建對象并加入對象數(shù)組??战▽ο髷?shù)組。C+中對象數(shù)組的創(chuàng)建方式為采用new關(guān)鍵字,而且從所在語句的賦值號左側(cè)的 Student*testStudent 可知,要創(chuàng)建的對象為 Student, 因此空( 5) 處為 new Student ??眨?) 為單獨語句,但是從其后續(xù)語句ss.sort 的函數(shù)調(diào)用可知,使用了 SortStudent 的函數(shù)sort ,使用前需要創(chuàng)建 SortStudent 類的對象,所以空( 6) 處為 SortStudent ss 。試題六閱讀以下說明和Java代碼,將應(yīng)填入(n)處的語句或語句成分
28、寫在答題紙的對應(yīng)欄內(nèi)?!菊f明】30%的學(xué)生。某數(shù)據(jù)文件students.txt的內(nèi)容為100名學(xué)生的學(xué)號和成績,下面的程序?qū)⑽募械臄?shù)據(jù)全部讀入對象數(shù)組,按分數(shù)從高到低進行排序后,選出排名前Java代碼】class Student private String aNO; private int Credit; public int getCxedit()( return Credit;public String toString( return *sNO - * + thia aNO + Credit = " + this .Credit;student(String sNO, in
29、t Credit)(1 sNOj<2)- Credit;.public class Sortstudent fvoid sortStudentI s) f /Sort the srray s in descending order of Creditfor int i = 0; i < s,length-1; i+) for int j - i+1; 3 < sUer.gth; j+l if ati -< sf-IK (43) fStudent tnp - slU ;3(il = sfjl;9【71 - tmp;public static void main(Strin
30、g argv) StudentJ tegtStudent * new StudentsizeJ;try iBl3f feredHeader in new BufferedHe:ader (new FileReadei: ('students.txt J) jboolean done » false; int 1 = Ofwhile (!done String s - in, readLine (J r/每次讀取牛學(xué)生的學(xué)號和成績if (5 null!(String tmp1 - s.split; teatstudenti+=(tmp0,Integer,parselnttmpl
31、J J;J elsedone - true;in.close U;(S)new SoitStudeiit );s5-B0TtstStudent) iSystem,out.prlntlnf"top 301;for (int j 0; j < size * Q-3; j + + Systtfli.QUt ,prtftt;Ln (teatStudHt ); t catci (jOExcept ion a)(System.out .printin C'*ip error!");)catch W'jinherForniatlixception e 1System .out.pr i ntln ("not a noinber J"); int size - 100; /學(xué)生總數(shù)(1)this.sNO(2) this.Credit(3) getCredit()(4) getCredit()(5) new Student(6) Sort
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高端住宅裝修包工包料合同范本
- 精裝房臺面改造方案
- 網(wǎng)絡(luò)抽簽面試題及答案
- 母嬰護理考試題及答案
- 水彩臨摹考試題及答案
- 夜市火災(zāi)處置預(yù)案方案
- 2026版《全品高考》選考復(fù)習(xí)方案生物806 第25講 體液調(diào)節(jié)與神經(jīng)調(diào)節(jié)的關(guān)含答案
- 學(xué)校周邊攤點飲食健康現(xiàn)狀與對策分析
- 營銷策劃方案執(zhí)行
- 市區(qū)廢棄廠房拆除方案
- 高校各級黨組織和廣大黨員在網(wǎng)絡(luò)空間發(fā)揮作用研究
- 2025年 濟南綜??毓杉瘓F有限公司招聘考試試卷附答案
- 中國混凝土攪拌站行業(yè)發(fā)展前景及發(fā)展策略與投資風險研究報告2025-2028版
- 2025年云南省中考化學(xué)真題(解析版)
- 2025年人工智能基礎(chǔ)及應(yīng)用考試試題及答案
- 化妝初期培訓(xùn)課件
- 2025年東航食品招聘筆試參考題庫含答案解析
- 公司業(yè)績考核管理制度
- 餐廳運營與管理制度
- DB31/T 908-2018地理標志產(chǎn)品松江大米
- 教育改革背景下的中醫(yī)師承教育新思路
評論
0/150
提交評論