1.如何将一个10进制数,转化为2~16进制之间的数。且当数字>=10时,输出相对应的字母A~F
2.制作一个猜拳的小游戏
一、10进制转化为任意进制
1.首先知道进制的转化规则------可参考博主前几篇博客
2.只能转化2~16进制这个去别的数
3.只给他三次输入的机会,大于直接退出程序
代码如下:
#define _CRT_SECURE_NO_WARNINGS #include#include #include void swap(int m, int n) { //将十进制整数m 转化为n进制的数 m的范围时int型数据的范围 你的范围是2~16 int num[33] = {0}; int i = 0; char c[] = { 'A','B','C','D','E','F' }; // >=10时依次对应 字母A~F while (m > 0) //得到n进制的每个位上的数 { num[i] = m % n; ++i; m /= n; } printf("其%d进制为: ",n); for (int j = i - 1; j >= 0; j--) { //一次性输出 m转化为n进制 后的结果 if (num[j] >= 10) { printf("%c", c[num[j] - 10]); } else printf("%d", num[j]); } printf("n"); } int main() { int m; //输入的数 int n; //要转化为几进制 while (1) { printf("请输入一个十进制的数:"); scanf("%d", &m); 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("转化成功nn"); } 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("ttttt*----------石头:0----------*n"); printf_s("ttttt**---------剪刀:1---------**n"); printf_s("ttttt***----------布:2---------***n"); int cur = -1; while (1) { int sys = rand() % 3; printf_s("请输入你的拳(只能输入相对应的数字):"); scanf_s("%d", &cur); if (cur < 0 || 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"); } else printf_s("平局n"); printf_s("cur=%s ", cur == 0 ? "石头" : (cur == 1) ? "剪刀" : "布"); printf_s("sys=%sn", sys == 0 ? "石头" : (sys == 1) ? "剪刀" : "布"); } return 0; }
总结:10进制数转化为任意进制的数,首先要熟悉进制是如何转化的,以及转化的步骤,了解这些,写一个类似于这种的小程序并不难。
猜拳游戏:重点在于生成系统的拳,并和自己输入的拳数比较



