练习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 = ; /* 胜利次数 */
lose_no = ; /* 失败次数 */
draw_no = ; /* 平局次数 */ srand(time(NULL)); /* 设定随机数种子 */ printf("猜拳游戏开始!!\n");
} /*--- 运行猜拳游戏(读取/生成手势)---*/
void jyanken(void)
{
int i; comp = rand() % ; /* 用随机数生成计算机的手势(0~2)*/ do {
printf("\n\a石头剪刀布 ···");
for (i = ; i < ; i++)
printf(" (%d)%s", i, hd[i]);
printf(":");
scanf("%d", &human); /* 读取玩家的手势 */
} while (human < || human > );
} /*--- 更新胜利/失败/平局次数 ---*/
void count_no(int result)
{
switch (result) {
case : draw_no++; puts("平局。"); break; /* 平局 */
case : lose_no++; puts("你输了。"); break; /* 失败 */
case : 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 + ) % ; /* 判断胜负 */ count_no(judge); /* 更新胜利/失败/平局次数 */ retry = confirm_retry(); /* 确认是否再次挑战 */ } while (retry == ); printf("%d胜%d负%d平。\n", win_no, lose_no, draw_no); return ;
}

练习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 = ; /* 胜利次数 */
lose_no = ; /* 失败次数 */
draw_no = ; /* 平局次数 */ srand(time(NULL)); /* 设定随机数种子 */ printf("猜拳游戏开始!!\n");
} /*--- 运行猜拳游戏(读取/生成手势) ---*/
void jyanken(void)
{
int i; comp = rand() % ; /* 用随机数生成计算机的手势(0~2)*/ do {
printf("\n\a石头剪刀布 ···");
for (i = ; i < ; i++)
printf(" (%d)%s", i, hd[i]);
printf(":");
scanf("%d", &human); /* 读取玩家的手势 */
} while (human < || human > );
} /*--- 更新胜利/失败/平局次数 ---*/
void count_no(int result)
{
switch (result) {
case : draw_no++; break; /* 平局 */
case : lose_no++; break; /* 失败 */
case : win_no++; break; /* 胜利 */
}
} /*--- 显示判断结果 ---*/
void disp_result(int result)
{
switch (result) {
case : puts("平局。"); break; /* 平局 */
case : puts("你输了。"); break; /* 失败 */
case : 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 + ) % ; /* 判断胜负 */ 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 ;
}

练习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 = ; /* 胜利次数 */
lose_no = ; /* 失败次数 */
draw_no = ; /* 平局次数 */ srand(time(NULL)); /* 设定随机数种子 */ printf("猜拳游戏开始!!\n");
} /*--- 运行猜拳游戏(读取/生成手势)---*/
void jyanken(void)
{
int i;
comp = rand() % ; /* 用随机数生成计算机的手势(0~2)*/
do
{
comp = rand() % ;
} while (comp == ); do {
printf("\n\a石头剪刀布 ···");
for (i = ; i < ; i++)
printf(" (%d)%s", i, hd[i]);
printf(":");
scanf("%d", &human); /* 读取玩家的手势 */
} while (human < || human > );
} /*--- 更新胜利/失败/平局次数 ---*/
void count_no(int result)
{
switch (result) {
case : draw_no++; break; /* 平局 */
case : lose_no++; break; /* 失败 */
case : win_no++; break; /* 胜利 */
}
} /*--- 显示判断结果 ---*/
void disp_result(int result)
{
switch (result) {
case : puts("平局。"); break; /* 平局 */
case : puts("你输了。"); break; /* 失败 */
case : 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 + ) % ; /* 判断胜负 */ count_no(judge); /* 更新胜利/失败/平局次数 */ disp_result(judge); /* 显示判断结果 */ retry = confirm_retry(); /* 确认是否再次挑战 */ } while (retry == ); printf("%d胜%d负%d平。\n", win_no, lose_no, draw_no); return ;
}

练习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 = ; /* 胜利次数 */
lose_no = ; /* 失败次数 */
draw_no = ; /* 平局次数 */ srand(time(NULL)); /* 设定随机数种子 */ printf("猜拳游戏开始!!\n");
} /*--- 运行猜拳游戏(读取/生成手势)---*/
void jyanken(void)
{
int i;
static int cnt = ;
if (cnt == ) {
comp = ;
cnt++;
}
else
{
comp = rand() % ;
} /* 用随机数生成计算机的手势(0~2)*/ do {
printf("\n\a石头剪刀布 ···");
for (i = ; i < ; i++)
printf(" (%d)%s", i, hd[i]);
printf(":");
scanf("%d", &human); /* 读取玩家的手势 */
} while (human < || human > );
} /*--- 更新胜利/失败/平局次数 ---*/
void count_no(int result)
{
switch (result) {
case : draw_no++; break; /* 平局 */
case : lose_no++; break; /* 失败 */
case : win_no++; break; /* 胜利 */
}
} /*--- 显示判断结果 ---*/
void disp_result(int result)
{
switch (result) {
case : puts("平局。"); break; /* 平局 */
case : puts("你输了。"); break; /* 失败 */
case : 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 + ) % ; /* 判断胜负 */ count_no(judge); /* 更新胜利/失败/平局次数 */ disp_result(judge); /* 显示判断结果 */ retry = confirm_retry(); /* 确认是否再次挑战 */ } while (retry == ); printf("%d胜%d负%d平。\n", win_no, lose_no, draw_no); return ;
}

