1. 电脑随机产生1000—9999之间的数字(包括1000、9999);
提示:用rand函数,该函数在stdlib.h库中,并保证多次运行产生不同的随机数
2. 玩家每轮有七次猜数的机会,如果七次都没有猜到,则失败,判为0分;
3. 玩家每轮可以请求帮助,提问关于产生数字的信息,扣分细则如下;
4. 游戏以百分制形式,初始分为100,最后得分最多为赢家。
帮助内容及扣分细则:
. 判断你所猜的数中各位数字对应位置正误情况,以R表正确,E表错误。若随机数是2537,而猜的数是1234,则输出EERE,代表猜的数第3位正确,第1,2,4位错误。
——扣当前分数的1/10
. 判断你所猜的数中正确数字是什么。若随机数是2537,而猜的数是1234,则输出有两个数字正确,它们是2,3。 ——扣当前分数的1/10
你的代码呢?不能一行也不写吧!
楼上说得有道理
这个不难的,可以自己试着写下,能增强自己的动手能力,是个很好的机会
用你代码改的,多写写就好
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void help(int type, int r, int input)
{
char szR[16] = {0};
char szI[16] = {0};
char* pR = itoa(r, szR, 10);
char* pI = itoa(input, szI, 10);
if (type == 0)
{
printf("匹配的结果: ");
for (int n = 0; n < 4 ; n++)
{
if (pR[n] == '\0' || pI[n] == '\0')
printf("E");
else
{
if (pR[n] != pI[n])
printf("E");
else
printf("R");
}
}
}
else
{
printf("猜对的数字: ");
for (int n = 0; n < 4 ; n++)
{
if (pR[n] == '\0' || pI[n] == '\0')
return;
if (pR[n] == pI[n])
printf("%c,", pI[n]);
}
}
printf("\n");
}
int main()
{
int input = 0;
int r = 0;
while (true)
{
srand((int)time(0)); // 设置随机种子, 保证多次运行产生不同的随机数
r = rand() % 10000 + 1000; // 电脑随机产生1000—9999之间的数字(包括1000、9999)
int nCount = 0;
int sort = 100;
int help_type = 0;
while (nCount < 7)
{
printf("\nplease enter a number [1000, 9999]:");
scanf("%d", &input);
if (r != input)
{
if (nCount == 6) // 第七次猜错了
break;
printf("\n猜数错误,请选择需要的帮助(输入数字序号):\n");
printf("0:你所猜的数中各位数字对应位置正误情况\n");
printf("1:你所猜的数中正确数字是什么\n");
printf("其他数字:表示你不需要帮助\n\n");
scanf("%d", &help_type);
if (help_type == 0 || help_type == 1)
{
help(help_type, r, input);
sort -= sort / 10;
}
printf("\n猜数第%d次,当前分数%d\n",nCount + 1, sort);
}
else
{
printf("\n\n=========================================== \n");
printf("=========================================== \n");
printf("你成功猜出结果,最终的分数是%d,游戏重新开始\n");
break;
}
++nCount;
}
if (nCount >= 7)
{
printf("\n\n=========================================== \n");
printf("=========================================== \n");
printf("你最终的分数是0,正确数字为%d,游戏重新开始\n", r);
}
}
return 0;
}