#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
bool play_game(void); // 模拟游戏,进行一次游戏,返回一个bool值,决出胜负
int roll_dice(void); // 记录两个骰子之和
int roll_dice(void) {
int x, y, z;// 定义变量
x = rand() % 6 + 1;// 获取1到6之间的随机数
y = rand() % 6 + 1;
z = x + y;//两点数之和
printf("你的点数之后为 :%d\n", z);
return z;//返回Z
}
bool play_game(void) {
int p, t;
p = roll_dice();
if(p == 7 || p == 11) {
return true;
}
else if(p == 2 || p == 3 || p == 12) {
return false;
}
else {
t = p;
printf("你的点数之后为 :%d\n", t);
for(; ; ) {
p = roll_dice();
if(p == t) {
return true;
}
else if(p == 7) {
return false;
}
}
}
}
int main(int argc, const char * argv[]) {
// insert code here...
printf("骰子游戏\n");
bool b;
char ch = 'y';
int i = 100, j = 0;
srand((unsigned) time(0)); // 放在循环外面,更新种子,使得每次产生不同的随机数
do {
printf("请下注:\n");
scanf("%d",&j);
b = play_game();
if(b) {
printf("你赢了!\n\n");
i=i+j;
}
else {
printf("你输了!\n\n");
i=i-j;
}
printf("是否输入Y或者y继续游戏? ");
ch = getchar();
getchar(); // 除去回车符
printf("\n");
}
while(ch=='y') ; printf("您的钱数:%d",i);
return 0;
}
为啥按Y或y就会结算退出,不能继续循环游戏?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- CSDN专家-深度学习进阶 2021-06-19 20:26关注
你每次输入下注后 回车被ch读入了,所以报错,这样就行了
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <stdbool.h> bool play_game(void); // 模拟游戏,进行一次游戏,返回一个bool值,决出胜负 int roll_dice(void); // 记录两个骰子之和 int roll_dice(void) { int x, y, z;// 定义变量 x = rand() % 6 + 1;// 获取1到6之间的随机数 y = rand() % 6 + 1; z = x + y;//两点数之和 printf("你的点数之后为 :%d\n", z); return z;//返回Z } bool play_game(void) { int p, t; p = roll_dice(); if(p == 7 || p == 11) { return true; } else if(p == 2 || p == 3 || p == 12) { return false; } else { t = p; printf("你的点数之后为 :%d\n", t); for(; ; ) { p = roll_dice(); if(p == t) { return true; } else if(p == 7) { return false; } } } } int main(int argc, const char * argv[]) { // insert code here... printf("骰子游戏\n"); bool b; char ch = 'y'; int i = 100, j = 0; srand((unsigned) time(0)); // 放在循环外面,更新种子,使得每次产生不同的随机数 do { printf("请下注:\n"); scanf("%d",&j); b = play_game(); if(b) { printf("你赢了!\n\n"); i=i+j; } else { printf("你输了!\n\n"); i=i-j; } printf("是否输入Y或者y继续游戏? "); getchar(); scanf("%c",&ch); printf("\n"); } while(ch=='y'); printf("您的钱数:%d",i); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错
- ¥20 @microsoft/fetch-event-source 流式响应问题
- ¥15 ogg dd trandata 报错
- ¥15 高缺失率数据如何选择填充方式
- ¥50 potsgresql15备份问题
- ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
- ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
- ¥60 pb数据库修改与连接
- ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
- ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?