【问题标题】:Bulls and cows in c - arraysc - 数组中的公牛和奶牛
【发布时间】:2021-06-07 18:25:08
【问题描述】:

我正在尝试为“公牛和奶牛”游戏编写一个程序。 游戏说明: 该程序有一个秘密的 4 位数字。 用户必须猜测数字。 如果号码是:1235 以及用途猜测:1592 多头数量为 1, 因为用户猜到了一个正确的数字和它的位置, 奶牛的数量是3, 因为用户只猜数字。

我正在尝试进行猜测功能,但输出很奇怪。它仍然不是一个函数,只是试图让它先工作。 我必须使用一个字符数组和一个整数。用户需要选择键入 0 作为数字之一。

代码:


    #include <stdio.h>
    #include <conio.h>
    /A function that gets 4 chars from the user and checks if they're valid
    
    int main()
    {
    char guess[5]= {0};
    int i=0;
    
    printf("please enter a 4 digit interger\n");
    for (i=0;i<4; i++) {
    scanf("%d", &guess[i]);
    printf("your guess is:");
    for (i=0;i<4; i++) {
    printf("%d", guess[i]);
    } 
    }
        
    getch();
    return 0;
    
    }

奇怪的输出是:

Your guess is: -1281300

为什么不显示用户获得的数字? 非常感谢您的帮助!

【问题讨论】:

  • 如果您想要一个整数作为输入,则将其读入int 变量。如果您希望它作为字符串 - 然后使用 %s 格式说明符读取它。如果要逐字符读取,则格式说明符为%c
  • %dchar 的错误说明符。您希望%c%s 一次读取整个字符串。
  • 您忽略了 scanf 的返回值,后果自负。在这种情况下,阅读、输出和检查它会告诉你很多关于哪里出了问题。
  • 所以有一个来自[0,9] 的四个随机 IID 的序列,你通过预言机猜测我们得到了正确序列匹配的数量(公牛)和正确集合匹配的数量(牛) ?
  • 欢迎您!如果您是新手,您可以通过阅读 the tour 获得您的第一个“徽章”,并且可能会发现此主题和帮助中心的其他主题也很有用:How do I ask a good question?

标签: c


【解决方案1】:
  1. %d 格式说明符用于ints,通常大于chars。您可能正在写入guess[i] 之外的内存。 %cchar 的格式说明符。
  2. 您的写入循环在您的读取循环内。你读到guess[0],然后立即打印guess[0]guess[3],但除了guess[0] 之外的所有内容仍然为0。(除非它们因(1) 而被破坏)。

【讨论】:

    猜你喜欢
    • 2013-02-21
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 2020-05-12
    • 2019-12-19
    • 2011-12-04
    • 2012-07-27
    • 1970-01-01
    相关资源
    最近更新 更多