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

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

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进制数转化为任意进制的数,首先要熟悉进制是如何转化的,以及转化的步骤,了解这些,写一个类似于这种的小程序并不难。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1499169.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-25
下一篇 2022-06-25

发表评论

登录后才能评论

评论列表(0条)

保存