1. 程式人生 > >石頭、剪刀、布程式,C語言模擬

石頭、剪刀、布程式,C語言模擬

/*同問用C編寫:同學 A 和B兩個人玩最簡單的石頭剪子布遊戲,遊戲規則如下:石頭贏剪子;剪子贏布;布贏石頭;
如果二者相同,則平局;並且規定,如果贏一局則得 2 分,平局的話雙方各得 1 分,輸的人不得分。兩個人一共玩了 N 局,
並且已知每個人每局出的是什麼,我們用字元’R’代表石頭,’S’代表剪子,’P’代表布。並且給出兩個字串代表兩個人每局的出法。

對於這個遊戲,輸出贏家是誰,並且輸出他的得分,如果最後出現了平分,則輸出“TIE”加上平分的分數,用空格隔開(具體輸出方式見樣例)。*/

程式1:

#include<stdio.h>
int comp(char a,char b)//A的每一局得分函式
{
 if(a==b)return 1;
 if(a=='R'&&b=='S')return 2;
 if(a=='R'&&b=='P')return 0;
 if(a=='S'&&b=='R')return 0;
 if(a=='S'&&b=='P')return 2;
 if(a=='P'&&b=='R')return 2;
 if(a=='P'&&b=='S')return 0;    
}
int main()
{
 int scoreA=0,scoreB=0;//分別代表A和B的得分
 char a,b;//分別代表A和B出的形狀
 int n;//比較的局數
 int i;//迴圈變數
 int temp;//臨時儲存函式comp的返回值
 printf("R:石頭 S:剪子 P:布\n");
 printf("請輸入比較的局數:");//輸入比較局數
 scanf("%d",&n);
 for(i=0;i<n;i++)//迴圈n次
 {
  printf("inputA%d:",i+1);
  getchar();
  scanf("%c",&a);//輸入A出的
  printf("inputB%d:",i+1);  
  getchar(); 
  scanf("%c",&b); //輸入B出的
  temp=comp(a,b);
  scoreA+=temp;//累加A的分數
  scoreB+=(2-temp); //累加B的分數          
 }
 if(scoreA>scoreB)//輸出A和B的比較結果
  printf("A(%d)贏B(%d)輸\n",scoreA,scoreB);                 
 else
  if(scoreA<scoreB)
   printf("A(%d)輸B(%d)贏\n",scoreA,scoreB);  
  else
    printf("TIE分數都是%d\n",scoreA); 
  system("pause");
  return 0;
} 

程式2:

#include<stdio.h>
#define MAXSIZE 100
int comp(char a,char b)//A的每一局得分函式
{
 if(a==b)return 1;
 if(a=='R'&&b=='S')return 2;
 if(a=='R'&&b=='P')return 0;
 if(a=='S'&&b=='R')return 0;
 if(a=='S'&&b=='P')return 2;
 if(a=='P'&&b=='R')return 2;
 if(a=='P'&&b=='S')return 0;    
}
int main()
{
 int scoreA=0,scoreB=0;//分別代表A和B的得分
 char a[MAXSIZE],b[MAXSIZE];//分別代表A和B出的形狀
 int n;//比較的局數
 int i;//迴圈變數
 int temp;//臨時儲存函式comp的返回值
 printf("R:石頭 S:剪子 P:布\n");
 printf("請輸入比較的局數:\n");//輸入比較局數
 scanf("%d",&n);
 //printf("inputA:");
 getchar();
 for(i=0;i<n;i++)
 {
  scanf("%c",&a[i]);                
 }
 getchar();
 for(i=0;i<n;i++)
 {
  scanf("%c",&b[i]);                
 }
 for(i=0;i<n;i++)//迴圈n次
 {  
  temp=comp(a[i],b[i]);
  scoreA+=temp;//累加A的分數
  scoreB+=(2-temp); //累加B的分數          
 }
 if(scoreA>scoreB)//輸出A和B的比較結果
  printf("A(%d)贏B(%d)輸\n",scoreA,scoreB);                 
 else
  if(scoreA<scoreB)
   printf("A(%d)輸B(%d)贏\n",scoreA,scoreB);  
  else
    printf("TIE %d\n",scoreA); 
  system("pause");
  return 0;
} 


相關推薦

石頭剪刀程式C語言模擬

