我正在尝试制作一个简单的石头剪刀布代码

问题描述 投票:0回答:1

我一直在尝试用我非常非常有限的 C 语言知识来编写一个非常简单的石头剪刀布代码。

每当我运行该程序时,只有在我输入 2 个数字(1-剪刀、2-纸、3-石头)之后它才会打印任何内容,并且它也不会打印最后一条语句。

输出:

1
3
Press 1 for scissors, 2 for paper or 3 for rock. 

Same for player two.

代码:

#include <stdio.h>

int main() {
    printf("Press 1 for scissors, 2 for paper or 3 for rock. \n");
    int f;
    int h;
    scanf("%d", &f);
    printf("\nSame for player two.");
    scanf("%d", &h);
    if (f == h) {
        printf("Tie\n");
    }
    
    if (f == 1 && h == 2) {
        printf("Player 1 won\n");
    }
    
    if (f == 2 && h == 1) {
        printf("Player 2 won\n");
    }

    if (f == 2 && h == 3) {
        printf("Player 1 won\n");
    }
    
    if (f == 3 && h == 2) {
        printf("Player 2 won\n");
    }
    
    if (f == 3 && h == 1) {
        printf("Player 1 won\n");
    }
    
    if (f == 1 && h == 3) {
        printf("Player 2 won\n");
    }
    
    return 0;   
}

这应该是一个仅供我兴趣的项目,我不想知道专家如何制作剪刀石头布游戏,而是想知道我做错了什么导致代码无法正常工作预计。

我期待与在 C++ 中使用

cout<<
if
命令类似的结果。

c
1个回答
0
投票

根据 ISO C11 标准§7.21.3,当交互式设备(例如键盘)请求新输入时,标准输出流应该自动刷新。然而,ISO C 标准并没有严格要求这一点。

您使用的平台似乎不遵循这些准则。

为了解决此问题,您可以在调用输入函数(例如

fflush(stdout)
)之前显式调用
fscanf

© www.soinside.com 2019 - 2024. All rights reserved.