> 文档中心 > 将一个10进制数转化为任意进制数 && 猜拳小游戏

将一个10进制数转化为任意进制数 && 猜拳小游戏

1.如何将一个10进制数,转化为2~16进制之间的数。且当数字>=10时,输出相对应的字母A~F

2.制作一个猜拳的小游戏

一、10进制转化为任意进制

         1.首先知道进制的转化规则------可参考博主前几篇博客

         2.只能转化2~16进制这个去别的数

          3.只给他三次输入的机会,大于直接退出程序

          代码如下:

#define _CRT_SECURE_NO_WARNINGS#include#include#includevoid swap(int m, int n) {//将十进制整数m 转化为n进制的数   m的范围时int型数据的范围  你的范围是2~16int num[33] = {0};int i = 0;char c[] = { 'A','B','C','D','E','F' };//  >=10时依次对应 字母A~Fwhile (m > 0)//得到n进制的每个位上的数{num[i] = m % n;/*if (num[i] >= 10) {//如果n进制位上的数字大于10,则输出相对应的字母printf("num[%d]:%c ", i , c[num[i] - 10]);}else//如果n进制位上的数小于10,则输出其本身printf("num[%d]:%d ", i, num[i]);*/++i;m /= n;}/*printf("\n");*/printf("其%d进制为: ",n);for (int j = i - 1; j >= 0; j--) {//一次性输出  m转化为n进制 后的结果if (num[j] >= 10) {printf("%c",  c[num[j] - 10]);}elseprintf("%d", num[j]);}printf("\n");}int main() {int m;//输入的数int n;//要转化为几进制while (1){printf("请输入一个十进制的数:");scanf("%d", &m);/*if (m > 2147483647) {printf("你输入的数字越界,请检查后重新输入");Sleep(3000);exit(0);}*/int count = 0;do{//输入n的值,直到n的范围不满足条件为止printf("请输入要转化2-16进制之间的任意整数:");scanf("%d", &n);count++;if (count >= 3) {//输入次数限制,超过三次自动退出程序printf("你已经输入错误3次了,将在三秒后关闭,请明日再试\n");Sleep(3000);exit(0);}} while (n > 16 || n < 2);swap(m, n);printf("转化成功\n\n");}return 0;}

二、猜拳小游戏

                1.设置时间种子,生成一个随机数--------对应系统的石头剪刀、布

                2.用户输入 石头、剪刀、布

                3.比较用户与系统的拳,并判断分出胜负

代码如下:

#include#include //为了设置时间函数#include//为了设置时间种子#define Rock 0//石头#define Sci 1//剪刀#define Pap 2//布int main() {srand((unsigned)time(0));printf_s("\t\t\t\t\t*----------石头:0----------*\n");printf_s("\t\t\t\t\t**---------剪刀:1---------**\n");printf_s("\t\t\t\t\t***----------布:2---------***\n");int cur = -1;while (1){int sys = rand() % 3;/*printf_s("sys:%d\n", sys);*/printf_s("请输入你的拳(只能输入相对应的数字):");scanf_s("%d", &cur);if (cur 2) {printf_s("你输入的数字有问题,请重新输入\n");break;}if ((cur == 0 && sys == 1) ||(cur == 1 && sys == 2) ||(cur == 2 && sys == 0)) {printf_s("你赢了\n");}else if ((cur == 0 && sys == 2) ||(cur == 1 && sys == 0) ||(cur == 2 && sys == 1)) {printf_s("你输了\n");}elseprintf_s("平局\n");/*printf_s("cur: %d   sys: %d \n",cur,sys);*/printf_s("cur=%s   ", cur == 0 ? "石头" : (cur == 1) ? "剪刀" : "布");printf_s("sys=%s\n", sys == 0 ? "石头" : (sys == 1) ? "剪刀" : "布");}return 0;}

总结:10进制数转化为任意进制的数,首先要熟悉进制是如何转化的,以及转化的步骤,了解这些,写一个类似于这种的小程序并不难。

            猜拳游戏:重点在于生成系统的拳,并和自己输入的拳数比较