我是靠谱客的博主 留胡子云朵,最近开发中收集的这篇文章主要介绍编程初学者入门11_井字棋游戏、进制转换、订闹钟(时间换算),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、井字棋游戏

题目描述

KiKi和BoBo玩 “井”字棋。也就是在九宫格中,只要任意行、列,或者任意对角线上面出现三个连续相同的棋子,就能获胜。请根据棋盘状态,判断当前输赢。

  • 输入描述:
    三行三列的字符元素,代表棋盘状态,字符元素用空格分开,代表当前棋盘,其中元素为K代表KiKi玩家的棋子,为O表示没有棋子,为B代表BoBo玩家的棋子。

  • 输出描述:
    如果KiKi获胜,输出“KiKi wins!”;
    如果BoBo获胜,输出“BoBo wins!”;
    如果没有获胜,输出“No winner!”。

  • 我的解答

直接暴力就完了~所用情况全放在if...else if里面

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char ch[3][3];
    int flag_k = 0,flag_b = 0;
    for(int i = 0;i<3;i++){
        for(int j = 0;j<3;j++){
            cin>>ch[i][j];
        }
    }
            //判断K
            if(ch[0][0] == 'K' && ch[0][1] == 'K' && ch[0][2] == 'K')
                flag_k = 1;
            else if(ch[1][0] == 'K' && ch[1][1] == 'K' && ch[1][2] == 'K')
                flag_k = 1;
            else if(ch[2][0] == 'K' && ch[2][1] == 'K' && ch[2][2] == 'K')
                flag_k = 1;
            else if(ch[0][0] == 'K' && ch[1][0] == 'K' && ch[2][0] == 'K')
                flag_k = 1;
            else if(ch[0][1] == 'K' && ch[1][1] == 'K' && ch[2][1] == 'K')
                flag_k = 1;
            else if(ch[0][2] == 'K' && ch[1][2] == 'K' && ch[2][2] == 'K')
                flag_k = 1;
            else if(ch[0][0] == 'K' && ch[1][1] == 'K' && ch[2][2] == 'K')
                flag_k = 1;
            else if(ch[0][2] == 'K' && ch[1][1] == 'K' && ch[2][0] == 'K')
                flag_k = 1;
            //判断B
            else if(ch[0][0] == 'B' && ch[0][1] == 'B' && ch[0][2] == 'B')
                flag_b = 1;
            else if(ch[1][0] == 'B' && ch[1][1] == 'B' && ch[1][2] == 'B')
                flag_b = 1;
            else if(ch[2][0] == 'B' && ch[2][1] == 'B' && ch[2][2] == 'B')
                flag_b = 1;
            else if(ch[0][0] == 'B' && ch[1][0] == 'B' && ch[2][0] == 'B')
                flag_b = 1;
            else if(ch[0][1] == 'B' && ch[1][1] == 'B' && ch[2][1] == 'B')
                flag_b = 1;
            else if(ch[0][2] == 'B' && ch[1][2] == 'B' && ch[2][2] == 'B')
                flag_b = 1;
            else if(ch[0][0] == 'B' && ch[1][1] == 'B' && ch[2][2] == 'B')
                flag_b = 1;
            else if(ch[0][2] == 'B' && ch[1][1] == 'B' && ch[2][0] == 'B')
                flag_b = 1;
    if(flag_k == 1)
        cout<<"KiKi wins!"<<endl;
    else if(flag_b == 1)
        cout<<"BoBo wins!";
    else if(flag_k == 0 && flag_b == 0)
        cout<<"No winner!";
        
    
    
}
  • 解答

是把矩阵转化为了 字符串 数组 ,可以更好地比较判断

#include<iostream>
#include<string>

using namespace std;

