一、井字棋游戏
题目描述
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);
}