我一直在尝试用我非常非常有限的 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
命令类似的结果。
根据 ISO C11 标准§7.21.3,当交互式设备(例如键盘)请求新输入时,标准输出流应该自动刷新。然而,ISO C 标准并没有严格要求这一点。
您使用的平台似乎不遵循这些准则。
为了解决此问题,您可以在调用输入函数(例如
fflush(stdout)
)之前显式调用 fscanf
。