练习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 = ; /* 胜利次数 */
lose_no = ; /* 失败次数 */
draw_no = ; /* 平局次数 */ srand(time(NULL)); /* 设定随机数种子 */ printf("猜拳游戏开始!!\n");
} /*--- 运行猜拳游戏(读取/生成手势)---*/
void jyanken(void)
{
static int cnt=;
int i;
comp = rand() % ; /* 用随机数生成计算机的手势(0~2)*/
cnt++;
do {
printf("\n\a石头剪刀布 ···");
for (i = ; i < ; i++)
printf(" (%d)%s", i, hd[i]);
printf(":");
scanf("%d", &human); /* 读取玩家的手势 */
} while (human < || human > );
if (cnt % == ) {
comp = (human + ) % ;
} } /*--- 更新胜利/失败/平局次数 ---*/
void count_no(int result)
{
switch (result) {
case : draw_no++; break; /* 平局 */
case : lose_no++; break; /* 失败 */
case : win_no++; break; /* 胜利 */
}
} /*--- 显示判断结果 ---*/
void disp_result(int result)
{
switch (result) {
case : puts("平局。"); break; /* 平局 */
case : puts("你输了。"); break; /* 失败 */
case : 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 + ) % ; /* 判断胜负 */ count_no(judge); /* 更新胜利/失败/平局次数 */ disp_result(judge); /* 显示判断结果 */ retry = confirm_retry(); /* 确认是否再次挑战 */ } while (retry == ); printf("%d胜%d负%d平。\n", win_no, lose_no, draw_no); return ;
}

练习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[];
int x[];
int m[];
int cnt = ;
int i; char* hd[] = { "石头", "剪刀", "布" }; /* 手势 */
char* result[] = { "平局", "你输了", "你赢了" }; /* 手势 */ /*--- 初始处理 ---*/
void initialize(void)
{
win_no = ; /* 胜利次数 */
lose_no = ; /* 失败次数 */
draw_no = ; /* 平局次数 */ srand(time(NULL)); /* 设定随机数种子 */ printf("猜拳游戏开始!!\n");
} /*--- 运行猜拳游戏(读取/生成手势) ---*/
void jyanken(void)
{
int i;
comp = rand() % ; /* 用随机数生成计算机的手势(0~2)*/
v[cnt] = comp;
do {
printf("\n\a石头剪刀布 ···");
for (i = ; i < ; i++)
printf(" (%d)%s", i, hd[i]);
printf(":");
scanf("%d", &human);
x[cnt] = human; } while (human < || human > );
cnt++; } /*--- 更新胜利/失败/平局次数 ---*/
void count_no(int result)
{
switch (result) {
case : draw_no++; break; /* 平局 */
case : lose_no++; break; /* 失败 */
case : win_no++; break; /* 胜利 */
}
} /*--- 显示判断结果 ---*/
void disp_result(int result)
{
switch (result) {
case : puts("平局。"); break; /* 平局 */
case : puts("你输了。"); break; /* 失败 */
case : puts("你赢了。"); break; /* 胜利 */
}
} int main(void)
{
int judge; /* 胜负 */
i = ;
initialize(); /* 初始处理 */ do {
jyanken(); /* 运行猜拳游戏 */ /* 显示计算机和玩家的手势 */
printf("我出%s,你出%s。\n", hd[comp], hd[human]); judge = (human - comp + ) % ; /* 判断胜负 */
m[i] = judge;
count_no(judge); /* 更新胜利/失败/平局次数 */ disp_result(judge); /* 显示判断结果 */
i++;
} while (win_no < && lose_no < );
printf(win_no == ? "\n□你赢了。\n" : "\n■我赢了。\n"); printf("%d胜%d负%d平。\n", win_no, lose_no, draw_no);
for (i = ; i <cnt; i++) {
printf("第%d次猜拳,玩家出%s,计算机出%s,结果是%s\n",i+,hd[x[i]],hd[v[i]],result[m[i]]);
} return ;
}

