首页 > 编程语言 >编程初学者入门11_井字棋游戏、进制转换、订闹钟(时间换算)

编程初学者入门11_井字棋游戏、进制转换、订闹钟(时间换算)

时间:2023-06-28 10:32:00浏览次数:35  
标签:11 60 ch int else 井字棋 flag 初学者 &&


一、井字棋游戏

题目描述

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,60,ch,int,else,井字棋,flag,初学者,&&
From: https://blog.51cto.com/u_15790456/6569646

相关文章

  • PTA实验实验7~11的总结及分析
    1.前言自上次的博客又过去了一个多月,经过一段时间对Java的学习我们也迎来了期末考试了。这几次pta是期末前的最后几次pta,考察了菜单程序和课程程序,难度较之前有所提升,在下面分析一下。2.设计与分析7-1菜单计价程序-5首先是这道题,本题在菜单计价程序-3的基础上增加了部分内容,......
  • PTA7-11总结
     一.前言PTA-7考察了菜单计价程序的迭代,主要考察类的基本结构设计,对输入字符串进行处理,对输入时间的处理,以及对输入的不同类型的菜品数据分类处理,难点在于输入数据的处理和判断输入异常,难度一般,题量少。PTA-8考察了课程成绩统计程序的第一次,主要考察一些类基本的结构设计,一些......
  • 题目集7~11的总结性Blog
    一、前言(1)pta第七次作业题目列表如下:7-1 菜单计价程序-5总结:这个菜单计价1程序-5是前菜单计价程序-3的迭代,难度较之前的有所提升,题目难度对我来说感觉很大,写了很久也没有拿下。(2)pta第八次作业题目列表如下:7-1课程成绩统计程序-1总结:总算是熬过了菜单,迎来了新的课......
  • oop题目集7~11的总结性Blog
    目录一、前言二、设计与分析:一、前言4~6的训练集难度较上一次提升很多,训练了很多java中独有的提供好的方法,如hashset,数组的sort等方法,实现了代码运行时间的优化,和内存的占用减少,学会了代码的封装,和使用类间关系,同时了解并使用了正则表达式,了解Scanner类中nextLine()等方法、Str......
  • 11.performance_schema_01
    1.Mysql的performance_schema是运行在较低级别的用于监控mysqlserver运行过程中资源消耗、资源等待的一个功能。2.查看当前是否支持root@mysqldb21:14:[performance_schema]>showengines;+--------------------+---------+--------------------------------------------......
  • OO题目集7-11总结
    一、前言本次题目集横跨时间较长,也是本课程的最后一次总结了,回首看第一次OO总结,真的感觉今时不同往日了,不仅仅是在能力上的提升,在各方各面上无疑都觉得已经成长了许多(变成了puls版小菜鸡)。题目集七本次题目集是菜单3的与菜单4不同迭代分支,是对于菜单3的另一个迭代方向,只要考察......
  • 力扣---1186. 删除一次得到子数组最大和
    给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和。换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能删一次哦),(删除后)子数组中至少应当有一个元素,然后该子数组(剩下)的元素总和是所有子数组之中最......
  • pta第三部分总结oop训练集09-11
    一,前言:oop09:7-1统计Java程序中关键词的出现次数:对Java中字符串,元字符,正则表达式的应用。oop10:7-1容器-HashMap-检索:对Java程序中HashMap的特性对输入内容进行检索的应用。7-2容器-HashMap-排序:对Java升序中HashMap的无序性的应用将其排序。7-3课程成绩......
  • 数字图像处理《11、表示和描述》
     第十一章:表示和描述1、 表示的方法有:边界追踪、链码、多边形近似法等;2、 边界的描绘子有:偏心率、形状数、傅立叶描绘子、统计矩等;3、 区域的描绘子有:圆度率、拓扑描绘子、纹理、不变矩等;4、 使用主分量进行的描述和关系描绘子适用于边界描述和区域描述;5、 最后总结目标......
  • Oracle 11.2.0.3 ORA-12012ORA-29280 ORA-06512
    Oracle11.2.0.3ORA-12012ORA-29280ORA-06512问题现象:dbalert日志中出现如下告警信息:Errorsinfile/app/oracle/diag/rdbms/cctv/CCTV2/trace/CCTV2_j000_1370.trc:ORA-12012:erroronautoexecuteofjob"ORACLE_OCM"."MGMT_CONFIG_JOB_2_2"ORA......