1. 程式人生 > >【C語言】誰是冠軍 與 誰是凶手

【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語言的constC++的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