C语言—报数游戏

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
	char op;
	int n = 0, m, flag = 0;

	srand(time(NULL));
	int x = rand() % 2;
	if (x == 0) printf("玩家先报!\n");
	else printf("电脑先报!\n");

	do
	{
		if (x == 0 || flag == 1)//玩家报数
		{
			flag = 1;

			printf("请输入你的报数:");
			scanf_s("%d%c", &n, &op);
			if (op == ' ')//如果你报两个数,比如5 6,则op等于空格,然后再输另一个数
			{
				scanf_s("%d", &m);
				n = m;
			}
			else (op == '\n');//如果你报一个数,比如7,则op等于回车换行,就不再输入数据了

			if (n == 30)
			{
				printf("你赢了电脑!");
				break;
			}
		}

		if (x == 1 || flag == 1)//电脑报数
		{
			flag = 1;

			printf("电脑报数为:");
			if ((30 - n) % 3 == 1)
			{
				printf("%d\n", n + 1);
				n = n + 1;
			}
			else if ((30 - n) % 3 == 2)
			{
				printf("%d %d\n", n + 1, n + 2);
				n = n + 2;
			}
			else
			{
				int y = rand() % 2;
				if (y == 0)
				{
					printf("%d\n", n + 1);
					n = n + 1;
				}
				else
				{
					printf("%d %d\n", n + 1, n + 2);
					n = n + 2;
				}
			}

			if (n == 30)
			{
				printf("你输了!");
                break;
            }
		}
	} while (n < 30);
	return 0;
}

用函数

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int ramdom();//随机生成0或者1
int computer_input(int n);//电脑报数
int player_input(int n);//玩家报数

int main()
{
	int n = 0;

	int x = ramdom();
	if (x == 0) printf("玩家先报!\n");
	else printf("电脑先报!\n");

	if (x == 1) n = computer_input(n);
	do
	{
		n = player_input(n);
		if (n == 30)
		{
			printf("你赢了电脑!");
			break;
		}

		n = computer_input(n);
		if (n == 30)
		{
			printf("你输了!");
			break;
		}

	} while (n < 30);
	return 0;
}

int ramdom()
{
	srand(time(NULL));
	return rand() % 2;
}
int computer_input(int n)
{
	printf("电脑报数为:");
	if ((30 - n) % 3 == 1)
	{
		printf("%d\n", n + 1);
		n = n + 1;
	}
	else if ((30 - n) % 3 == 2)
	{
		printf("%d %d\n", n + 1, n + 2);
		n = n + 2;
	}
	else
	{
		if (ramdom() == 0)
		{
			printf("%d\n", n + 1);
			n = n + 1;
		}
		else
		{
			printf("%d %d\n", n + 1, n + 2);
			n = n + 2;
		}
	}
	return n;
}
int player_input(int n)
{
	char op;
	int m;
	printf("请输入你的报数:");
	scanf_s("%d%c", &n, &op);
	if (op == ' ')
	{
		scanf_s("%d", &m);
		n = m;
	}
	else (op == '\n');
	return n;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值