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;
/*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]);
}
else
printf("%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 < 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: %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进制数转化为任意进制的数,首先要熟悉进制是如何转化的,以及转化的步骤,了解这些,写一个类似于这种的小程序并不难。
猜拳游戏:重点在于生成系统的拳,并和自己输入的拳数比较
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)