/*同問用C編寫:同學 A 和B兩個人玩最簡單的石頭剪子布遊戲,遊戲規則如下:石頭贏剪子;剪子贏布;布贏石頭; 如果二者相同,則平局;並且規定,如果贏一局則得 2 分,平局的話雙方各得 1 分,輸的人不得分。兩個人一共玩了 N 局, 並且已知每個人每局出的是什麼,我們用字元

原碼反碼補碼及位操作符C語言位操作

計算機中的所有資料均是以二進位制形式儲存和處理的。所謂位操作就是直接把計算機中的二進位制數進行操作,無須進行資料形式的轉換,故處理速度較快。 1、原碼、反碼和補碼 位(bit) 是計算機中處理資料的最小單位,其取值只能是 0 或 1。 位元組(Byte)

抖音很火的告白程式設計程式C語言一樣也能做

最近抖音上火了一個由小夥伴自己製作的一個表白程式碼,很多小夥伴都在問這個表白程式碼是怎麼寫的?大家都知道是使用vbs實現的!雖說小編也承讓VBS實現更簡單,但是如果把列印心那個程式用起來,C語言是反而更妙一點。今天小編帶著大家用C語言實現下,順帶複習下C語言中的格式化

石頭剪刀)shell腳本隨機對比case的應用

評論 單獨 三種 數組 石頭 兩種方法 == dom ash 腳本實現人機<石頭,剪刀,布>遊戲,機器應用隨機方法,結合用戶輸入給出結果,文章有兩種方法,重在理解,第一種方法是該腳本的邏輯方面,第二種較容易理解。一 : 第一種方法,讓機器給出一個隨機數字 0-2

Python3 實現 石頭剪刀 猜拳小遊戲

Python基礎語法 目標 實現一個人與計算機玩猜拳——石頭剪刀布的小遊戲,學會Python的迴圈控制語句和條件判斷語句。 思考一: 假如把石頭、剪刀、布分別用數字0、1、2表示。那麼如何判定誰勝誰負呢? user(人) compu

2.線性表的鏈式儲存結構————單鏈表(思路分析C語言C++完整程式

目錄 1.單鏈表的基本概念 (1)單鏈表:當連結串列中的每個結點只含有一個指標域時,稱為單鏈表。 (2)頭指標:如上圖所示,連結串列中第一個結點的儲存位置叫做頭指標。 (3)頭結點:頭結點是放在第一個元素結點之前的結點,頭結點不是連結串列中的必

PHP定時任務執行處理Crontab定時執行程式Linux設定定時任務(教程案例)

【第一步】:先寫task.sh指令碼檔案。 【第二步】:設定Crontab定時時間,定時執行task.sh指令碼檔案 【案例一】:每月1號、15號的06:10點,定時備份網站原始碼: 【第一步】:先寫youhutong.sh指令碼檔案。 [[email pr

學習筆記C語言—運算子

目錄 運算子 運算子優先順序 運算子 運算子型別 說明 運算子型別 說明 算術運算子 + − * / % 指標運算子 *

學習筆記C語言—常量

目錄 常量 常量 整型常量 常量是指在程式執行期間其數值不發生變化的資料。整型常量通常簡稱為整數。 整數可以是十進位制、八進位制和十六進位制數 浮點常量 浮點常

學習筆記C語言—資料型別

目錄 資料型別 基本資料型別 資料型別 基本資料型別 bool型別 使用bool型別 需要引入<stdbool.h> 型別bool的值域 型別名

智慧社群APP智慧社群小程式你想要的都在這裡!

現階段隨著我國智慧手機普及,手機功能的不斷整合與強化,手機成為了我們日常工作與生活中使用頻率最高的產品之一。除了時下熱門的移動支付外,手機開門也成為當下流行的趨勢。 隨著人工智慧、物聯網、大資料技術的成熟與發展,智慧社群建設也如火如荼,當下智慧社群APP、智慧社群小程式被年輕人的追崇,趣

Extjs表單元素實現橫向多列最簡單的程式碼示例

Ext.onReady(function(){ Ext.create('Ext.form.Panel',{ title : '橫向佈局測試', height : 130, width

Eureka--2第一個Eureka程式Eureka Client的自啟動原理和簡要過程

在之前的Spring Cloud Config的基礎上,搭建簡單的Eureka Server 沒有程式碼,很多試驗做不起來,我們先建立個Eureka Server再說。 本篇主要講如何建立Eureka Server和Eureka Client,還有個重點是通過原始碼分析E

簡單遠端遙控程式【網路程式設計 - 簡單遠端遙控程式C實現】

實驗內容 基於Windows下Winsocket程式設計 實現 1.list (顯示伺服器端當前路徑下所有檔案) 2.get 遠端檔案路徑 本地檔案路徑 (下載遠端檔案 到 本地檔案路徑 ) 3.port 本地檔案路徑 遠端檔案路徑 (上傳 本地檔案 到 本地檔案路徑下 ) 4.quit (退出程式) 參

[日常練習] 1. 基於素數及閏年判斷列印乘法口訣表的C語言實現

在日常學習中,我們能很快的分析得到一個數是否是素數,瞭解它的判定法則,但是要是給你100個數,你需要花費多少時間才能判斷其中的素數呢?又能保證多少正確率呢?好吧,即便你是數學巧算能手、珠心算大神,100的總量對於你來講是九牛一毛!!!但是我給你10000+個(我就是刻意為難你胖虎~),您慢慢算吧

c語言模擬磁碟尋道演算法:SSTF(最短尋道優先演算法CSCAN(迴圈掃描演算法SCAN(掃描演算法)

#include<stdio.h> #include<time.h> #include<stdlib.h> #include<string.h> #include<malloc.h> #include<math

B-樹的插入查詢刪除 及 可執行的C語言程式碼

 前面討論的查詢都是內查詢演算法,被查詢的資料都在記憶體。當查詢的資料放在外存,用平衡二叉樹作磁碟檔案的索引組織時,若以結點為內外存交換的單位,則找到需要的關鍵字之前,平均要進行lgn次磁碟讀操作,而磁碟、光碟的讀寫時間要比隨機存取的記憶體代價大得多。其二,外存的存取是以“

作業優先排程演算法 先來先服務短作業排程演算法(c語言描述)

/*先來先服務排程演算法*/ #include<stdio.h> #define N 10 int Arival[N]={0}; int Go[N]={0}; int Start[N]={0}; int End[N]={0}; int Timer[N]={0};

C語言模擬實現strncpystrncpystrncatstrstr和strrstr函式實現

以下是我用C語言模擬實現的部分字串函式: 1、strncpy函式的實現 #include<stdio.h> #include<assert.h> #include<

原碼反碼和補碼(C語言 計算機原理)

原碼、反碼和補碼  1).資料在記憶體中儲存的時候都是以二進位制的形式儲存的.     int num = 10;     原碼、反碼、補碼都是二進位制.只不過是二進位制的不同的表現形式.     資料是以補碼的二進位制儲存的.  2). 1個int型別的