c 语言基础:L1-044 稳赢

        大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:

c 语言基础:L1-044 稳赢_第1张图片

        现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。

输入格式:

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

输出格式:

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

输入样例:

2
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
End

输出样例:

Bu
ChuiZi
Bu
ChuiZi
JianDao
ChuiZi
Bu

程序源码:

#include   // 引入C语言标准输入输出库  
#include  // 引入C语言字符串处理库  
  
int main() { // main函数的定义,C语言程序的入口  
    int K, count = 0, i, count2 = 0; // 定义并初始化整数变量K、count和count2,其中count和count2初始值为0  
    char opponent_move[10001][9]; // 定义一个字符数组opponent_move,可以存储10001个长度为9的字符串  
  
    // 通过scanf函数从标准输入读取一个整数并存储在K中  
    scanf("%d", &K);   
    // 通过gets函数从标准输入读取一行字符串并存储在opponent_move数组的第一个元素中  
    gets(opponent_move[0]);  
  
    // 这是一个无限循环,用于读取对方的出招,直到输入"End"为止  
    while (1)  
    {  
        // 通过gets函数从标准输入读取一行字符串并存储在opponent_move数组的下一个元素中,同时将count2自增1  
        gets(opponent_move[count2++]);   
        // 如果最新读取的字符串是"End",则跳出循环  
        if (strcmp(opponent_move[count2 - 1], "End") == 0)   
        {  
            break;  
        }  
    }  
  
    // 这个循环用于根据自己和对方的出招来决定下一步的行动  
    for (int i = 0; i < count2 - 1; i++)  
    {  
        // 如果计数器count超过K,则将count重置为0并且打印opponent_move[i](即对方的出招)  
        if (++count > K)   
        {  
            count = 0;  
            printf("%s\n", opponent_move[i]);  
        }  
        // 如果还没到K次,则根据自己和对方的出招来决定下一步的行动  
        else   
        {  
            // 如果对方的出招是"ChuiZi",则自己的出招是"Bu"  
            if (strcmp(opponent_move[i], "ChuiZi") == 0)  
                printf("Bu\n");  
            // 如果对方的出招是"Bu",则自己的出招是"JianDao"  
            else if (strcmp(opponent_move[i], "Bu") == 0)  
                printf("JianDao\n");  
            // 如果对方的出招是"JianDao",则自己的出招是"ChuiZi"  
            else if (strcmp(opponent_move[i], "JianDao") == 0)  
                printf("ChuiZi\n");  
        }  
    }  
    return 0; // main函数返回0,表示程序正常结束  
}

 

你可能感兴趣的:(c,c语言)