2012年上半年程序員下午題_第1頁(yè)
2012年上半年程序員下午題_第2頁(yè)
2012年上半年程序員下午題_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余4頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、2012上半年程序員真題下午題試題一(共15分)閱讀以下說(shuō)明和流程圖,填補(bǔ)流程圖中的空缺(1)(5).將解答填入答題紙的對(duì)應(yīng) 欄內(nèi)?!菊f(shuō)明】己知數(shù)組Al:n中各個(gè)元素的值都是非零整數(shù).其中有些元素的值是相同的(重復(fù))。 為刪除其中重復(fù)的值,可先通過(guò)以F流程圖找出所有的重復(fù)值,并對(duì)所有重復(fù)值賦0標(biāo)記. 該涼程圖采用了雙重循環(huán).處理恿路:如果數(shù)組A某個(gè)元素的值在前面曾出現(xiàn)過(guò).則該元素賦標(biāo)記值0例如.假 設(shè)數(shù)組A的各元素之值依次為2, 5, 5, 1, 2, 5, 3.則經(jīng)過(guò)該流程圖處理后,各元素之值 依次為 2 5, 0. 1, 0, 0. 3.【涼程圖】試題二(共15分)閱讀以卜說(shuō)明、C程序代碼

2、和問(wèn)題1至問(wèn)題乳將解答寫在答題紙的對(duì)應(yīng)欄內(nèi).【說(shuō)明1】設(shè)在某C系統(tǒng)中為毎個(gè)字待型數(shù)據(jù)分配1個(gè)字節(jié),為毎個(gè)整型(int)數(shù)據(jù)分配4個(gè)字 節(jié).為每個(gè)指針?lè)峙?個(gè)字節(jié),sizeof(x)用于計(jì)算為x分配的字節(jié)數(shù).【C代碼】include <stdio.h>"include <string.h>int main() int arr(5H10# 20, 30;char mystr(=MJustAtestn"char eptr=mystr;printfC%d %d %dnMf sizeof(int)# sizeof(unsigned int), strlen(a

3、rr);printff*%d %dn", sizeof(char), sizeof(mystr);printff*%d %d %dn* sizeof(ptr), sizeof(*ptr)# strlen(ptr); return 0;)【說(shuō)明2】const是C語(yǔ)言的一個(gè)關(guān)鍵字,可以用來(lái)定義“只讀”壁變雖。【問(wèn)題1】(8分)詩(shī)寫出以上C代碼的運(yùn)行結(jié)果?!締?wèn)題2】(4分)(1) 請(qǐng)定義一個(gè)“只讀”型的整型常S size,并將其值初始化為10:(2) 請(qǐng)定義一個(gè)指向整型變雖a的指針ptr.使得ptr的值不陡修改.而ptr所指向的 目標(biāo)變雖的值可以修改(即可以通過(guò)ptr間接修改整型變呈a的值

