编程初学者入门11

    科技2022-07-11  101

    一、井字棋游戏

    题目描述

    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("d:d",h,f_m); }
    Processed: 0.045, SQL: 8