标题:猜数字游戏问题
只看楼主
wuxiami
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2022-7-17
结帖率:100%
已结贴  问题点数:20 回复次数:17 
猜数字游戏问题

#include<stdio.h>

void main()
{


    int x;                            //随机生成数
    int n = 0;                           //输入的数
    int s = 0;                       //输入次数
    int a;                           //完全符合
    int b;                           //放置错误
    int g1, s1, b1, q1;              //n的各个数位
    int g2, s2, b2, q2;              //x的各个数位
    srand(time(0));                  //让随机生成数不重复
    x = rand() % 9999;
    for (;;)
    {
        printf("输入四位数字");
        scanf_s("%d", &n);

        g2 = x % 10;
        s2 = x / 10 % 10;
        b2 = x / 100 % 10;
        q2 = x / 1000;

        //输入
        int y = 0;       //while循环数字




        a = 0;                        //初始化
        b = 0;                          //初始化
        if (n == x)                    //猜的数字和生成随机数一样

        {
            printf("恭喜!经过%d次尝试,您答对了!\n", s);
            break;// exit(0);                                       //结束循环
        }
        else {//不一样的话  直接拆位
            g1 = n % 10;
            s1 = n / 10 % 10;
            b1 = n / 100 % 10;
            q1 = n / 1000;

            if (g1 == g2)    a++;
            if (s1 == s2)    a++;
            if (b1 == b2)    a++;
            if (q1 == q2)    a++;

            if (g1 == s2 || g1 == b2 || g1 == q2)    b++;
            if (s1 == g2 || s1 == b2 || s1 == q2)    b++;
            if (b1 == g2 || b1 == s2 || b1 == q2)    b++;
            if (q1 == g2 || q1 == s2 || q1 == b2)    b++;

            printf("有%d个数字完全符合,有%d个数字位置错误\n", a, b);
            s++;//次数增加
        }
    }
}



大佬们,一个猜数字的游戏,数字为4位,用户输入后,计算机进行判断,如果猜测的不正确,计算机要告诉用户,用户猜
      的数字,其中有几个数字的数值和位置是和正确的数字是一样的,有几个数字的数值和正确的数字一样,但是位置不
      一样。
      如正确的数字为7258
      用户输入1349的时候,计算机弹出提示:有0个数字完全符合,有0个数字位置错误
      用户输入1347的时候,计算机弹出提示:有0个数字完全符合,有1个数字位置错误
      用户输入7081的时候,计算机弹出提示:有1个数字完全符合,有1个数字位置错误
      用户输入2222的时候,计算机弹出提示:有1个数字完全符合,有3个数字位置错误
      用户输入8275的时候,计算机弹出提示:有1个数字完全符合,有3个数字位置错误
      用户输入7258的时候,计算机弹出提示:恭喜!经过6次尝试,您答对了!

vs2019下C语言

现在程序大部分情况可以正常运行  但是会发生这种情况:
输入四位数字0000
有0个数字完全符合,有0个数字位置错误
输入四位数字1111
有0个数字完全符合,有0个数字位置错误
输入四位数字2222
有0个数字完全符合,有0个数字位置错误
输入四位数字3333
有1个数字完全符合,有3个数字位置错误
输入四位数字4444
有0个数字完全符合,有0个数字位置错误
输入四位数字5555
有0个数字完全符合,有0个数字位置错误
输入四位数字6666
有1个数字完全符合,有3个数字位置错误
输入四位数字7777
有0个数字完全符合,有0个数字位置错误
输入四位数字8888
有2个数字完全符合,有4个数字位置错误
输入四位数字3688
有2个数字完全符合,有3个数字位置错误
输入四位数字

最后一个提示2完全符合   3位置错误
醉了
搜索更多相关主题的帖子: 位置 数字 错误 位数 输入 
2022-08-25 11:50
chenyucheng
Rank: 3Rank: 3
来 自:浙江省台州市临海市
等 级:论坛游侠
威 望:3
帖 子:141
专家分:181
注 册:2022-7-1
得分:7 
看不懂,你说的是猜数字AB版吧。
游戏规则:有四个不同的随机0到9数字,让你猜这四个数字分别是什么,顺序与随机数字序列要一样。如果数字或顺序不一样,就给出“几A几B”的结果,A所处的数字代表猜对的且位置相同的数的数量,B代表正确答案中有但位置不同的数的数量。

爱玩编程的小学生,有Python,但只会一点点C++。

版主->斑竹->竹子,所以版主是竹子。(doge)
//不要让我当版主
2022-08-25 12:18
wuxiami
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2022-7-17
得分:0 
回复 2楼 chenyucheng
对的
2022-08-25 14:53
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:7 
醉了
总得解释一下为什么“醉了”吧
2022-08-25 15:11
wuxiami
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2022-7-17
得分:0 
回复 4楼 rjsp
我那个例子输入应该提示2个完全正确2个位置错误,就是完全正确的数字和位置错误的数字加起来最多为4

[此贴子已经被作者于2022-8-25 16:08编辑过]

2022-08-25 16:01
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用wuxiami在2022-8-25 16:01:27的发言:

我那个例子输入应该提示2个完全正确2个位置错误,就是完全正确的数字和位置错误的数字加起来最多为4

从你贴出来的信息上看不出来呀!
你告诉大家,你的 x 是什么值,你输入的 n 是什么值,只有这样大家才能判断“应该提示2个完全正确2个位置错误”是不是正确。
2022-08-25 16:11
wuxiami
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2022-7-17
得分:0 
如 rand生成的正确的数字为7258
      用户输入1349的时候,计算机弹出提示:有0个数字完全符合,有0个数字位置错误
      用户输入1347的时候,计算机弹出提示:有0个数字完全符合,有1个数字位置错误
      用户输入7081的时候,计算机弹出提示:有1个数字完全符合,有1个数字位置错误
      用户输入2222的时候,计算机弹出提示:有1个数字完全符合,有3个数字位置错误
      用户输入8275的时候,计算机弹出提示:有1个数字完全符合,有3个数字位置错误
      用户输入7258的时候,计算机弹出提示:恭喜!经过6次尝试,您答对了!



但是有时候 提示完全符合和位置错误加起来是5

[此贴子已经被作者于2022-8-25 17:57编辑过]

2022-08-25 16:48
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
我们之间太难交流了,你只要告诉我你认为不正常(“醉了”)的地方,就是:
你的 x 是什么值,你输入的 n 是什么值,为什么你认为“应该提示2个完全正确2个位置错误”
2022-08-25 17:00
wuxiami
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2022-7-17
得分:0 
n是输入的四位数字  x是rand随机生成的四位答案

[此贴子已经被作者于2022-8-25 18:06编辑过]

2022-08-25 17:58
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
但是有时候 提示完全符合和位置错误加起来是5

假设x是8683,n是3688,按照你的代码逻辑,那就是“有2个数字完全符合,有3个数字位置错误”呀
“有2个数字完全符合”没什么好说的
8683的第一个数字8,在3688的第三位第四位发现了
8683的第三个数字8,在3688的第四位发现了
8683的第四个数字3,在3688的第一位发现了
所以是“有3个数字位置错误”
2022-08-25 19:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509867-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.280420 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved