c語言練習題(面試題)
5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果
A選手說:B第一,我第三。
B選手說:我第二,E第四。
C選手說:我第一,D第二。
D選手說:C最後,我第三。
E選手說:我第四,A第一。
比賽結束後,每位選手都說對了一半,請程式設計確定比賽的名次。
解析如下:
這道題的想法是這樣子的,利用窮舉的方法列出所有的情況,可以使用一種比較簡單的思維去考慮這個問題,定義5個變數,使它本身的值就代表它的名次,用五層for迴圈,這樣可以列出所有可能的情況,但是需要我們自己來判斷還有哪些隱含的條件沒有用到呢?
可以結合實際生活中的情況,名次不可能是不連續的,例如:名次不可能是(11245)其中沒有第三名,這根本不現實,所以排除掉這些情況就可以了,
#pragma warning (disable : 4996) #include<stdio.h> #include<stdlib.h> int main() { int a = 1; int b = 1; int c = 1; int d = 1; int e = 1; for (a = 1; a <= 5; a++) for (b = 1; b <= 5; b++) for (c = 1; c <= 5; c++) for (d = 1; d <= 5; d++) for (e = 1; e <= 5; e++) if (((b == 1) + (a == 3) == 1) && ((b == 2)+ (e == 4) == 1) && ((c == 1)+(d == 2) == 1) && (( c== 5) + (d == 3) == 1) && ((e == 4) + (a == 1) == 1)) { int val = 0; int flag = 1; val |= 1<<(a - 1); val |= 1<<(b - 1); val |= 1<<(c - 1); val |= 1<<(d - 1); val |= 1<<(e - 1);//將1放置在(a.b.c.d.e)各自的名次上, //然後再將所有的值進行或運算 while (val) { if ((val % 2) == 0)//如果有不連續的,例如1 1 3 4 5,則排除這種可能 { flag = 0; } val = val>>1; } if (flag != 0) { printf("%d %d %d %d %d\n",a,b,c,d,e); } } system("pause"); return 0; }
相關推薦
c語言練習題(面試題)
5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果 A選手說:B第一,我第三。 B選手說:我第二,E第四。 C選手說:我第一,D第二。 D選手說:C最後,我第三。 E選手說:我第四,A第一。
C語言練習題(一)
求n個整數中倒數第二小的數。每一個整數都獨立看成一個數,比如,有三個數分別是1,1,3,那麼,第二小的數就是1。 輸入 輸入包含多組測試資料。 輸入的第一行是一個整數C,表示有C測試資料; 每組測試資料的第一行是一個整數n,表示本組測試資料有n個整數(2<=n&l
HTML+CSS+JS(面試題)
pagex innerhtml ado 傳值 優缺點 釋放 如何 blog 們的 1、 你做的頁面在哪些流覽器測試過?這些瀏覽器的內核分別是什麽? IE: trident內核 Firefox:gecko內核 Safari:webkit內核 Opera:以前是presto內核
Hibernate的工作流程以及三種狀態(面試題)
數據庫 delet 垃圾 打開 ron 工作流 沒有 flush 行數據 Hibernate的工作流程以及三種狀態 轉載自:http://www.cnblogs.com/fifiyong/p/6390699.html Hibernate的工作流程: 1. 讀取並解
C語言學習(第一天)
項目 align getchar include 下載安裝 類型 reg 程序 nbsp 1、工具和資源 Visual Studio 2017社區免費版,使用Visual Studio Installer下載安裝,安裝完成點擊修改,安裝C++桌面模塊。 根據C Pr
C++語言學習(十一)——多態
構造 name ast 匹配 地方 參數 替代 xxxx pri C++語言學習(十一)——多態 一、多態簡介 C++中的多態(polymorphism)是指由繼承而產生的相關的不同的類,其對象對同一消息會作出不同的響應。多態性是面向對象程序設計的一個重要特征,能增加程序的
C++語言學習(十二)——C++語言常見函數調用約定
調用函數 操作 開發 混合 類成員 修飾 fast 順序 處理 C++語言學習(十二)——C++語言常見函數調用約定 一、C++語言函數調用約定簡介 C /C++開發中,程序編譯沒有問題,但鏈接的時候報告函數不存在,或程序編譯和鏈接都沒有錯誤,但只要調用庫中的函數就會出現堆
C++語言學習(十四)——C++類成員函數調用分析
不可訪問 ring error: 兩種 cout list 空間 splay 示例代碼 C++語言學習(十四)——C++類成員函數調用分析 一、C++成員函數 1、C++成員函數的編譯 C++中的函數在編譯時會根據命名空間、類、參數簽名等信息進行重新命名,形成新的函數名。函
C++語言學習(十五)——C++抽象類與接口
eight close send 都是 () 實例 amp 定義類 esp C++語言學習(十五)——C++抽象類與接口 一、抽象類與接口 1、抽象類簡介 面向對象的抽象類用於表示現實世界的抽象概念,是一種只能定義類型,不能產生對象的類(不能實例化),只能被繼承並被重寫相關
C++語言學習(十六)——多繼承
虛函數表 -o nag http layout 調用 img error names C++語言學習(十六)——多繼承 一、多繼承簡介 1、多繼承簡介 C++語言支持多繼承,一個子類可以有多個父類,子類擁有所有父類的成員變量,子類繼承所有父類的成員函數,子類對象可以當作任意
C++語言學習(十七)——模板
china typename itl while ptr 特殊 實例化 需求 所有 C++語言學習(十七)——模板 一、模板簡介 泛型(Generic Programming)即是指具有在多種數據類型上皆可操作的含意。 泛型編程的代表作品STL是一種高效、泛型、可交互操作的
C++語言學習(十九)——C++類型識別
c++類 面向 字節 檢查 case include 指向 指針和引用 peid C++語言學習(十九)——C++類型識別 一、C++類型識別簡介 1、C++類型識別簡介 C++是靜態類型語言,其數據類型是在編譯期就確定的,不能在運行時更改。C++語言中,靜態類型是對象自身
C++語言學習(十八)——異常處理
right data ges cal 修飾符 當前 ins 最終 cati C++語言學習(十八)——異常處理 一、C語言異常處理 異常是指程序在運行過程中產生可預料的執行分支。如除0操作,數組訪問越界、要打開的文件不存在。Bug是指程序中的錯誤,是不被預期的運行方式。如野
C++語言學習(二十)——自定義內存管理
single null allocated 析構函數 opera .get cat st2 argc C++語言學習(二十)——自定義內存管理 一、統計類對象中成員變量的訪問次數 mutable是為了突破const函數的限制而設計的,mutable修飾的成員變量將永遠處於可
學習筆記-C語言1(程式設計入門)
C語言和C++是作為一名程式設計師必備技能,非科班出身的我對這些語言一直是一知半解,後來更是直接使用簡單易上手的python,matlab語言。今天終於開始系統的學習了C了,記錄一些學習筆記,方便後面檢視,如有不妥,還請幫忙指正。 1. 檔案開頭 檔案開頭要加入:# include<
PAT-乙-1059 1059 C語言競賽 (20 分)
程式碼 #include <iostream> #include <map> #include <math.h> using namespace std; bool isPrime(int n){ for(int i=2; i<=s
C語言入門(廿二)之預處理指令、巨集、條件編譯、檔案包含、typedef、const
預處理指令 什麼是預處理指令: 在我們的檔案翻譯成0和1之前做的操作我們稱之為預處理指令。一般情況預處理指令都是以#號開頭的。 巨集定義的格式 不帶引數的巨集定義: #define 巨集名 值 巨集定義的作用:
C語言入門(廿一)之static、extern關鍵字
區域性變數 概念: 區域性變數就是定義在函式, 程式碼塊和函式形參列表中的變數, 我們就稱之為區域性變數 作用範圍: 從定義的那一行開始一直直到遇到大括號結束或者遇到return為止 特點: 相同作用域範圍內不
C語言入門(二十)之列舉
C語言中,列舉就是專門用於表示幾種固定型別的取值。列舉的本質就是基本資料型別, 就是整形。 列舉和結構體一樣, 要想定義列舉型別變數, 那麼必須先定義列舉型別。 列舉型別定義的格式 enum 列舉型別名稱 { 取值, }; // 1.
C語言入門(十九)之結構體
太晚了(11點半了),明天繼續結構體 陣列: 是用於儲存一組相同型別的資料 結構體: 是用於儲存一組不同型別的資料 // 1.定義結構體型別 struct Person { // char name[20]; char *name;