⑴ 初級程序員考試內容
主要考試科目是兩科:上午是綜合知識,75道單選題;下午是應用技術,5道案例題,主要考流程圖1題,C語言3題,C++和JAVA二選一,以填空題和選擇題為主。
⑵ 求2011年九月以及以前的計算機二級考試C語言試題及答案、以及考試內容分析和解題技巧。記住只要C的。
(1)下面敘述正確的是________。
A)演算法的執行效率與數據的存儲結構無關
B)演算法的空間復雜度是指演算法程序中指令(或語句)的條數
C)演算法的有窮性是指演算法必須能在執行有限個步驟之後終止
D)演算法的時間復雜度是指執行演算法程序所需要的時間
(1)C
知識點:演算法的基本概念;演算法復雜度的概念和意義(時間復雜度與空間復雜度)
評 析:演算法的設計可以避開具體的計算機程序設計語言,但演算法的實現必須藉助程序設計語言中提供的數據類型及其演算法。數據結構和演算法是計算機科學的兩個重要支柱。它們是一個不可分割的整體。演算法在運行過程中需輔助存儲空間的大小稱為演算法的空間復雜度。演算法的有窮性是指一個演算法必須在執行有限的步驟以後結束。演算法的時間復雜度是指執行演算法所需要的計算工作量,即演算法執行過程中所需要的基本運算次數。
(2)以下數據結構屬於非線性數據結構的是________。
A)隊列 B)線性表 C)二叉樹 D)棧
(2)C
知識點:棧和隊列的定義;棧和隊列的順序存儲結構及其基本運算
評 析:線性表、棧和隊列等數據結構所表達和處理的數據以線性結構為組織形式。棧是一種特殊的線性表,這種線性表只能在固定的一端進行插入和刪除操作,允許插入和刪除的一端稱為棧頂,另一端稱為棧底。一個新元素只能從棧頂一端進入,刪除時,只能刪除棧頂的元素,即剛剛被插入的元素。所以棧又稱後進先出表(Last In First Out)。隊列可看作是插入在一端進行,刪除在另一端進行的線性表,允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。在隊列中,只能刪除隊頭元素,隊列的最後一個元素一定是最新入隊的元素。因此隊列又稱先進先出表(First In First Out)。二叉樹的數據結構是樹型結構,結構中數據元素之間存在著一對多的關系,因此它是一種非線性數據結構。
(3)在一棵二叉樹上第8層的結點數最多是________。
A)8 B)16 C)128 D)256
(3)C
知識點:二叉樹的定義及其存儲結構
評 析:根據二叉樹的性質:二叉樹第i(I>1)層上至多有2i-1個結點。得到第8層的結點數最多是128。
(4)下面描述中,不符合結構化程序設計風格的是________。
A)使用順序、選擇和重復(循環)三種基本控制結構表示程序的控制邏輯
B)自頂向下
C)注重提高程序的執行效率
D)限制使用goto語句
(4)C
知識點:結構化程序設計
評 析:結構化程序設計方法的四條原則是:1.自頂向下:2.逐步求精;3.模塊化;4.限制使用goto語句。「自頂向下」是說,程序設計時,應先考慮總體,後考慮細節,先考慮全局目標,後考慮局部目標;「逐步求精』』是說,對復雜問題,應設計一些子目標作過渡,逐步細節化;「模塊化」是說,一個復雜問題肯定是由若干稍簡單的問題構成,解決這個復雜問題的程序,也應對應若干稍簡單的問題,分解成若干稍小的部分。
(5)下面概念中,不屬於面向對象方法的是________。
A)對象、消息 B)繼承、多態 C)類、封裝 D)過程調用
(5)D
知識點:面向對象的程序設計方法、對象、方法、屬性及繼承與多態性
評 析:面向對象方法是一種運用對象、類、封裝、繼承、多態和消息等概念來構造、測試、重構軟體的方法。面向對象方法從對象出發,發展出對象、類、消息、繼承等概念。
(6)在結構化方法中,用數據流程圖(DFD)作為描述工具的軟體開發階段是________。
A)可行性分析 B)需求分析 C)詳細設計 D)程序編碼
(6)B
知識點:結構化設計方法
評 析:軟體開發階段包括需求分析、總體設計、詳細設計、編碼和測試五個階段。其中需求分析階段常用的工具是數據流程圖和數據字典。
(7)軟體生命周期中所花費用最多的階段是________。
A)詳細設計 B)軟體編碼 C)軟體測試 D)軟體維護
(7)D
知識點:軟體工程基本概念,軟體生命周期概念,軟體工具與軟體開發環境
評 析:軟體生命周期分為軟體定義、軟體開發及軟體運行維護3個階段。本題中詳細設計、軟體編碼和軟體測試都屬於軟體開發階段;維護是軟體生命周期的最後一個階段,也是持續時間最長,花費代價最大的一個階段,軟體工程學的一個目的就是提高軟體的可維護性,降低維護的代價。
(8)資料庫系統的核心是________。
A)數據模型 B)DBMS C)軟體工具 D)資料庫
(8)B
知識點:資料庫的基本概念:資料庫,資料庫管理系統,資料庫系統
評 析:資料庫管理系統DBMS是資料庫系統的核心。DBMS是負責資料庫的建立、使用和維護的軟體。DBMS建立在操作系統之上,實施對資料庫的統一管理和控制。用戶使用的各種資料庫命令以及應用程序的執行,最終都必須通過DBMS。另外,DBMS還承擔著資料庫的安全保護工作,按照DBA所規定的要求,保證資料庫的完整性和安全性。
(9)下列敘述中正確的是________。
A)數據處理是將信息轉化為數據的過程
B)資料庫設計是指設計資料庫管理系統
C)如果一個關系中的屬性或屬性組並非該關系的關鍵字,但它是另一個關系的關鍵
字,則稱其為本關系的外關鍵字
D)關系中的每列稱為元組,一個元組就是一個欄位
(9)C
知識點:數據模型,實體聯系模型及E-R圖,從E-R圖導出關系數據模型
評 析:數據處理是指將數據轉換成信息的過程,故選項A敘述錯誤;設計資料庫的目的實質上是設計出滿足實際應用需求的實際關系模型,故選項B敘述錯誤;關系中的行稱為元組,對應存儲文件中的記錄,關系中的列稱為屬性。對應存儲文件中的欄位,故D選項敘述錯誤。
(10)下列模式中,_______是用戶模式。
A)內模式 B)外模式 C)概念模式 D)邏輯模式
(10)B
知識點:資料庫的基本概念:資料庫,資料庫管理系統,資料庫系統
評 析:資料庫管理系統的三級模式結構由外模式、模式和內模式組成。外模式,或稱子模式,或稱用戶模式,是指資料庫用戶所看到的數據結構,是用戶看到的數據視圖。模式,或稱邏輯模式,是資料庫中對全體數據的邏輯結構和特性的描述,是所有用戶所見到的數據視圖的總和。外模式是模式的一部分。內模式,或稱存儲模式,或稱物理模式,是指數據在資料庫系統內的存儲介質上的表示。即對數據的物理結構和存取方式的描述。
36)演算法的時間復雜度是指_______。
A)執行演算法程序所需要的時間
B)演算法程序的長度
C)演算法執行過程中所需要的基本運算次數
D)演算法程序中的指令條數
(36)C
知識點:演算法復雜度的概念和意義(時問復雜度與空間復雜度)
評析:所謂演算法的時間復雜度,是指執行演算法所需要的計算工作量。為了能夠比較客觀地反映出一個演算法的效率,在度量一個演算法的工作量時,不僅應該與所使用的計算機、程序設計語言以及程序編制者無關,而且還應該與演算法實現過程中的許多細節無關。為此,可以用演算法在執行過程中所需基本運算的執行次數來度量演算法的工作量。
(37)下列敘述中正確的是_______。
A)線性表是線性結構 B)棧與隊列是非線性結構
C)線性鏈表是非線性結構 D)二叉樹是線性結構
(37)A
知識點:線性結構與非線性結構的概念
評析:根據數據結構中各數據元素之間相關聯關系的復雜程度,一般將數據結構分為兩大類型:線性結構與非線性結構。如果一個非空的數據結構滿足下列兩個條件: (1)有且只有一個根結點; (2)每一個結點最多有一個前件,也最多有一個後件。則稱該數據結構為線性結構,又稱線性表。所以線性表、棧與隊列、線性鏈表都是線性結構,而二叉樹是非線性結構。
(38)下面關於完全二叉樹的敘述中,錯誤的是_______。
A)除了最後一層外,每一層上的結點數均達到最大值
B)可能缺少若干個左右葉子結點
C)完全二叉樹一般不是滿二叉樹
D)具有結點的完全二叉樹的深度為[log2n]+l
(38)B
知識點:二叉樹的定義及其存儲結構
評析:這里考察完全二又樹與滿二叉樹的定義及二叉樹的性質。滿二叉樹指除最後一層外每一層上所有結點都有兩個子結點的二叉樹。完全二叉樹指除最後一層外,每一層上的結點數均達到最大值,在最後一層上只缺少右邊的若乾子結點(葉子結點)的二叉樹。因此選項A是正確的,而選項B是錯誤的。由定義可知,滿二叉樹肯定是完全二又樹,而完全二又樹一般不是滿二叉樹,因此選項c是正確的敘述。選項D即二又樹性質(5),也是正確的。
(39)結構化程序設計主要強調的是_______。
A)程序的規模 B)程序的易讀性
C)程序的執行效率 D)程序的可移植性
(39)B
知識點:結構化程序設計
評析:結構化程序設計主要強調的足結構化程序清晰易讀,可理解性好,程序員能夠進行逐步求精、程序證明和測試.以保證程序的正確性。
(40)在軟體生命周期中,能准確地確定軟體系統必須做什麼和必須具備哪些功能的階段是_______。
A)概要設計 B)詳細設計 C)可行性分析 D)需求分析
(40)D
知識點:軟體工程基本概念,軟體生命周期概念,軟體工具與軟體開發環境
評析:通常,將軟體產品從提出、實現、使用維護到停止使用退役的過程稱為軟體生命周期。也就是說,軟體產品從考慮其概念開始,到該軟體產品不能使用為止的整個時期都屬於軟體生命周期。軟體生命周期的主要活動階段為:
① 可行性研究和計劃制定。確定待開發軟體系統的開發目標和總的要求,給出它的功能、性能、可靠性以及介面等方面的可行方案,制定完成開發任務的實施計劃。
②需求分析。對待開發軟體提出的需求進行分析並給出詳細定義,即准確地確定軟體系統的功能。編寫軟體規格說明書及初步的用戶手冊,提交評審。
③軟體設計。系統設計人員和程序設計人員應該在反復理解軟體需求的基礎上,給出軟體的結構、模塊的劃分、功能的分配以及處理流程。
④軟體實現。把軟體設計轉換成計算機可以接受的程序代碼。即完成源程序的編碼,編寫用戶手冊、操作手冊等面向用戶的文檔,編寫單元測試計劃。
⑤軟體測試。在設計測試用例的基礎上,檢驗軟體的各個組成部分。編寫測試分析報告。
⑥運行和維護。將已交付的軟體投入運行,並存運行使用中不斷地維護,根據新提出的需求進行必要而且可能的擴充和刪改。
(41)數據流圖用於抽象描述一個軟體的邏輯模型,數據流圖由一些特定的圖符構成。下列圖符名標識的圖符不屬於數據流圖合法圖符的是_______。
A)控制流 B)加工 C)數據存儲 D)源和潭
(41)A
知識點:結構化分析方法,數據流圖,數據字典,軟體需求規格說明書
評析:數據流圖從數據傳遞和加工的角度,來刻畫數據流從輸入到輸出的移動變換過程。數據流圖中的主要圖形元素有:加工(轉換)、數據流、存儲文件(數據源)、源和潭。
(42)軟體需求分析一般應確定的是用戶對軟體的_______。
A)功能需求 B)非功能需求 C)性能需求 D)功能需求和非功能需求
(42)D
知識點:結構化設計方法
評析:軟體需求分析中需要構造一個完全的系統邏輯模型,理解用戶提出的每一功能與性能要求,是用戶明確自己的任務。因此,需求分析應確定用戶對軟體的功能需求和非功能需求。
(43)下述關於資料庫系統的敘述中正確的是_______。
A)資料庫系統減少了數據冗餘
B)資料庫系統避免了一切冗餘
C)資料庫系統中數據的一致性是指數據類型的一致
D)資料庫系統比文件系統能管理更多的數據
(43)A
知識點:資料庫的基本概念:資料庫,資料庫管理系統,資料庫系統
評析:由於數據的集成性使得數據可為多個應JH=j所共享,特別是在網路發達的今天,資料庫與網路的結合擴大了數據關系的應用范圍。數據的共享自身義可極大地減少數據冗餘性,不僅減少了不必要的存儲空間,更為重要的是可以避免數據的不一致性。所謂數據的一致性是指在系統中同一數據的不同出現應保持相同的值,而數據的不一致性指的是同一個數據在系統的不同拷貝處有不同的值。
(44)關系表中的每一橫行稱為一個_______。
A)元組 B)欄位 C)屬性 D)碼
(44)A
知識點:資料庫的基本概念:資料庫.資料庫管理系統,資料庫系統
評析:在關系資料庫中,關系模型採用二維表來表示,簡稱「表」。二維表是由表框架及表元組組成。在表框架中,按行可以存放數據,每行數據稱為元組。
(45)資料庫設計包括兩個方面的設計內容,它們是_______。
A)概念設計和邏輯設計 B)模式設計和內模式設計
C)內模式設計和物理設計 D)結構特性設計和行為特性設計
(45)A
知識點:資料庫設計方法和步驟:需求分析、概念設計、邏輯設計和物理設計的相關策略
評析:資料庫設計可分為概念設計與邏輯設計。資料庫概念設計的目的是分析數據問內存語義關聯,在此基礎上建立一個數據的抽象模型。資料庫邏輯設計的主要工作是將E-R圖轉換為指定的RDBMS中的關系模型。
(61)字元(char)型數據在微機內存中的存儲形式是________。
A)反碼 B)補碼
C)EBCDIC碼 D)ASCII碼
(61)D
知識點:字元數據在內存中的存儲形式
評析:將一個字元常量放到一個字元變數中,實際上並不是把該字元本身放到內存單元中去,而是將該字元的ASCII碼值放到存儲單元中。
71)演算法的空間復雜度是指_______。
A)演算法程序的長度 B)演算法程序中的指令條數
C)演算法程序所佔的存儲空間 D)演算法執行過程中所需要的存儲空間
(71)D
知識點:演算法的復雜度
評析:一個演算法的空間復雜度,一般是指執行這個演算法所需的內存空間。
一個演算法所佔用的存儲空間包括演算法程序所佔的空間、輸入的初始數據所佔的存儲空間以及演算法執行過程中所需要的額外空間。
(72)下列關於棧的敘述中正確的是_______。
A)在棧中只能插入數據 B)在棧中只能刪除數據
C)棧是先進先出的線性表 D)棧是先進後出的線性表
(72)D
知識點:棧的輸入輸出操作
評析:棧是限定在一端進行插入與刪除的線性表。
棧是按照「先進後出」的或「後進先出」的原則組織數據的,因此,棧也被稱為「先進後出」表或「後進先出」表。
(73)在深度為5的滿二叉樹中,葉子結點的個數為_______。
A)32 B)31 C)16 D)15
(73)C
知識點:二叉樹的概念
評析:所謂滿二叉樹是指除最後一層外,每層上的所有結點都有兩個子結點。也就是說,在滿二又樹中,每一層上的結點數都達到最大值,即在滿二叉樹的第K層上有2k-1個結點,且深度為m的滿二叉樹有2m個結點。
在滿二叉樹中,最後一層的結點個數就是葉子結點的個數,本題中深度為5,故葉子結點數為25-1=24==16。
(74)對建立良好的程序設計風格,下面描述正確的是_______。
A)程序應簡單、清晰、可讀性好 B)符號名的命名要符合語法
C)充分考慮程序的執行效率 D)程序的注釋可有可無
(74)A
知識點:程序設計風格
評析:要形成良好的程序設計風格,主要應注重和考慮下述一些因素:符號名的命名應具有一定的實際含義,以便於對程序功能的理解;正確的注釋能夠幫助讀者理解程序;程序編寫應優先考慮清晰性,除非對效率有特殊要求,程序編寫要做到清晰第一,效率第二。
(75)下面對對象概念描述錯誤的是_______。
A)任何對象都必須有繼承性 B)對象是屬性和方法的封裝體
C)對象問的通訊靠消息傳遞 D)操作是對象的動態性屬性
(75)A
知識點:對象的概念
評析:對象是由數據和容許的操作組成的封裝體,與客觀實體有直接的對應關系。對象之間通過傳遞消息互相聯系,以模擬現實世界中不同事物彼此之間的聯系。
(76)下面不屬於軟體工程的3個要素的是_______。
A)工具 B)過程 C)方法 D)環境
(76)D
知識點:軟體:[程的要素
評析:軟體工程包括3個要素,即方法、工具和過程。
(77)程序流程圖(PFD)中的箭頭代表的是_______。
A)數據流 B)控制流 C)調用關系 D)組成關系
(77)B
知識點:軟體設計工具
評析:程序流程圖(PFD)是一種傳統的、應用廣泛的軟體過程設計表示工具,通常也稱為程序框圖,其箭頭代表的是控制流。
(78)在數據管理技術的發展過程中,經歷了人工管理階段、文件系統階段和資料庫系統階段。其中數據獨立性最高的階段是_______。
A)資料庫系統 B)文件系統 C)人工管理 D)數據項管理
(78)A
知識點:數據管理技術的發展
評析:在數據管理技術的發展過程中,經歷了人工管理階段、文件系統階段和資料庫系統階段。其中數據獨立性最高的階段是資料庫系統。
⑶ 75道程序員面試邏輯測試題(附答案)(1)
【1】 假設有一個池塘,裡面有無窮多的水。現有2個空水壺,容積分別為5升和6升。問題是如何只用這2個水壺從池塘里取得3升的水。
由滿6向空5倒,剩1升,把這1升倒5里,然後6剩滿,倒5裡面,由於5裡面有1升水,因此6隻能向5倒4升水,然後將6剩餘的2升,倒入空的5裡面,再灌滿6向5里倒3升,剩餘3升。
【2】 周雯的媽媽是豫林水泥廠的化驗員。一天,周雯來到化驗室做作業。做完後想出去玩。"等等,媽媽還要考你一個題目,"她接著說,"你看這6隻做化驗用的玻璃杯,前面3隻盛滿了水,後面3隻是空的。你能只移動1隻玻璃杯,就便盛滿水的杯子和空杯子間隔起來嗎?"愛動腦筋的周雯,是學校里有名的"小機靈",她只想了一會兒就做到了。請你想想看,"小機靈"是怎樣做的?
設杯子編號為ABCDEF,ABC為滿,DEF為空,把B中的水倒進E中即可。
【3】 三個小夥子同時愛上了一個姑娘,為了決定他們誰能娶這個姑娘,他們決定用手槍進行一次決斗。小李的命中率是30%,小黃比他好些,命中率是50%,最出色的槍手是小林,他從不失誤,命中率是100%。由於這個顯而易見的事實,為公平起見,他們決定按這樣的順序:小李先開槍,小黃第二,小林最後。然後這樣循環,直到他們只剩下一個人。
那麼這三個人中誰活下來的機會最大呢?他們都應該採取什麼樣的策略?
小林在輪到自己且小黃沒死的條件下必殺黃,再跟菜鳥李單挑。
所以黃在林沒死的情況下必打林,否則自己必死。
小李經過計算比較(過程略),會決定自己先打小林。
於是經計算,小李有873/2600≈33.6%的生機;
小黃有109/260≈41.9%的生機;
小林有24.5%的生機。
哦,這樣,那小李的第一槍會朝天開,以後當然是打敵人,誰活著打誰;
小黃一如既往先打林,小林還是先幹掉黃,冤家路窄啊!
最後李,黃,林存活率約38:27:35;
菜鳥活下來抱得美人歸的幾率大。
李先放一空槍(如果合夥干中林,自己最吃虧)黃會選林打一槍(如不打林,自己肯定先玩完了)林會選黃打一槍(畢竟它命中率高)李黃對決0.3:0.280.4可能性李林對決0.3:0.60.6可能性成功率0.73
李和黃打林李黃對決0.3:0.40.7 0.4可能性李林對決0.3:0.7 0.6 0.70.7 0.6可能性成功率0.64
【4】 一間囚房裡關押著兩個犯人。每天監獄都會為這間囚房提供一罐湯,讓這兩個犯人自己來分。起初,這兩個人經常會發生爭執,因為他們總是有人認為對方的湯比自己的多。後來他們找到了一個兩全其美的辦法:一個人分湯,讓另一個人先選。於是爭端就這么解決了。可是,現在這間囚房裡又加進來一個新犯人,現在是三個人來分湯。必須尋找一個新的方法來維持他們之間的和平。該怎麼辦呢?按:心理問題,不是邏輯問題
是讓甲分湯,分好後由乙和丙按任意順序給自己挑湯,剩餘一碗留給甲。這樣乙和丙兩人的總和肯定是他們兩人可拿到的最大。然後將他們兩人的湯混合之後再按兩人的方法再次分湯。
【5】 在一張長方形的桌面上放了n個一樣大小的圓形硬幣。這些硬幣中可能有一些不完全在桌面內,也可能有一些彼此重疊;當再多放一個硬幣而它的圓心在桌面內時,新放的硬幣便必定與原先某些硬幣重疊。請證明整個桌面可以用4n個硬幣完全覆蓋。
要想讓新放的硬幣不與原先的硬幣重疊,兩個硬幣的圓心距必須大於直徑。也就是說,對於桌面上任意一點,到最近的圓心的距離都小於2,所以,整個桌面可以用n個半徑為2的硬幣覆蓋。
把桌面和硬幣的尺度都縮小一倍,那麼,長、寬各是原桌面一半的小桌面,就可以用n個半徑為1的硬幣覆蓋。那麼,把原來的桌子分割成相等的4塊小桌子,那麼每塊小桌子都可以用n個半徑為1的硬幣覆蓋,因此,整個桌面就可以用4n個半徑為1的硬幣覆蓋。
【6】 一個球、一把長度大約是球的直徑2/3長度的直尺.你怎樣測出球的半徑?方法很多,看看誰的比較巧妙
把球放在平面上,把直尺的一邊卡在平面上,一邊卡在球上,球與尺子的接觸點到平面的距離就是球的半徑.因為直尺長度約為直徑的2/3>半徑,所以能測量.
【7】 五個大小相同的一元人民幣硬幣。要求兩兩相接觸,應該怎麼擺?
底下放一個1,然後2 3放在1上面,另外的4 5豎起來放在1的上面。
【8】 猜牌問題S先生、P先生、Q先生他們知道桌子的抽屜里有16張撲克牌:紅桃A、Q、4黑桃J、8、4、2、7、3草花K、Q、5、4、6方塊A、5。約翰教授從這16張牌中挑出一張牌來,並把這張牌的點數告訴P先生,把這張牌的花色告訴Q先生。這時,約翰教授問P先生和Q先生:你們能從已知的點數或花色中推知這張牌是什麼牌嗎?於是,S先生聽到如下的對話:P先生:我不知道這張牌。Q先生:我知道你不知道這張牌。P先生:現在我知道這張牌了。Q先生:我也知道了。聽罷以上的對話,S先生想了一想之後,就正確地推出這張牌是什麼牌。請問:這張牌是什麼牌? 方塊5
【9】 一個教授邏輯學的教授,有三個學生,而且三個學生均非常聰明!一天教授給他們出了一個題,教授在每個人腦門上貼了一張紙條並告訴他們,每個人的紙條上都寫了一個正整數,且某兩個數的和等於第三個!(每個人可以看見另兩個數,但看不見自己的)教授問第一個學生:你能猜出自己的數嗎?回答:不能,問第二個,不能,第三個,不能,再問第一個,不能,第二個,不能,第三個:我猜出來了,是144!教授很滿意的笑了。請問您能猜出另外兩個人的數嗎?
經過第一輪,說明任何兩個數都是不同的。第二輪,前兩個人沒有猜出,說明任何一個數都不是其它數的兩倍。現在有了以下幾個條件:1.每個數大於02.兩兩不等3.任意一個數不是其他數的兩倍。每個數字可能是另兩個之和或之差,第三個人能猜出144,必然根據前面三個條件排除了其中的一種可能。假設:是兩個數之差,即x-y=144。這時1(x,y>0)和2(x!=y)都滿足,所以要否定x+y必然要使3不滿足,即x+y=2y,解得x=y,不成立(不然第一輪就可猜出),所以不是兩數之差。因此是兩數之和,即x+y=144。同理,這時1,2都滿足,必然要使3不滿足,即x-y=2y,兩方程聯立,可得x=108,y=36。
這兩輪猜的順序其實分別為這樣:第一輪(一號,二號),第二輪(三號,一號,二號)。這樣分大家在每輪結束時獲得的信息是相同的(即前面的三個條件)。
那麼就假設我們是C,來看看C是怎麼做出來的:C看到的是A的36和B的108,因為條件,兩個數的和是第三個,那麼自己要麼是72要麼是144(猜到這個是因為72的話,108就是36和72的和,144的話就是108和36的和。這樣子這句話看不懂的舉手):
假設自己(C)是72的話,那麼B在第二回合的時候就可以看出來,下面是如果C是72,B的思路:這種情況下,B看到的就是A的36和C的72,那麼他就可以猜自己,是36或者是108(猜到這個是因為36的話,36加36等於72,108的話就是36和108的和):
如果假設自己(B)頭上是36,那麼,C在第一回合的時候就可以看出來,下面是如果B是36,C的思路:這種情況下,C看到的就是A的36和B的36,那麼他就可以猜自己,是72或者是0(這個不再解釋了):
如果假設自己(C)頭上是0,那麼,A在第一回合的時候就可以看出來,下面是如果C是0,A的思路:這種情況下,A看到的就是B的36和C的0,那麼他就可以猜自己,是36或者是36(這個不再解釋了),那他可以一口報出自己頭上的36。(然後是逆推逆推逆推),現在A在第一回合沒報出自己的36,C(在B的想像中)就可以知道自己頭上不是0,如果其他和B的想法一樣(指B頭上是36),那麼C在第一回合就可以報出自己的72。現在C在第一回合沒報出自己的36,B(在C的想像中)就可以知道自己頭上不是36,如果其他和C的想法一樣(指C頭上是72),那麼B在第二回合就可以報出自己的108。現在B在第二回合沒報出自己的108,C就可以知道自己頭上不是72,那麼C頭上的唯一可能就是144了。
史上最雷人的應聘者
【10】 某城市發生了一起汽車撞人逃跑事件,該城市只有兩種顏色的車,藍15%綠85%,事發時有一個人在現場看見了,他指證是藍車,但是根據專家在現場分析,當時那種條件能看正確的可能性是80%那麼,肇事的車是藍車的概率到底是多少?
15% 80%/(85%×20%+15% 80%)
【11】 有一人有240公斤水,他想運往乾旱地區賺錢。他每次最多攜帶60公斤,並且每前進一公里須耗水1公斤(均勻耗水)。假設水的價格在出發地為0,以後,與運輸路程成正比,(即在10公里處為10元/公斤,在20公里處為20元/公斤......),又假設他必須安全返回,請問,他最多可賺多少錢?
f(x)=(60-2x)*x,當x=15時,有最大值450。
450×4
【12】 現在共有100匹馬跟100塊石頭,馬分3種,大型馬;中型馬跟小型馬。其中一匹大馬一次可以馱3塊石頭,中型馬可以馱2塊,而小型馬2頭可以馱一塊石頭。問需要多少匹大馬,中型馬跟小型馬?(問題的關鍵是剛好必須是用完100匹馬) 6種結果
【13】 1=5,2=15,3=215,4=2145那麼5=?
因為1=5,所以5=1.
【14】 有2n個人排隊進電影院,票價是50美分。在這2n個人當中,其中n個人只有50美分,另外n個人有1美元(紙票子)。愚蠢的電影院開始賣票時1分錢也沒有。問:有多少種排隊方法使得每當一個擁有1美元買票時,電影院都有50美分找錢
註:1美元=100美分擁有1美元的人,擁有的是紙幣,沒法破成2個50美分
本題可用遞歸演算法,但時間復雜度為2的n次方,也可以用動態規劃法,時間復雜度為n的平方,實現起來相對要簡單得多,但最方便的就是直接運用公式:排隊的種數=(2n)!/[n!(n+1)!]。
如果不考慮電影院能否找錢,那麼一共有(2n)!/[n!n!]種排隊方法(即從2n個人中取出n個人的組合數),對於每一種排隊方法,如果他會導致電影院無法找錢,則稱為不合格的,這種的排隊方法有(2n)!/ (n-1)!(n+1)! 種,所以合格的排隊種數就是(2n)!/[n!n!]- (2n)!/[(n-1)!(n+1)!] =(2n)!/[n!(n+1)!]。至於為什麼不合格數是(2n)!/[(n-1)!(n+1)!],說起來太復雜,這里就不講了。
【15】 一個人花8塊錢買了一隻雞,9塊錢賣掉了,然後他覺得不劃算,花10塊錢又買回來了,11塊賣給另外一個人。問他賺了多少?
2元
【16】 有一種體育競賽共含M個項目,有運動員A,B,C參加,在每一項目中,第一,第二,第三名分別的X,Y,Z分,其中X,Y,Z為正整數且X>Y>Z。最後A得22分,B與C均得9分,B在百米賽中取得第一。求M的值,並問在跳高中誰得第二名。
因為ABC三人得分共40分,三名得分都為正整數且不等,所以前三名得分最少為6分,40=5 8=4 10=2 20=1 20,不難得出項目數只能是5.即M=5.
A得分為22分,共5項,所以每項第一名得分只能是5,故A應得4個一名一個二名.22=5*4+2,第二名得1分,又B百米得第一,所以A只能得這個第二.
B的5項共9分,其中百米第一5分,其它4項全是1分,9=5+1=1+1+1.即B除百米第一外全是第三,跳高第二必定是C所得.
【17】 前提:
1 有五棟五種顏色的房子
2 每一位房子的主人國籍都不同
3 這五個人每人只喝一種飲料,只抽一種牌子的香煙,只養一種寵物
4 沒有人有相同的寵物,抽相同牌子的香煙,喝相同的飲料
提示:1 英國人住在紅房子里
2 瑞典人養了一條狗
3 丹麥人喝茶
4 綠房子在白房子左邊
5 綠房子主人喝咖啡
6 抽PALLMALL煙的人養了一隻鳥
7 黃房子主人抽DUNHILL煙
8 住在中間那間房子的人喝牛奶
9 挪威人住第一間房子
10抽混合煙的人住在養貓人的旁邊
11養馬人住在抽DUNHILL煙的人旁邊
12抽BLUEMASTER煙的人喝啤酒
13德國人抽PRINCE煙
14挪威人住在藍房子旁邊
15抽混合煙的人的鄰居喝礦泉水
問題是:誰養魚???
第一間是黃房子,挪威人住,喝礦泉水,抽DUNHILL香煙,養貓;! f/ [% a: 6 L! J. Q9 x第二間是藍房子,丹麥人住,喝茶,抽混合煙,養馬;+ o8 _0 S) L8 i' E' u第三間是紅房子,英國人住,喝牛奶,抽PALL MALL煙,養鳥;/ N9 o/ n2 M# U" c第四間是綠房子,德國人住,喝咖啡,抽PRINCE煙,養貓、馬、鳥、狗以外的寵物;7 P5 l) G, G, |; C, {7 V第五間是白房子,瑞典人住,喝啤酒,抽BLUE MASTER煙,養狗。
【18】 5個人來自不同地方,住不同房子,養不同動物,吸不同牌子香煙,喝不同飲料,喜歡不同食物。根據以下線索確定誰是養貓的人。
10.養魚的人住在最右邊的房子里。
11.吸萬寶路香煙的人住在吸希爾頓香煙的人和吸「555」香煙的人的中間(緊鄰)
12.紅房子的人愛喝茶。
13.愛喝葡萄酒的人住在愛吃豆腐的人的右邊隔壁。
14.吸紅塔山香煙的人既不住在吸健牌香煙的人的隔壁,也不與來自上海的人相鄰。
15.來自上海的人住在左數第二間房子里。
16.愛喝礦泉水的人住在最中間的房子里。
17.愛吃面條的人也愛喝葡萄酒。
18.吸「555」香煙的人比吸希爾頓香煙的人住的靠右
第一間是蘭房子,住北京人,養馬,抽健牌香煙,喝茅台,吃豆腐;2 G7 x% z0 v; C第二間是綠房子,住上海人,養狗,抽希爾頓,喝葡萄酒,吃面條;% C2 k4 o8 t" p6 L* x第三間是黃房子,住香港人,養蛇,抽萬寶路,喝礦泉水,吃牛肉;& N" S% x# o3 a; g第四間是紅房子,住天津人,抽555,喝茶,吃比薩;7 5 s. J# d, Q/ N% N' O# ]第五間是白房子,住成都人,養魚,抽紅塔山,喝啤酒,吃雞。
【19】 鬥地主附殘局
地主手中牌2、K、Q、J、10、9、8、8、6、6、5、5、3、3、3、3、7、7、7、7
長工甲手中牌大王、小王、2、A、K、Q、J、10、Q、J、10、9、8、5、5、4、4
長工乙手中牌2、2、A、A、A、K、K、Q、J、10、9、9、8、6、6、4、4
三家都是明手,互知底牌。要求是:在三家都不打錯牌的情況下,地主必須要麼輸要麼贏。問:哪方會贏?
無解地主怎麼出都會輸
【20】 一樓到十樓的每層電梯門口都放著一顆鑽石,鑽石大小不一。你乘坐電梯從一樓到十樓,每層樓電梯門都會打開一次,只能拿一次鑽石,問怎樣才能拿到最大的一顆?
先拿下第一樓的鑽石,然後在每一樓把手中的鑽石與那一樓的鑽石相比較,如果那一樓的鑽石比手中的鑽石大的話那就把手中的鑽石換成那一層的鑽石。
⑷ 2013年計算機軟考程序員考試部分真題
試題 1
A. 最有可能成為國際上操作系統的標準的操作系統.
B. 在目前,用於保證軟體質量的主要手段.
C. 進入80年代後,已迅速成為常用的程序設計語言之一.
D. 在軟體開發中,有利於發揮集體智慧的一種做法.
E. 在開發軟體時,可用來提高程序員的工作效率.
供選擇的答案:
A. (1)MS-DOS (2)VMS (3)VM (4)UNIX
B. (1)正確性證明 (2)測試 (3)自動程序設計 (4)符號執行
C. (1)Smalltalk-80 (2)Ada (3)C (4)PROLOG
D. (1)設計評審 (2)模塊化 (3)主程序員組 (4)進度控制
E. (1)程序開發環境 (2)操作系統的作業管理功能
(3)編譯程序的優化功能 (4)並行運算的大型計算機
試題 2
最初的軟體開發方式是(A), 人們用筆和紙編寫程序. 從60年代後期開始, *
軟體開發方式逐步發展成為使用終端設備編寫程序的(B), 從80年代初開始, 發*
達坦顫轎國家的軟體開發方式正在向(C)轉變.
在結構化程序設計思想提出以前, 在程序設計中曾經主要強調程序的(D). *
現在, 與程序的(D)相比, 人們更重視程序的(E).
供選擇的答案:
A,B,C: 1.實時方式 2.分時方式 3.批方式 4.並行方式 5.工作站方式 6.陣列方式
D,E: 1.安全性 2.專用性 3.一致性 4.合理性 5.可理解性 6.效率
試題 3
從下列敘述中選出5條正確的敘述.
(1) 每種程序設計語言都有它特定的語法.
(2) 結構化的程序設計語言中沒有 GOTO 語句.
(3) 定義程序設計語言時用的字元集各種語言不完全相同.
(4) 在匯編語言中, 用調用指令, 返回指令和轉移指令改變程序中指令的執行順序.
(5) 由於 FORTRAN 語言的結構是塊結構, 所以它特別適合於模塊化程序設計.
(6) PASCAL 語言允讓肆許用戶定義結構化的數據結構.
(7) 一般而言, 語言級別越高, 用它編出的程序越短.
(8) 結構化程序設計可以大大提高程序的執行效率.
(9) 編譯程序是一種常用的應用軟體.
(10) 編譯程序在進行優化時有時需要用到源程序的注釋.
試題 4
(1) 按邏輯結構分, 文件主要有兩類: (A) 和 (B) . UNIX 中的文件系統採用(B).
(2) 文件系統的主要目的是 (C).
(3) 文件系統中用 (D) 管理文件.
(4) 為了允許不同用戶的文件具有相同的文件名, 通常在文件系統中採用 (E).
A,B : (1) 網狀文件 (2) 只讀文件 (3) 讀寫文件
(4) 記錄式文件 (5) 索引文件 (6) 流式文件
C : (1) 實現對文件的按名存取 (2) 實現虛擬存貯器
(3) 提高外部設備的輸入洞讓輸出速度 (4) 用於存貯系統文檔
D : (1) 堆棧結構 (2) 指針 (3) 目錄 (4) 頁表
E : (1) 重名翻譯 (2) 多級目錄 (3) 約定 (4) 路徑
試題 5
排序的方法有許多種, (A) 法從未排序序列中依次取出元素, 與已排序序列
中(初始時為空)的元素作比較, 將其放入已排序序列的正確位置上; (B) 從未排娦蛐蛄兄刑粞≡*, 並將其依次放入已排序序列的一端; 交換排序法是對序列中
的元素進行一系列比較, 當被比較的兩元素逆序時, 進行交換.(C) 和 (D) 是基
於這類方法的兩種排序方法, 而(D) 是比 (C) 效率更高的方法. 利用某種演算法,
根據元素的關鍵值計算出排序位置的方法是 (E).
(1) 選擇排序 (2) 快速排序 (3) 插入排序 (4) 冒泡排序 (5) 合並排序
(6) 二分排序 (7) 雜湊排序 (8) 基數排序
試題6
下列流程圖用於從數組K中找出一切滿足:
K(I)+K(J)=M
的元素對(K(I),K(J))(1<=I<=J<=N)。假定數組K中的N個不同的整數已按由小到大
的順序排列,M是給定的常數。
開始
↓
1→I
↓
N→J
┌───────→↓ (A)
│ I:J──────────────┐
│ (B)│ ↓
│ ↓ > 結束
│ ┌───K(I)+K(J):M ────┐
│ ↓ ↓= ↓
│ (C) 輸出I,J,K(I),K(J) (D)
│ │ ↓ │
│ │ (C) │
│ │ ↓ │
│ │ (D) │
└──┴─────┴───────┘
此流程圖中,比較「K(I)+K(J):M"最少執行次數約為 (E) 。
供選擇的答案
A、B : ① > ② ≥ ③ < ④ ≤ ⑤ = ⑥ ≠
C、D : ① I+1→I ② I-1→I ③ J+1→J ④ J-1→J ⑤ I→J ⑥ J→I
E : ① N/4 ② N/2 ③ N ④ 2N
試題 7
將十進制數 0.7109375 轉換成二進制數是(A).用ASCII碼(7 位)表示字元5 和7 是(B).
浮點數的階碼可用補碼或增碼(移碼)表示,數的表示範圍(C).在浮點表示方法中(D)是隱含的.
用 8 位補碼表示整數 -126 的機器碼算術右移一位後的結果是 (E).
A: (1) 0.1011001 (2) 0.0100111 (3) 0.1011011 (4) 0.1010011
B: (1) 1100101 和 1100111 (2) 1010011 和 0110111
(3) 1000101 和 1000111 (4) 0110101 和 0110111
C: (1) 二者相同 (2) 前者大於後者 (3) 前者小於後者
D: (1) 位數 (2) 基數 (3) 階碼 (4) 尾數
E: (1) 10000001 (2) 01000001 (3) 11000001 (4) 11000010
試題 8
一排隊線路, 輸入為 A,B,C, 其輸出分別為 Fa, Fb, Fc, 在同一時間內只*
能有一個信號通過. 如果同時有兩個以上的輸入信號出現時, 則按 A, B, C的*
順序輸出. 例如, A=B=C=1, 則 Fa=1, Fb=Fc=0. 那麼, Fb 和 Fc 的表達式:
Fb= (A) , Fc= (B).
設X=X1X2 和 Y=Y1Y2 是二個二進制的正整數. 則
判斷 "X>Y" 的邏輯表達式 F1= (C); 判斷 "X>Y" 的邏輯表達式 F2= (D);娕卸* "X<=Y" 的邏輯表達式 F3= (E)
━━━
━ ━
A,B : (1) A+B+C (2) A+B+C (3) A+B
━━━ ━━━━━ ━━━━━
━ ━ ━ ━
(4) A+B C (5) A+B+C (6) A+A B
━ ━ ━ ━ ━ ━
C,D,E: (1) X1X2+Y1Y2+X1Y2+X2Y1 (2) X1Y1+X2Y1Y2+X1X2Y2
━ ━ ━ ━ ━ ━ ━
(3) X1Y1+X1X1Y2+X1Y1Y2 (4) X1Y1+X1X1Y2+X2Y2
━ ━ ━ ━ ━ ━
(5) Y1Y1+X1Y1X2+X1X2+X1Y1+X1Y1Y2
━ ━ ━ ━ ━ ━ ━ ━
(6) X1Y1+X2Y1Y1+X1X2Y2+X1Y1+X1X2Y2+X2Y1Y2
試題 9
從下列敘述中選出5條正確的敘述.
①磁碟存儲器的主要技術指標有存儲容量,查找時間,傳輸速率和記錄密度等.
②磁碟轉速提高一倍,平均查找時間縮小一半.
③磁碟存儲器的數據傳輸速率決定於磁頭定位時間,旋轉等待時間和單位時間內
讀出或寫入的位元組數.
④在單匯流排結構的計算機系統中,I/O設備與主機之間傳送數據的方式一般有
程序查詢,程序中斷和 DMA 三種方式.
⑤對個人計算機進行二次開發後, 可以作為多用戶主機的模擬終端. 這樣個人計
算機既可以作為獨立的計算機使用, 又可以在必要時共享主機的資源.
⑥DMA 方式的地址修改, 傳送位元組計數等完全由硬體電路來實現.
⑦DMA 用於傳送成組數據, 因此不能每傳送一個位元組就由 DMA 控制器提出一次
匯流排請求.
⑧通常每個外部設備都用一個介面電路於主機聯接. 因此, 主機只能用一個的
地址來訪問一個外部設備.
⑨在計算機中處理漢字和處理西文的方法是類似的. 因此, 在西文計算機上擴充
漢字處理功能後, 原有的西文終端都可用作漢字終端.
⑩CRC 校驗碼的生成或校驗可用由移位寄存器, 半加器和簡單門電路構成的電路
來實現.
試題 10:
* 在計算機的指令系統中, 通常同時採用多種確定操作數的方式. 當操作數直
接由指令給出時, 操作數稱為 (A). 當操作數的地址由某個指定的變址器的內容於
位移量相加得到時, 稱為 (B). 如果操作數的地址是主存中於該指令地址無關的存
貯單元的內容, 則稱為 (C). 是否進行 (C), 用指令中的某個特徵位指定. 把 (D)
看做變址器進行 (B), 稱為 (E).
A,B,C,E: (1) 間接定址 (2) 相關定址 (3) 相對定址 (4) 單純定址
(5) 變址定址 (6) 直接數 (7) 低位數 (8) 堆棧定址
D: (1) 地址寄存器 (2) 指令計數器 (3) 數據寄存器 (4) 緩沖寄存器
試題 11:
Since the time of John von Neumann, the basic conceptual model used to think
about computers and programs has (A) unchanged, in (B) of many advances in
both hardware and software technology. In the (C) that von Neumann proposed, the
basic instruction cycle is for the processor to fetch the instruction pointed at
by the program counter, (D) the program counter, and then execute the instruction.
Because instructions are executed strictly sequentially, there is little inherent
parallelism, and (E) opportunity to employ large numbers of processors to gain 妔peed.
(1) small (2) big (3) add (4) little (5) model
(6) remained (7) style (8) increase (9) stead (10) spite
(11) already (12) period (13) formula (14) decrease (15) not
試題 12
In a computer program, an entity that possesses a value and is known to program
by a name: (A).
An ordered set which contains a fixed number of elements: (B).
To submit a program to a computer for execution: (C).
A secret code used to deny access to unauthorized users: (D).
A large collection of data in support of a set of data processing tasks: (E).
(1) data base (2) password (3) keyword (4) array
(5) procere (6) run (7) data entry (8) variable
(9) vector (10) access (11) user name (12)
試題 13:
(1)When the electricity is switched off, the ROM is cleared of its contents, the
RAM is not.
(2) IF-THEN-ELSE structures in a programming language provide selection.
(3) A program in its original form is known as an object program, and the tran-
slated version is known as a source program.
(4) The CPU is the most important piece of hardware in the entire system and yet
one of the sinplest.
(5) The lowercase letters come after the uppercase letters in the ASCII table.
(6) Queue insertions and deletions are made at the same end of the queue.
(7) Improvements in software quality are necessary to rece program maintenance
costs.
(8) A recursive procere is one that activates itself ring its activations.
(9) A floppy diskette machine is an example of a direct access storage device.
(10) Comments specify actions for a computer to perform when a program is run.
下午試題
試題一 [說明]
本流程圖是對某種簡單密碼文(密文)解密.密文由字元序列組成,解密後產
生的字母序列稱為原文.解密演算法如下:
把密文s1s2...sn按順時針方向看成一個環,如下所示:
s1
sn
s3
sn-1
si
解密時按讀入的整數值KEY(KEY>1),從S1起順時針計數,當計數到第KEY個字
符時,取出該字元作為原文的第一個字元,並把它從環中刪去.接著從下一個字元
起繼續計數,取出第KEY個字元作為原文的第二個字元,並從環中刪去.依次類推,
直至N個字元全部取完.由上述演算法依次取出的字元序列即為原文.
例如,當KEY=3時,密文NUITP的原文為INPUT.
開始解密時,密文存放在字元數組S中, 長度為N(N>1),所得到的原文也存
放在數組S中.為了從S(1)起依次存放原文字元,在必要時部分未解密的字元作適
當的移動.
試題三(15分)
[程序說明] 本題給出的是計算兩個多項式之積的子程序.
設兩個多項式分別為
n n-1
F(X)=FnX +Fn-1X +...+F1X+F0
m m-1
G(X)=GmX +Gm-1X +...+G1X+G0
則它們的積多項式為
k k-1
P(x)=F(X)G(X)=PkX +Pk-1X +...P1X+P0
其中, k=n+m; Pi=∑Fi-j*Gj (i=0,...,k);
j
記號∑Fi-j*Gj;表示對給定的i(0≤i≤n+m),和所有滿足
0≤i-j≤n,≤j≤m
的j,對Fi-j*Gj求和.
程序用數組存貯多項式的序數,即數組的第i(≥0)個元素存貯多項式i次冪
的系數.例如:
5 3 2
F(X)=5.7X -10.8X +0.49X +2.7用數組表示為
0 1 2 3 4 5
2.7 0 0.49 -10.8 0 5.7
設程序已定義了如下的數據類型:
const maxp=100; {允許的多項式次冪}
type poly=record
power: 0..maxp; {多項式的次冪}
coef: array[0..maxp] of real
{coef [i] 存貯多項式的i次冪項的系數}
end;
[程序]
procere prod(f,g: poly; var p:poly);* var i,j,low,high:integer;
temp: real;
begin
for i:=0 to f.power + g.power do
begin
if __________________
then low:= ____________________
else low:=0;
if __________________
then high:= ____________________
else high:=i;
temp:=0.0;
for j:=low to high do
temp:= _____________________
p.coef[i]:=temp
end;
_______________________
end;
試題七
[程序說明] 本程序用於判別輸入的字元串是否為如下形式的字元串:
W&M$
其中子字元串M是子字元串W的字元反向排列.在此假定W不含有字元&和字元$,
字元&用作W與M的分隔符,字元$用字元串的輸入結束符.
例如,對輸入的以下字元串:
ab&ba$, 11&12$
ab&dd$, &$
程序將分別輸出
OK.(是), NO.(不是),
NO.(不是), OK.(是).
[程序]
program accept (input,output);
const
midch='&';
endch='$';
var
an:bollean; ch :char;
procere match (var answer: boolean);
var
ch1,ch2:char;
f:boolean;
begin
read(ch1);
if ch1>endch then
if ________________ then
begin
match (f);
if f then
begin
read (ch2); answer:=____________________
end
else answer:=false
end
else ___________________
else ___________________
end;
begin
writeln('Enter string:');
match (an);
if an
then begin
_______________________
if __________________________ then writeln ('OK.')
else writeln ('NO.')
end
else writeln ('NO.')
end.
試題十一
[程序說明] 本題給出的是將數組a的元素a1,a2,...,an從大到小排列的子程序.
子程序採用改進的選擇方法,該方法基於以下思想:
在選擇第一大元過程中,al與aj(j=n,n-1,...2)逐個比較,若發現aj1〉
al,則aj1與a1交換,交換後新的aj1有性質aj1≥at(j1<t≤n).若再有aj2 p=""> </t≤n).若再有aj2>
〉a1(j2<j1),aj2與a1交換,則交換後的aj2也有性質aj2≥at(j2<t≤n). p=""> </j1),aj2與a1交換,則交換後的aj2也有性質aj2≥at(j2<t≤n).>
如在挑選第一大元過程中,與a1交換的元素有k(k≥0)個,依次為aj1,aj2,...
ajk則它們都滿足這一性質.它們的下標滿足n≥j1>j2>...>jk>1.有了這些下標,
在確定第二大元時,可只考慮a2與aj(j=jk,jk-1,...,3)逐個比較.倘若jk=2,
則可不經比較就知道a2就是第二大元.在選擇第二大元過程中,將與a2交換過
的元素下標也記錄下來,可供選擇其他大元使用.但在選則第二大元時,應保證與
a2交換的那些位置上的新值也都滿足上的述性質.依次類推,順序選擇第一,第
二,...第n01大元,實現對a的排序.
設程序包含有常量和類型定義:
const maxn=1000;
type vector=array [1..maxn] of integer;
index=1..maxn;
[程序]
procere sort (var a:vector;n:index);
var
p:vector;
i,j,k,m,t:integer;
begin
k:=0;i:=1;m:=n;
while i<n p="" do
begin
for j:=m downto i+1 do
if a[i]<a[j] p="" then
t:=a[i];a[i]:=a[j];a[j]:=t;
k:=k+1;______________
end;
repeat
______________;
if _____________ then _____________
else
begin m:=p[k];k:=k-1 end
until (i<m) (i="n);
if _____________ then
begin
t:=a[i];__________;___________
end
end
end
⑸ 程序員面試題精選100題
准備面試不妨看看《編程之美——微軟技術面試心得》。
裡面有60道左右的演算法、數據結構和程序設計的題目,每個題目均給出了不同的解法和分析。特別是要准備去參加大公司面試,值得參考。