1. 程式人生 > >c語言練習題(面試題)

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;