int main()
{
    string a[9];
    for(int i=0;i!=9;++i)
        cin>>a[i];
    if(a[0]==a[1] && a[0]==a[2] && a[0]!="O")//本题采用的暴力解法,采用if语句一个一个判断。。。。
    {
        if(a[0]=="K")
            cout<<"KiKi wins!"<<endl;
        else
            cout<<"BoBo wins!";
    }
    else if(a[3]==a[4]&& a[3]==a[5] && a[3]!="O")
    {
        if(a[3]=="K")
            cout<<"KiKi wins!"<<endl;
        else
            cout<<"BoBo wins!";
    }
    else if(a[6]==a[7]&& a[6]==a[8] && a[6]!="O")
    {
        if(a[6]=="K")
            cout<<"KiKi wins!"<<endl;
        else
            cout<<"BoBo wins!";
    }
    else if(a[0]==a[3]&& a[0]==a[6] && a[0]!="O")
    {
        if(a[0]=="K")
            cout<<"KiKi wins!"<<endl;
        else
            cout<<"BoBo wins!";
    }
    else if(a[1]==a[4]&& a[1]==a[7] && a[1]!="O")
    {
        if(a[1]=="K")
            cout<<"KiKi wins!"<<endl;
        else
            cout<<"BoBo wins!";
    }
    else if(a[2]==a[5]&& a[2]==a[8] && a[2]!="O")
    {
        if(a[2]=="K")
            cout<<"KiKi wins!"<<endl;
        else
            cout<<"BoBo wins!";
    }
    else if(a[0]==a[4]&& a[0]==a[8] && a[0]!="O")
    {
        if(a[0]=="K")
            cout<<"KiKi wins!"<<endl;
        else
            cout<<"BoBo wins!";
    }
    else if(a[2]==a[4]&& a[2]==a[6] && a[2]!="O")
    {
        if(a[2]=="K")
            cout<<"KiKi wins!";
        else
            cout<<"BoBo wins!";
    }
    else
        cout<<"No winner!"<<endl;
    return 0;
}

二、进制转换

题目描述

小乐乐在课上学习了二进制八进制与十六进制后,对进制转换产生了浓厚的兴趣。因为他的幸运数字是6,所以他想知道一个数表示为六进制后的结果。请你帮助他解决这个问题。

  • 输入描述:
    输入一个正整数n (1 ≤ n ≤ 109)

  • 输出描述:
    输出一行,为正整数n表示为六进制的结果

  • 解答

# include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    
    int arr[99],i = 0;//存放余数,后面需要逆序输出
    //char arr_s[] = "012345";
    cin>>n;
    while(n>0){
        arr[i++] = n % 6;
        n = n/6;
    }
    //逆序输出
    for(i = i - 1;i>= 0;i--){
        //int m = arr[i];
       // cout<<arr_s[m];
        cout<<arr[i];
    }
    return 0;
   
    
}

三、订闹钟

题目描述

小乐乐比较懒惰,他现在想睡觉,然后再去学习。他知道现在的时刻,以及自己要睡的时长,想设定一个闹钟叫他起床学习,但是他太笨了,不知道应该把闹钟设定在哪个时刻,请你帮助他。(只考虑时和分,不考虑日期)

  • 输入描述:
    输入现在的时刻以及要睡的时长k(单位:minute),中间用空格分开。

  • 输入格式:hour:minute k(如hour或minute的值为1,输入为1,而不是01)
    (0 ≤ hour ≤ 23,0 ≤ minute ≤ 59,1 ≤ k ≤ 109)

  • 输出描述:
    对于每组输入,输出闹钟应该设定的时刻,输出格式为标准时刻表示法(即时和分都是由两位表示,位数不够用前导0补齐)

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,m;
    scanf("%d:%d%d",&a,&b,&m);
    int shang = 0,yuShu = 0,h = 0,f_m = 0;//小时,分秒
    
        //去掉天数的影响
    while(m>60*24){
        m -= 60 * 24;
    }
    shang = m / 60;
    yuShu = m % 60;
        //满60分进位1小时
    if(b + yuShu > 60){
         shang++;
         f_m = b + yuShu - 60;
    }
    else
        f_m = b + yuShu;
    //满24小时,进位1天   
    if(a + shang > 24)
        h = a + shang - 24;
    else
        h = a + shang;
        //正确格式输出,宽度为2,不够位补0
    printf("%02d:%02d",h,f_m);
    
}

最后

以上就是留胡子云朵为你收集整理的编程初学者入门11_井字棋游戏、进制转换、订闹钟(时间换算)的全部内容,希望文章能够帮你解决编程初学者入门11_井字棋游戏、进制转换、订闹钟(时间换算)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部