4、人注:無(wú)需給出整型變雖a的定義.【問(wèn)題3】(3分)某C程序文件中定義的換數(shù)£如下所示,請(qǐng)簡(jiǎn)要說(shuō)明其中static的作用,以及形參表“const int arr( * 中 const 的作用.static int f(const int arr()/函數(shù)體內(nèi)的語(yǔ)句省略7試題三(共15分)閱讀以下說(shuō)明和C函數(shù).填補(bǔ)C函數(shù)中的空缺(1)(6).將解答寫在答題紙的對(duì)應(yīng) 欄內(nèi).【說(shuō)明】tfinumberOfwords(char message)的功能是計(jì)算存儲(chǔ)在message字符數(shù)組中的一段英 文語(yǔ)句中的單詞數(shù)目,輸出每個(gè)單詞(單詞長(zhǎng)度超過(guò)20時(shí)僅輸出其前20個(gè)字母).并計(jì)算 每個(gè)英文字母出現(xiàn)

5、的次數(shù)(即頻數(shù)),字母計(jì)數(shù)時(shí)不區(qū)分大小寫.假設(shè)英文語(yǔ)句中的單詞合乎規(guī)范(此處不考慮單詞的正確性),單詞不縮寫或省略,即 不會(huì)出現(xiàn)類似don-t形式的詞.單詞之后都為空格或標(biāo)點(diǎn)符號(hào).的數(shù)中判定單詞的規(guī)則是:(1)一個(gè)英文字母串是單詞:(2)一個(gè)數(shù)字串是單詞:(3)表示名詞所有格的撤號(hào)0與對(duì)應(yīng)的單詞看作是一個(gè)單詞.除上述規(guī)則外.其他情況概不考電.例如.句子 MThe 1990's witnessed many changes in people's concepts of conservation. ” 中 有10個(gè)單詞,輸出如下:The1990'switnessedman

6、ychangesinpeople'sconceptsofconservation聞數(shù)numberOfwords中用到的部分標(biāo)準(zhǔn)庫(kù)換數(shù)如下表所述.兩數(shù)原型說(shuō)明int islower(int ch);若ch表示一個(gè)小寫英文字母.則返回一個(gè)非0整數(shù),否則返回0int isupper(int ch);若ch表示一個(gè)大寫英文字母.則返回一個(gè)非0蔡數(shù),否則返回0int isalnum(int ch);若ch表示一個(gè)英文字母或數(shù)字字符,則返回一個(gè)非0整數(shù),否則返回0int isalpha(int ch);若ch表示一個(gè)英文字母.則返回一個(gè)非0整數(shù),否則返回0int isdigit(int ch);若

7、ch表示一個(gè)數(shù)字字符.則返回一個(gè)非0整數(shù).否則返回0【C函數(shù)】int numberOfwords (char messaged)char wordbuffer21, i=0:/* i 用作 wordbuffer 的下標(biāo)/(1) pstr;int ps26)=0;/ ps(0用于表示字母'A或0的頻數(shù)/ps用于表示字母®或b的頻數(shù),依此類推/int wordcounter=0:pstr=message;while (*pstr) f( (2) (*ostrD /調(diào)用旳數(shù)判定是否為一個(gè)單詞的開(kāi)頭字符/i=0;do/將一個(gè)單詞的字符逐個(gè)存入wordbufferd并進(jìn)行字母計(jì)數(shù)*/

8、wordbufferi+=*pstr;if (isalpha (*pstr) if( ( 3) ( pstr) ps(*pstr-'a'+;else pslpstr-'A'*;(4) ;/* pstr指向下一字符/while (i<20 && (isalnum(*pstr)| | pstr=,");if(i>=20) /處理超長(zhǎng)單詞(含名詞所有格形式/while (isalnum (*pstr)| | *pstr='") pstr+;)(5) ='0:/設(shè)迓暫存在wordbuffer中的單詞結(jié)尾/w

9、ordcounter"; /單詞計(jì)數(shù)/puts (wordbuffer); /* 輸岀單詞/ :/* pstr指向下一字符/return wordcounter;試題四(共15分)閱讀以下說(shuō)明和C函數(shù).填補(bǔ)C兩數(shù)中的空缺(1)(5),將解答寫在答題紙的對(duì)應(yīng) 欄內(nèi).【說(shuō)明】曲數(shù)SetDiff(LA,LB)的功陡是將LA與LB中的共有元素從LA中刪除,使得LA中僅保留與 LB不同的元素,而LB不變,LA和LB為含頭結(jié)點(diǎn)的單鏈表的頭指針.例如,單鏈表LA、LB的示例如下圖中的(a)、(b)所示,刪除與LB共有的元素后的 LA如F圖中的(C)所示.試題四<15分閱讀以下說(shuō)明和C的數(shù).埔

10、補(bǔ)C函數(shù)中的空缺<1) <5>>梅解答寫在答題紙的對(duì)應(yīng) 欄內(nèi).【說(shuō)明】由數(shù)SetDiff(LAAB)的功能是梅LA與LB中的共有元素從LA中刪除.使得LA中僅保留與 LB不同的元素.而LB不變.LA和LB為含頭結(jié)點(diǎn)的怕鏈表的頭捋針例如.單鏈表LA. LB的示例如F圖中的<a>.(b>所示.SH除與LB兀有的元素后的 LA如2陽(yáng)中的<C>所示。儀友 的結(jié)點(diǎn)類型主文如下typedef struct Node int data;struct Node *next;Node# LinkList;函數(shù) SetDiff(UnkUst LA, LinkL

11、ist LB)的處理也路如下z("從LA的第一個(gè)元素結(jié)點(diǎn)開(kāi)始.令LA的第一個(gè)元素為當(dāng)前元素.(2) 在LB中進(jìn)行順序査找.査找與3的當(dāng)前元素相同者.方法是令3的當(dāng)前元素先 與LB的第一個(gè)元索進(jìn)行比較.若相等.則結(jié)束在LB中的査找過(guò)程.否則繼續(xù)與LB的卜一 個(gè)元彖比較朿貝以上過(guò)程克到LB中的某一個(gè)元彖與LA的當(dāng)前元未相等(表明戲找成功人 或者到達(dá)LB的表尾(表明査找失敗)為止.(3) 結(jié)束在LB表的一次査找后.若在LB中發(fā)現(xiàn)了與LA的當(dāng)前元素相同者.則刪除LA的當(dāng)前元素.否則保留LA的當(dāng)前元素。(4) 取LA的下一個(gè)元素為當(dāng)前元素瑜復(fù)(2). (3).血到LA的農(nóng)加【C函數(shù)】void

12、SetDiff (UnkList LA, LinkList LB)LinkList pre, pa, pb;廠pa用于指向職鏈表LA的當(dāng)前元索結(jié)點(diǎn).pre指向"所指元索的前殛 V/ pb 0J于折問(wèn)簞鏈衣LB的元索餡點(diǎn)/(1;廠開(kāi)始時(shí)令"指向LA的第一個(gè)元素/pre=LA;while (pa) pb=LB->next;/莊LB中戲找與LA的當(dāng)帕元素相同祈克到找到喊不到達(dá)表尾 Vwhile( (2)if (pa >data=pb->data)break; :If(lpb) P若任LB中沒(méi)有找到與LA中當(dāng)前尤素相同者.則繼續(xù)考察LA的后續(xù)尤素/prepa;pa

13、»pa->next;elser 若住LB中找到與LA的當(dāng)前元索相同打.則IM除LA的當(dāng)前尤素 V pre->next= (4);free (pa);p=(5);試題五(共15分)閱讀以下說(shuō)明和C*代碼填補(bǔ)O+代碼中的空缺(1)(6).將解答寫在答題紙的 對(duì)應(yīng)欄內(nèi)【說(shuō)明】已知某公可按周給員工發(fā)放工資.其工資系統(tǒng)需記錄每名員工的員工號(hào).姓名、工資等 信息.其中一些員工是止式的按年嶄分周發(fā)放(每年按52周計(jì)算):另一蘭員工是計(jì)時(shí)工. 以小時(shí)工資為基準(zhǔn).按毎周工作小時(shí)數(shù)核鼻發(fā)放。下面是實(shí)現(xiàn)該工資系統(tǒng)的C*代碼.其中定義了四個(gè)類:工資系統(tǒng)類PayRoll.員工類 Employee.

14、正式工類 Salaried 和計(jì)時(shí)工類 Hourlyt Salaried 和 Hourly 是 Employee 的 Jp類 【C卄代碼】頭文件和域名空間略 const int EMPLOYEE_NUM=5; class Employee 員工號(hào)員工姓名周發(fā)放工資protected:int empCode;string name; double salary; public:Employee(const int empCode, const string &name ) this->empCode=empCode; this->name=name;virtual Emplo

15、yee()virtual void pay()=0;double getSalary() return this>salary; ;class Salaried(1)private:double payRate; 年嶄public:Salaried(const int empCode, const string &namet double payRate):Employee (empCode, name) this->payRate=payRate;計(jì)算正式員工的周發(fā)放工資數(shù)void pay()this->salary= (2): cout«this->

16、;name « M:M «this->salary«endl;;class Hourly private:double payRate; int hours;小時(shí)工資數(shù) 周工作小時(shí)數(shù)public:Hourly (const int empCode const string &name, int hours, double payRate) :EmployeeCempCode, name) this->payRate=payRate; this->hours=hours;void pay() th is->sa I a ry= (4): 計(jì)算計(jì)時(shí)工的周發(fā)放工資數(shù)cout« this->name «« this->salary « endl;class Pay Roll public:void pay (Employeeee()(for (int i=0; ivEMPLOYEE.NUM; i*+) ei->pay();int main() Pay Roll payRolhnew PayRoll;(5) employees EMPLOYEE_NUM= new sa

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論