标签:失败 石头 har 答案 玩家 draw 函数 count stat
练习3-1
/* 猜拳游戏(其四:分割函数/显示成绩)*/ #include <time.h> #include <stdio.h> #include <stdlib.h> int human; /* 玩家的手势 */ int comp; /* 计算机的手势 */ int win_no; /* 胜利次数 */ int lose_no; /* 失败次数 */ int draw_no; /* 平局次数 */ char* hd[] = { "石头", "剪刀", "布" }; /* 手势 */ /*--- 初始处理 ---*/ void initialize(void) { win_no = 0; /* 胜利次数 */ lose_no = 0; /* 失败次数 */ draw_no = 0; /* 平局次数 */ srand(time(NULL)); /* 设定随机数种子 */ printf("猜拳游戏开始!!\n"); } /*--- 运行猜拳游戏(读取/生成手势)---*/ void jyanken(void) { int i; comp = rand() % 3; /* 用随机数生成计算机的手势(0~2)*/ do { printf("\n\a石头剪刀布 ···"); for (i = 0; i < 3; i++) printf(" (%d)%s", i, hd[i]); printf(":"); scanf("%d", &human); /* 读取玩家的手势 */ } while (human < 0 || human > 2); } /*--- 更新胜利/失败/平局次数 ---*/ void count_no(int result) { switch (result) { case 0: draw_no++; puts("平局。"); break; /* 平局 */ case 1: lose_no++; puts("你输了。"); break; /* 失败 */ case 2: win_no++; puts("你赢了。"); break; /* 胜利 */ } } /*--- 确认是否再次挑战 ---*/ int confirm_retry(void) { int x; printf("再来一次吗···(0)否 (1)是:"); scanf("%d", &x); return x; } int main(void) { int judge; /* 胜负 */ int retry; /* 再来一次?*/ initialize(); /* 初始处理 */ do { jyanken(); /* 运行猜拳游戏 */ /* 显示计算机和玩家的手势 */ printf("我出%s,你出%s。\n", hd[comp], hd[human]); judge = (human - comp + 3) % 3; /* 判断胜负 */ count_no(judge); /* 更新胜利/失败/平局次数 */ retry = confirm_retry(); /* 确认是否再次挑战 */ } while (retry == 1); printf("%d胜%d负%d平。\n", win_no, lose_no, draw_no); return 0; }
练习3-2
/* 猜拳游戏(其五:先赢满3局者胜)*/ #include <time.h> #include <stdio.h> #include <stdlib.h> int human; /* 玩家的手势 */ int comp; /* 计算机的手势 */ int win_no; /* 胜利次数 */ int lose_no; /* 失败次数 */ int draw_no; /* 平局次数 */ char* hd[] = { "石头", "剪刀", "布" }; /* 手势 */ /*--- 初始处理 ---*/ void initialize(void) { win_no = 0; /* 胜利次数 */ lose_no = 0; /* 失败次数 */ draw_no = 0; /* 平局次数 */ srand(time(NULL)); /* 设定随机数种子 */ printf("猜拳游戏开始!!\n"); } /*--- 运行猜拳游戏(读取/生成手势) ---*/ void jyanken(void) { int i; comp = rand() % 3; /* 用随机数生成计算机的手势(0~2)*/ do { printf("\n\a石头剪刀布 ···"); for (i = 0; i < 3; i++) printf(" (%d)%s", i, hd[i]); printf(":"); scanf("%d", &human); /* 读取玩家的手势 */ } while (human < 0 || human > 2); } /*--- 更新胜利/失败/平局次数 ---*/ void count_no(int result) { switch (result) { case 0: draw_no++; break; /* 平局 */ case 1: lose_no++; break; /* 失败 */ case 2: win_no++; break; /* 胜利 */ } } /*--- 显示判断结果 ---*/ void disp_result(int result) { switch (result) { case 0: puts("平局。"); break; /* 平局 */ case 1: puts("你输了。"); break; /* 失败 */ case 2: puts("你赢了。"); break; /* 胜利 */ } } int main(void) { int judge; /* 胜负 */ int cnt; printf("要猜赢几次?"); scanf("%d", &cnt); initialize(); /* 初始处理 */ do { jyanken(); /* 运行猜拳游戏 */ /* 显示计算机和玩家的手势 */ printf("我出%s,你出%s。\n", hd[comp], hd[human]); judge = (human - comp + 3) % 3; /* 判断胜负 */ count_no(judge); /* 更新胜利/失败/平局次数 */ disp_result(judge); /* 显示判断结果 */ } while (win_no < cnt && lose_no < cnt); printf(win_no == cnt?"\n□你赢了。\n" : "\n■我赢了。\n"); printf("%d胜%d负%d平。\n", win_no, lose_no, draw_no); return 0; }
练习3-3
/* 猜拳游戏(其四:分割函数/显示成绩)*/ #include <time.h> #include <stdio.h> #include <stdlib.h> int human; /* 玩家的手势 */ int comp; /* 计算机的手势 */ int win_no; /* 胜利次数 */ int lose_no; /* 失败次数 */ int draw_no; /* 平局次数 */ char* hd[] = { "石头", "剪刀", "布" }; /* 手势 */ /*--- 初始处理 ---*/ void initialize(void) { win_no = 0; /* 胜利次数 */ lose_no = 0; /* 失败次数 */ draw_no = 0; /* 平局次数 */ srand(time(NULL)); /* 设定随机数种子 */ printf("猜拳游戏开始!!\n"); } /*--- 运行猜拳游戏(读取/生成手势)---*/ void jyanken(void) { int i; comp = rand() % 3; /* 用随机数生成计算机的手势(0~2)*/ do { comp = rand() % 3; } while (comp == 1); do { printf("\n\a石头剪刀布 ···"); for (i = 0; i < 3; i++) printf(" (%d)%s", i, hd[i]); printf(":"); scanf("%d", &human); /* 读取玩家的手势 */ } while (human < 0 || human > 2); } /*--- 更新胜利/失败/平局次数 ---*/ void count_no(int result) { switch (result) { case 0: draw_no++; break; /* 平局 */ case 1: lose_no++; break; /* 失败 */ case 2: win_no++; break; /* 胜利 */ } } /*--- 显示判断结果 ---*/ void disp_result(int result) { switch (result) { case 0: puts("平局。"); break; /* 平局 */ case 1: puts("你输了。"); break; /* 失败 */ case 2: puts("你赢了。"); break; /* 胜利 */ } } /*--- 确认是否再次挑战 ---*/ int confirm_retry(void) { int x; printf("再来一次吗···(0)否 (1)是:"); scanf("%d", &x); return x; } int main(void) { int judge; /* 胜负 */ int retry; /* 再来一次?*/ initialize(); /* 初始处理 */ do { jyanken(); /* 运行猜拳游戏 */ /* 显示计算机和玩家的手势 */ printf("我出%s,你出%s。\n", hd[comp], hd[human]); judge = (human - comp + 3) % 3; /* 判断胜负 */ count_no(judge); /* 更新胜利/失败/平局次数 */ disp_result(judge); /* 显示判断结果 */ retry = confirm_retry(); /* 确认是否再次挑战 */ } while (retry == 1); printf("%d胜%d负%d平。\n", win_no, lose_no, draw_no); return 0; }
练习3-4
/* 猜拳游戏(其四:分割函数/显示成绩)*/ #include <time.h> #include <stdio.h> #include <stdlib.h> int human; /* 玩家的手势 */ int comp; /* 计算机的手势 */ int win_no; /* 胜利次数 */ int lose_no; /* 失败次数 */ int draw_no; /* 平局次数 */ char* hd[] = { "石头", "剪刀", "布" }; /* 手势 */ /*--- 初始处理 ---*/ void initialize(void) { win_no = 0; /* 胜利次数 */ lose_no = 0; /* 失败次数 */ draw_no = 0; /* 平局次数 */ srand(time(NULL)); /* 设定随机数种子 */ printf("猜拳游戏开始!!\n"); } /*--- 运行猜拳游戏(读取/生成手势)---*/ void jyanken(void) { int i; static int cnt = 0; if (cnt == 0) { comp = 0; cnt++; } else { comp = rand() % 3; } /* 用随机数生成计算机的手势(0~2)*/ do { printf("\n\a石头剪刀布 ···"); for (i = 0; i < 3; i++) printf(" (%d)%s", i, hd[i]); printf(":"); scanf("%d", &human); /* 读取玩家的手势 */ } while (human < 0 || human > 2); } /*--- 更新胜利/失败/平局次数 ---*/ void count_no(int result) { switch (result) { case 0: draw_no++; break; /* 平局 */ case 1: lose_no++; break; /* 失败 */ case 2: win_no++; break; /* 胜利 */ } } /*--- 显示判断结果 ---*/ void disp_result(int result) { switch (result) { case 0: puts("平局。"); break; /* 平局 */ case 1: puts("你输了。"); break; /* 失败 */ case 2: puts("你赢了。"); break; /* 胜利 */ } } /*--- 确认是否再次挑战 ---*/ int confirm_retry(void) { int x; printf("再来一次吗···(0)否 (1)是:"); scanf("%d", &x); return x; } int main(void) { int judge; /* 胜负 */ int retry; /* 再来一次?*/ initialize(); /* 初始处理 */ do { jyanken(); /* 运行猜拳游戏 */ /* 显示计算机和玩家的手势 */ printf("我出%s,你出%s。\n", hd[comp], hd[human]); judge = (human - comp + 3) % 3; /* 判断胜负 */ count_no(judge); /* 更新胜利/失败/平局次数 */ disp_result(judge); /* 显示判断结果 */ retry = confirm_retry(); /* 确认是否再次挑战 */ } while (retry == 1); printf("%d胜%d负%d平。\n", win_no, lose_no, draw_no); return 0; }
练习3-5
/* 猜拳游戏(其四:分割函数/显示成绩)*/ #include <time.h> #include <stdio.h> #include <stdlib.h> int human; /* 玩家的手势 */ int comp; /* 计算机的手势 */ int win_no; /* 胜利次数 */ int lose_no; /* 失败次数 */ int draw_no; /* 平局次数 */ char* hd[] = { "石头", "剪刀", "布" }; /* 手势 */ /*--- 初始处理 ---*/ void initialize(void) { win_no = 0; /* 胜利次数 */ lose_no = 0; /* 失败次数 */ draw_no = 0; /* 平局次数 */ srand(time(NULL)); /* 设定随机数种子 */ printf("猜拳游戏开始!!\n"); } /*--- 运行猜拳游戏(读取/生成手势)---*/ void jyanken(void) { static int cnt=0; int i; comp = rand() % 3; /* 用随机数生成计算机的手势(0~2)*/ cnt++; do { printf("\n\a石头剪刀布 ···"); for (i = 0; i < 3; i++) printf(" (%d)%s", i, hd[i]); printf(":"); scanf("%d", &human); /* 读取玩家的手势 */ } while (human < 0 || human > 2); if (cnt % 5 == 0) { comp = (human + 2) % 3; } } /*--- 更新胜利/失败/平局次数 ---*/ void count_no(int result) { switch (result) { case 0: draw_no++; break; /* 平局 */ case 1: lose_no++; break; /* 失败 */ case 2: win_no++; break; /* 胜利 */ } } /*--- 显示判断结果 ---*/ void disp_result(int result) { switch (result) { case 0: puts("平局。"); break; /* 平局 */ case 1: puts("你输了。"); break; /* 失败 */ case 2: puts("你赢了。"); break; /* 胜利 */ } } /*--- 确认是否再次挑战 ---*/ int confirm_retry(void) { int x; printf("再来一次吗···(0)否 (1)是:"); scanf("%d", &x); return x; } int main(void) { int judge; /* 胜负 */ int retry; /* 再来一次?*/ initialize(); /* 初始处理 */ do { jyanken(); /* 运行猜拳游戏 */ /* 显示计算机和玩家的手势 */ printf("我出%s,你出%s。\n", hd[comp], hd[human]); judge = (human - comp + 3) % 3; /* 判断胜负 */ count_no(judge); /* 更新胜利/失败/平局次数 */ disp_result(judge); /* 显示判断结果 */ retry = confirm_retry(); /* 确认是否再次挑战 */ } while (retry == 1); printf("%d胜%d负%d平。\n", win_no, lose_no, draw_no); return 0; }
练习3-6
/* 猜拳游戏(其五:先赢满3局者胜)*/ #include <time.h> #include <stdio.h> #include <stdlib.h> int human; /* 玩家的手势 */ int comp; /* 计算机的手势 */ int win_no; /* 胜利次数 */ int lose_no; /* 失败次数 */ int draw_no; /* 平局次数 */ int v[128]; int x[128]; int m[128]; int cnt = 0; int i; char* hd[] = { "石头", "剪刀", "布" }; /* 手势 */ char* result[] = { "平局", "你输了", "你赢了" }; /* 手势 */ /*--- 初始处理 ---*/ void initialize(void) { win_no = 0; /* 胜利次数 */ lose_no = 0; /* 失败次数 */ draw_no = 0; /* 平局次数 */ srand(time(NULL)); /* 设定随机数种子 */ printf("猜拳游戏开始!!\n"); } /*--- 运行猜拳游戏(读取/生成手势) ---*/ void jyanken(void) { int i; comp = rand() % 3; /* 用随机数生成计算机的手势(0~2)*/ v[cnt] = comp; do { printf("\n\a石头剪刀布 ···"); for (i = 0; i < 3; i++) printf(" (%d)%s", i, hd[i]); printf(":"); scanf("%d", &human); x[cnt] = human; } while (human < 0 || human > 2); cnt++; } /*--- 更新胜利/失败/平局次数 ---*/ void count_no(int result) { switch (result) { case 0: draw_no++; break; /* 平局 */ case 1: lose_no++; break; /* 失败 */ case 2: win_no++; break; /* 胜利 */ } } /*--- 显示判断结果 ---*/ void disp_result(int result) { switch (result) { case 0: puts("平局。"); break; /* 平局 */ case 1: puts("你输了。"); break; /* 失败 */ case 2: puts("你赢了。"); break; /* 胜利 */ } } int main(void) { int judge; /* 胜负 */ i = 0; initialize(); /* 初始处理 */ do { jyanken(); /* 运行猜拳游戏 */ /* 显示计算机和玩家的手势 */ printf("我出%s,你出%s。\n", hd[comp], hd[human]); judge = (human - comp + 3) % 3; /* 判断胜负 */ m[i] = judge; count_no(judge); /* 更新胜利/失败/平局次数 */ disp_result(judge); /* 显示判断结果 */ i++; } while (win_no < 3 && lose_no < 3); printf(win_no == 3 ? "\n□你赢了。\n" : "\n■我赢了。\n"); printf("%d胜%d负%d平。\n", win_no, lose_no, draw_no); for (i = 0; i <cnt; i++) { printf("第%d次猜拳,玩家出%s,计算机出%s,结果是%s\n",i+1,hd[x[i]],hd[v[i]],result[m[i]]); } return 0; }
标签:失败 石头 har 答案 玩家 draw 函数 count stat
原文地址:https://www.cnblogs.com/nightswatch-candle/p/11986674.html