【C語言】誰是冠軍 與 誰是凶手
1.
5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果
A選手說:B第一,我第三。
B選手說:我第二,E第四。
C選手說:我第一,D第二。
D選手說:C最後,我第三。
E選手說:我第四,A第一。
比賽結束後,每位選手都說對了一半,請程式設計確定比賽的名次。
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
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 num = 0;
num |= (1 << (a - 1));
num |= (1 << (b - 1));
num |= (1 << (c - 1));
num |= (1 << (d - 1));
num |= (1 << (e - 1));
while (num)
{
if (num % 2 == 0)
{
break;
}
num /= 2;
}
if (num==0)
printf("%d %d %d %d %d\n", a, b, c, d, e);
}
}
}
}
}
}
system("pause");
}
總結:這道題並不難,只要整理好思路就。每個人說得話只對了一半,也就是將現在每個人說的邏輯轉變成數學符號的“異或”。可能讓人比較費解的是怎麼篩選保證“不重複不跳躍名次”。在這裡即可以考慮到用移位符號了,每個數進行按位與,在進行判斷。
2.
日本某地發生了一件謀殺案,警察通過排查確定殺人凶手必為4個嫌疑犯的一個。以下為4個嫌疑犯的供詞。
A說:不是我。
B說:是C。
C說:是D。
D說:C在胡說
已知3個人說了真話,1個人說的是假話。
現在請根據這些資訊,寫一個程式來確定到底誰是凶手。
#include<stdio.h>
int main()
{
int killer = 'A';
for (killer = 'A'; killer <= 'D'; killer++)
{
if ((killer != 'A') + (killer == 'C') + (killer == 'D') + (killer != 'D')==3)
printf("killer:%c\n", killer);
}
system("pause");
}
總結:思路和上一道題差不多。由於字母都有相對應的ASCII碼,可以直接用。
相關推薦
【C語言】誰是冠軍 與 誰是凶手
1. 5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果 A選手說:B第一,我第三。 B選手說:我第二,E第四。 C選手說:我第一,D第二。 D選手說:C最後,我第三。 E選手說:我第四,A第一。 比賽結束後,每位選手都說對了一半,請程式設計
【c語言】判斷某個區間所有的數誰是素數
/**************************** *判斷某個區間的素數個數數量 *素數:只有1和它本身可以整除 *tips:雙重迴圈+flag * * **************
【C語言】學習筆記7——指針與多維數組
一個 聲明 %d mage 分享圖片 技術分享 pan 最好 include 1. 聲明一個指向多維數組的指針 int (* pz) [2]; //pz指向一個內涵兩個int類型元素的數組 int * pax[2]; //pax 是一個內含兩個指針元素的
【C語言】一維陣列、二維陣列與指標
一維陣列和指標: 1、一維陣列名: 對於這樣的一維陣列:int a[4]; a作為陣列名就是我們陣列的首地址, a是一個地址常量 . 首先說說常量和變數的關係, 對於變數來說, 用箱子去比喻再好不過了, 宣告一個變數就宣告一個箱子,比如我們開闢出一個蘋果型別的箱子, 給這個變
【c語言】帶你真正走進指標的世界——陣列與指標的關係(一)
每天下課之後,都感覺老師上課在神仙程式設計,我們一群凡人在底下面無表情地走神,前一秒還是在講加減乘除的基本用法,後一秒就變成了指標陣列、陣列指標、結構體指標和N級指標的性質以及運用............(真是令人頭禿 —^—) ——————
【c語言】指標與陣列小練習
一維陣列 int a[]={1,2,3,4}; 1.printf(“%d\n”,sizeof(a)); //16 sizeof(陣列名)求的是整個陣列的大小 2.printf(“%d\n”,sizeof(a+0)); //4 表示第一個元素地址的大小(
【c語言】巨集(#define、#和##)與函式比較
#define -定義識別符號 ef:#define在預處理階段替代所有的Max #define Max 100 int main() { printf("%d\n", Max); system("pause"); return 0
【C語言】typedef(自定義資料型別)與#define(巨集定義)用法比較
不管是在C語言還是在C++中,typedef這個詞都不少見,當然出現頻率較高的還是在C程式碼中。typedef和#define有些相似,但更多的是不同,特別是在一些複雜的用法上,就完全不同了。 1.巨集定義(#define) 巨集定義又稱為巨集代換
【C語言】宣告與定義
前言 引用性宣告 不分配儲存空間,如extern int x; 只是告訴編譯器x是整形,已經在其它地方定義了。 定義 是在記憶體中確定變數的位置、大小。 初始化 是定義變數時候賦給變數的值(從無到有)
【C語言】求階乘與階乘之和
中學我們都學習了階乘的求法,比如要求整數n的階乘,則n!=n×(n-1)×(n-2)×…×2×1。現在有兩個問題,要用C語言編寫程式求n的階乘,以及求1!+2!+3!…+n!,該如何解決呢? 問題1:求n的階乘。 實現思路: 問題中的n需要
【C語言】C語言的const與C++的const區別
C++中,const預設使用內部連線.而C中使用外部連線.內連線:編譯器只對正被編譯的檔案建立儲存空間,別的檔案可以使用相同的表示符或全域性變數.C/C++中內連線使用static關鍵字指定.外連線:所有被編譯過的檔案建立一片單獨儲存空間.一旦空間被建立,聯結器必須解決對這片儲存空間的引用.全域性變數和函式使
【C語言】返回指標的函式與指向函式的指標
一、返回指標的函式 指標也是C語言中的一種資料型別,因此一個函式的返回值肯定可以是指標型別的。 返回指標的函式的一般形式為:型別名 * 函式名(引數列表) 比如下面這個函式,返回一個指向char型別變量的指標 1 // 將字串str中的小寫字母變成大寫字母,並返回
【C語言】對字母加密與解密(簡易)
/* * 從鍵盤輸入一行字元,將其中的英文字母進行加密輸出(非英文字母不用加密)。 * 字元的加密就是藉助字元可以進行算術運貧的思想來設計實現,加密的基本思想是, * 將原來的字元向後移動若干位 S 示 ,這個操作可以通過字元加上一個整數來實現,所加的整數
【C語言】統計數字在排序數組中出現的次數
語言 個數 統計 ret r+ () class tdi times //數字在排序數組中出現的次數。 //統計一個數字在排序數組中出現的次數。比如:排序數組{1,2,3,3,3,3,4,5}和數字3,因為3出現了4次,因此輸出4. #include <stdio
【C語言】推斷一個數是否為2的n次方
post data- popu scanf scan ng- 輸入 ont print //推斷一個數是否為2的n次方 #include <stdio.h> int is_two_n(int num) { if ((num&(num - 1))
【C語言】 二叉樹的基本運算
IT btree AS CA style pri != -- str • 二叉樹節點類型BTNode: 1 typedef struct node 2 { 3 char data; 4 struct node *lchild, *rch
【C語言】類型限定詞
變量 可變 oct 包含 一個數 sta ans eof 方式 ANSI C 的類型限定詞有const、volatile以及restrict三個,以下分別介紹三個限定詞: 1、類型限定詞const (1)、如果變量中帶有const關鍵字,則該變量無法進行賦值、增量及減量運算
【C語言】平衡二叉樹
avl 簡介 二叉搜索樹 沒有 TP 假設 它的 left 操作 AVL樹簡介 AVL樹的名字來源於它的發明作者G.M. Adelson-Velsky 和 E.M. Landis。AVL樹是最先發明的自平衡二叉查找樹(Self-Balancing Binary Searc
【C語言】輸入一個整數,求它的原碼,反碼,補碼值
補碼 while src info idt IV com scan -- 1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 int m,n,a[10],i=0,y[
【C語言】數據對其(內存對齊)
brush size return () def ont http 之間 sign 數據對齊 結構體之間的對齊是有很多種方法的,也是根據你所用的系統位數有關。下面都是以32位系統來講的,32位系統一般以字對齊,字就是系統位數,32位系統則是32位對齊,也就是4字節(in