明解C语言 中级篇 第三章答案的更多相关文章

  1. 明解C语言 入门篇 第三章答案

    练习3-1 #include <stdio.h> int main() { int x; int y; puts("请输入两个整数."); printf("整 ...

  2. 明解C语言 中级篇 第四章答案

    练习4-1 /* 珠玑妙算 */ #include <time.h> #include <ctype.h> #include <stdio.h> #include ...

  3. 明解C语言 入门篇 第五章答案

    练习5-1 /* 依次把1.2.3.4.5 赋值给数组的每个元素并显示(使用for语句) */ #include <stdio.h> int main(void) { int i; ]; ...

  4. 明解C语言 入门篇 第六章答案

    练习6-1 /* 求两个整数中的最小值 */ #include <stdio.h> /*--- 返回三个整数中的最小值 ---*/ int min2(int a, int b) { int ...

  5. 明解C语言 入门篇 第四章答案

    练习4-1 #include <stdio.h> int main(void) { int no; int x; do{ printf("请输入一个整数:"); sca ...

  6. 明解C语言 入门篇 第十三章答案

    练习13-1 /* 打开与关闭文件 */ #include <stdio.h> int main(void) { ]; FILE* fp; printf("请输入你要打开的文件& ...

  7. 明解C语言 入门篇 第十一章答案

    练习11-1 /* 用指针实现的字符串的改写 */ #include <stdio.h> int main(void) { "; printf("p = \" ...

  8. 明解C语言 入门篇 第七章答案

    练习7-1 #include <stdio.h> int main() { int n; printf(,, ); //此行显示结果为 4 3 6 因为1的字节就是为4,而-1的字节也是4 ...

  9. 明解C语言 中级篇 第二章答案

    练习2-1 /* 倒计时后显示程序运行时间 */ #include <time.h> #include <stdio.h> /*--- 等待x毫秒 ---*/ int slee ...

随机推荐

  1. eclipse彻底去除validation(彻底解决编辑js文件的卡顿问题)

    Eclipse中默认的JS编辑器非常慢,尤其在拷贝粘贴代码时,CPU总是占用很高甚至到100%,也就导致了编辑起来很卡. 这是因为Eclipse中带的Validate功能导致的,这个鸡肋的功能简直让人 ...

  2. Percona XtraDB Cluster简易入门 - 安装篇

    说明 Percona XtraDB Cluster(简称PXC),是由percona公司推出的mysql集群解决方案.特点是每个节点都能进行读写,且都保存全量的数据.也就是说在任何一个节点进行写入操作 ...

  3. RtlRaiseException(ntdll.dll)函数逆向

    书中内容: 代码逆向: 1. CONTEXT是保存之前的函数(RaiseException)状态 2. 在逆向上一个函数时产生一个疑问:EXCEPTION_RECORD.ExceptionAddres ...

  4. python自动登录代码

    公司有很多管理平台,账号有禁用机制,每个月至少登录一次,否则禁用.导致有时候想登录某个平台的时候,发现账号已经被禁用了,还得走流程解禁.因此用python实现了一下自动登录,每天定时任务运行一次.ps ...

  5. SpringBoot(十一):SpringBoot整合Redis

    详解springboot整合redis:https://blog.csdn.net/qq_36781505/article/details/86612988 一.环境准备 Redis-x64-3.2. ...

  6. Java 数学操作类

    数学操作类 Math类 数学计算操作类 类属性值 Math.E ^ Math.PI 圆周率 类方法 Math类中,一切方法都是 static 型,因为Math类中没有普通属性. round() 方法 ...

  7. iOS UItableview 镶嵌 collectionView ,cell 自适应高度动态布局

    最近在写这个功能,之前看到很多,可是需求一直没有涉及到,大致思路是有的,发现,网上的大部分都有缺陷和bug,我也是好无语啦啦啦,也不晓得是不是升级 了xcode,一样的代码,允许的效果都不一样,,,苦 ...

  8. Ubuntu个人使用笔记整理

    Ubuntu笔记 Ubuntu使用过程中整理的一些常用或关键操作整理,以备不时之需, 另外自己可以对界面做一些美化,这部分自行百度去配置,我的界面如图 ##################Ubuntu ...

  9. 用Toad for Oracle创建数据库表空间和用户

    打开Toad, 1,菜单栏Session—>new Connection….打开如下窗口: 2,进入之后,菜单DatebaseàSechema  Brower...找到Table Space(表 ...

  10. Onenote添加代码

    使用Onenote做笔记的时候,是没有直接插入代码的,但是如果可以插入的话很方便. 这个是我找的一个参考,照这个来就行. 参考链接: https://www.cnblogs.com/two-peanu ...