c語言計算比賽名次、破案
題目1.
5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果
A選手說:B第一,我第三。
B選手說:我第二,E第四。
C選手說:我第一,D第二。
D選手說:C最後,我第三。
E選手說:我第四,A第一。
比賽結束後,每位選手都說對了一半,請程式設計確定比賽的名次。
演算法思路:這種方法就是用5個for迴圈將每個人可能1-5名次遍歷,根據結果要求每個人各說對一半為條件,得到結果,但是注意處理那種名次不連續情況的方法
注意:
(1)可以有重名次,但是這幾個名次數字要連續,而且是從1開始
#include <stdio.h> int main() { int a=0,b=0,c=0,d=0,e=0,ret=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 ret=0; ret|=(1<<(a-1)); //將有名次的位數置1,判斷名次是否連續,以下類似 ret|=(1<<(b-1)); ret|=(1<<(c-1)); ret|=(1<<(d-1)); ret|=(1<<(e-1)); while(ret) //只要ret不為0,說明有名次存在,迴圈不停止 { if(ret%2==0) break; ret=ret/2; } if(ret==0) //while迴圈跳出來有2種情況,如果是break跳出來的,ret不為0,說明存在不連續名次, //若ret==0跳出說明名次連續 { printf("%d %d %d %d %d\n",a,b,c,d,e); } } } } } } } return 0; }
輸出結果:2 1 1 3 4
題目2.
日本某地發生了一件謀殺案,警察通過排查確定殺人凶手必為4個嫌疑犯的一個。以下為4個嫌疑犯的供詞。
A說:不是我。
B說:是C。
C說:是D。
D說:C在胡說
已知3個人說了真話,1個人說的是假話。
現在請根據這些資訊,寫一個程式來確定到底誰是凶手。
演算法思路:根據 a-d的ASCII碼依次遞增,可以利用for迴圈對殺手可能性遍歷,然後根據最後結果條件輸出滿足條件結果
輸出結果:killer為c#include <stdio.h> int main() { char killer=0; for(killer='a';killer<='d';killer++) { if((killer!='a')+(killer=='c')+(killer=='d')+(killer!='d')==3) { printf("%c",killer); } } return 0; }
相關推薦
c語言計算比賽名次、破案
題目1. 5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果 A選手說:B第一,我第三。 B選手說:我第二,E第四。 C選手說:我第一,D第二。 D選手說:C最後,我第三。 E選手說:我第四,A第一。 比賽結束後,每位選手都說對了一半,請程式設計確定比賽的名次。
用C語言計算一條語句中的空格、字母、數字的個數。
#include <stdio.h> int main() { int space_count = 0; int letter_count = 0; int number_
C語言中字符、字符串、字符數組
文件 getc order 知識點 技術 ima 數組 c語言 align char a = ‘h‘; memory h char a[] = "Hello"; memory H e l l o ‘\0‘ stri
C#語言與變量、數據類型
使用 賦值 轉換成 運算 命名規範 ole 字符 書寫格式 double類型 1.代碼的運用 計算機語言:C、PHP、Ruby、Java、C#、Basic、JS、C++ 源代碼:就是用某種計算機語言編寫的內容 編譯:用編譯器將源代碼轉換成機器代碼 機器語言:機器語言就是能夠
(轉)C語言之原碼、反碼和補碼
計算機 進制 情況下 class 正數 去掉 都是 OS 原碼 原碼、反碼和補碼 1).數據在內存中存儲的時候都是以二進制的形式存儲的. int num = 10; 原碼、反碼、補碼都是二進制.只不過是二進制的不同的表現形式. 數據是以補碼
C語言之棧區、堆區
空間 bsp 動態 info cat malloc 分享圖片 code clu 一 局部變量存放在棧區中,函數調用結束後釋放內存空間。 #include "stdio.h"; #include "stdlib.h"; int *getNum(){ int i
代寫C語言程序設計作業、代作國外PickNearestNod C作業
RM rect splay win timers display 圓角 相等 SM #include "graphics.h"#include "extgraph.h"#include "genlib.h"#include "simpio.h"#include "rando
C語言計算程序中某一個函數或算法的執行時間
lock nis 程序 while tar 計算 stdio.h locks turn 計算程序中某一個函數或算法的執行時間 #include <stdio.h> #include <time.h> #include <stdlib.h>
C語言中變量、全局變量與變量的作用域
www. 但是 表達 之間 範圍 htm target 因此 變量名 什麽是變量: 變量常量都是表征數據的一種形式;常量用來表示數據的值; 變量不僅可以用來表示數據的值;還可以用來存放數據;因為變量對應著一定的內存單元; 變量和常量必須先定義後使用。 變量名和常量名都是一種
C語言跳水比賽預測結果
轉換 turn 精簡 print system tdi ++ col pre 5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果A選手說:B第二,我第三;B選手說:我第二,E第四;C選手說:我第一,D第二;D選手說:C最後,我第三;E選手說:我第四,A第一;比賽結束後
C語言中函式宣告、形參、實參
函式原型: 原型prototype是函式的宣告;描述了函式的返回值與引數; 函式原型說明了兩點: 1、該函式的返回值 2、該函式的引數及其型別 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 函式的引數: 引數到底是什
C語言中的副作用、序列點、完整表示式
C語言中有個術語叫:副作用 副作用其實是對資料物件或檔案的修改。(資料物件的定義是:用於儲存值的資料儲存區域) 例如語句 states = 50; 從C語言的角度來講:這個賦值表示式的副作用是將變數的值設定為50;目的是對錶達式求值; 但是使用賦值表示式的主要目的(真正目的)就是使用其副作用(將變數的
C語言計算:t=1-1/(2*2)-1/(3*3)-...-1/(m*m)
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int m,i; int n;  
C語言中儲存類別、連結與記憶體管理
第12章 儲存類別、連結和記憶體管理 通過記憶體管理系統指定變數的作用域和生命週期,實現對程式的控制。合理使用記憶體是程式設計的一個要點。 12.1 儲存類別 C提供了多種不同的模型和儲存類別,在記憶體中儲存資料。 被儲存的每一個值都佔用一定的實體記憶體;C語言把這樣一塊記憶體稱為物件
如何用C語言計算表示式的值,棧的經典應用
宣告:這個程式可以計算+,-,*,/,負數,小數 負數用括號括起來例如(-1) 負數的計算過程:(-1) 轉變為 (0-1) 哈哈~ 分成六個點: 1.我的檔案結構 2.順序堆疊的標頭檔案 3.標頭
C語言(二 運算子、條件語句、指標)
C運算子 包括算數運算子,邏輯運算子,關係運算符,位運算子,賦值運算子,其他運算子。 算術運算子 就是加減乘除求餘,自增自減等算術。 邏輯運算子 與:&&,或:||,非:! 關係運算符 等於,大於,小於等組合 位運算子 位與:&,位或:|,位左移<<,位右
C語言(四 檔案操作、遞迴)
檔案讀寫 我們用**fopen()**來新建一個檔案或開啟一個已有的檔案. 函式原型為File *fopen(const char *filename , const char *mode) filename是檔名,mode代表訪問方式。 mode
C語言(三 字串、結構體、共用體、輸入輸出)
字串 字串是儲存了一些字元,最後以null(’/0’)結尾的一維字元陣列。 char str[6] = {'h','e','l','l','o','/0'}; char str[ ] = "hello" ; 還有一些字串操作函式: 1、strcpy(s1,s2) 複製s2到s1 2
[Trie樹] 統計英文文字中單詞出現的個數 - C語言實現 - 考慮數字、英文
【英文文字】 However, after reaching the shore there are plenty of challenges waiting for him."The biggest challenge now is learning to walk agai
C語言計算sinx
#include<stdio.h> #include<math.h> int jc(int n); int main() { int m=1,f=1,i=1; double sinx=0.0,x,z; double ans; scanf("%lf",&x); z