IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> PTA团体程序设计天梯赛—练习集— L1-044 稳赢 (15分)【 C / C++ / Python】 -> 正文阅读

[Python知识库]PTA团体程序设计天梯赛—练习集— L1-044 稳赢 (15分)【 C / C++ / Python】

L1-044 稳赢 (15分)

文章提供者:海南师范大学 ---- 人工智能教育协会 ---- 赵雨辰、秦长风、张语晨、王垚儒

(一)题目要求

大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
在这里插入图片描述
现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。

输入格式:

输入首先在第一行给出正整数K(≤10),即平局间隔的次数。随后每行给出对方的一次出招:ChuiZi代表“锤子”、JianDao代表“剪刀”、Bu代表“布”。End代表输入结束,这一行不要作为出招处理。

输出格式:

对每一个输入的出招,按要求输出稳赢或平局的招式。每招占一行。

输入样例:

2
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
End

输出样例:

Bu
ChuiZi
Bu
ChuiZi
JianDao
ChuiZi
Bu

(二)代码如下

方法一:(C语言)

#include<stdio.h>
#include<string.h>
int main(){
	char ch[4][8]={
	"Bu","JianDao","ChuiZi","Bu"};//先录入一组后克前的顺序 
	int n,i,k=1;//k记录出招次数 
	char zhao[8];//每局游戏出的手势 
	scanf("%d",&n);
	getchar();
	while(scanf("%s",zhao)){
		if(!strcmp(zhao,"End")){
			break;//输入End离开循环 
		}
		for(i=0;i<3;i++){
			if(!strcmp(zhao,ch[i])){//寻找和ch数组中一样的招 
				break;
			}
		}
		if(k<=n){
			i++;//你所出招的后一个招 
			puts(ch[i]);
			k++;
		}
		else{//当k==0的时候平局 
		puts(ch[i]);
		k=1;
		}
	}
	return 0;
}

方法二:(C++)1st Edn.

#include <iostream>
using namespace std;
int main()
{
    //定义
    int k;           //间隔次数 
    string a;        //对方出招 
    int i=0;         //顺序次数(反复)(平局归零) 
    
    //输入
    cin >> k;
    
    //运算 //输出
	while(cin >> a)
    {
        if(a == "End")         //结束退出
            break;
        if(i == k)             //平局情况
        {
            cout << a << endl;
            i=0;                          //平局 顺序次数归零
        }
        else                   //胜出情况
		{
        	if(a == "ChuiZi")
            	cout << "Bu" << endl;
	        if(a == "Bu")
	            cout << "JianDao" << endl;
	        if(a == "JianDao")
	            cout << "ChuiZi" << endl;
	    	i++;                          //对局 顺序次数增加 
		}
    }
    
    return 0;
}

方法三:(C++)2nd Edn.

#include<bits/stdc++.h>
using namespace std;

int main(){
    char game[20]; // 存储输入数组 
    char method[4][10] = {"JianDao", "Bu", "ChuiZi"};
    int count;
    
    cin >> count;
    for(int i=1; cin>>game; i++){  // 这里为了省事,一个for聚合了很多条件,做项目的彭朋友不要参考 
    	if(game[0] == 'E'){		// 结束推出判断 
			break; 		
		}
		else if(i%(count+1) == 0){ 		// 平局判断 
    		cout << game << endl; continue;
		}
		else{		// 输出判断,根据JianDao", "Bu", "ChuiZi"的首字母编码将其对应映射到method数组中的结果 
			cout << method[(game[0]-60)/7] << endl;
		}
	}
        
	return 0;
}

方法四:(Python)

count = input()    #输入平局间隔局数
end = "End"
ls = []    #建立列表储存输入的手势
i = 1
while(i):    #结束对局
    x = input()
    if(x == "End"):
        break
    ls.append(x)    #在ls中添加对象
for k in ls:    #遍历
    if((i % (int(count) + 1)) == 0):    #判断此局是否为规定平局
        print(k)
    else:    #稳赢
        if(k == "ChuiZi"):
            print("Bu")
        elif(k == "Bu"):
            print("JianDao")
        elif(k == "JianDao"):
            print("ChuiZi")
    i += 1    #胜出局次数迭加

诚挚希望有心者指正,渴望简单的方法。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-26 12:02:42  更:2021-07-26 12:02:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 8:18:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码