1. 程式人生 > >c語言計算比賽名次、破案

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迴圈對殺手可能性遍歷,然後根據最後結果條件輸出滿足條件結果

#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;
}
輸出結果:killer為c









相關推薦

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