明解C语言 中级篇 第三章答案
练习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语言 中级篇 第三章答案的更多相关文章
- 明解C语言 入门篇 第三章答案
练习3-1 #include <stdio.h> int main() { int x; int y; puts("请输入两个整数."); printf("整 ...
- 明解C语言 中级篇 第四章答案
练习4-1 /* 珠玑妙算 */ #include <time.h> #include <ctype.h> #include <stdio.h> #include ...
- 明解C语言 入门篇 第五章答案
练习5-1 /* 依次把1.2.3.4.5 赋值给数组的每个元素并显示(使用for语句) */ #include <stdio.h> int main(void) { int i; ]; ...
- 明解C语言 入门篇 第六章答案
练习6-1 /* 求两个整数中的最小值 */ #include <stdio.h> /*--- 返回三个整数中的最小值 ---*/ int min2(int a, int b) { int ...
- 明解C语言 入门篇 第四章答案
练习4-1 #include <stdio.h> int main(void) { int no; int x; do{ printf("请输入一个整数:"); sca ...
- 明解C语言 入门篇 第十三章答案
练习13-1 /* 打开与关闭文件 */ #include <stdio.h> int main(void) { ]; FILE* fp; printf("请输入你要打开的文件& ...
- 明解C语言 入门篇 第十一章答案
练习11-1 /* 用指针实现的字符串的改写 */ #include <stdio.h> int main(void) { "; printf("p = \" ...
- 明解C语言 入门篇 第七章答案
练习7-1 #include <stdio.h> int main() { int n; printf(,, ); //此行显示结果为 4 3 6 因为1的字节就是为4,而-1的字节也是4 ...
- 明解C语言 中级篇 第二章答案
练习2-1 /* 倒计时后显示程序运行时间 */ #include <time.h> #include <stdio.h> /*--- 等待x毫秒 ---*/ int slee ...
随机推荐
- 【shell脚本】点名器===randomName.sh
随机点名,从name.txt文件中读取名字 [root@VM_0_10_centos shellScript]# cat randowName.sh #!/bin/bash # 随机点名器 # 需提前 ...
- ActiveMQ是什么,为什么使用MQ
是基于 Java 中的 JMS 消息服务规范实现的一个消息中间件. 1.系统解耦 采用中间件之后,就可以完美解决上述中因为耦合可能导致的问题.系统 A 不用去 关心下层服务调用方的问题. 2. 异步调 ...
- JMS入门Demo
2.1点对点模式(邮箱) 点对点的模式主要建立在一个队列上面,当连接一个列队的时候,发送端不需要知道接收端是否正在接收,可以直接向ActiveMQ发送消息,发送的消息,将会先进入队列中,如果有接收端在 ...
- 安全性测试:OWASP ZAP 2.8 使用指南(一):安全测试基础及ZAP下载、安装
概览 本文意在对于OWASP's Zed Attack Proxy(ZAP)软件做一个基本使用指南介绍. ZAP是一个用于实施安全性测试的工具,即使没有很强的安全测试背景也可以很好的使用. 为了达到这 ...
- commonDispatchException 函数的逆向
看书中给出的内容: 1:在栈中构建 EXCEPTION_RECORD 结构体 2. 根据函数传递参数逆推得到 "判断先前模式"的反汇编代码
- 适合初学者的Python爬取链家网教程
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: TinaLY PS:如有需要Python学习资料的小伙伴可以加点击下 ...
- MySQL的基本概念和数据操作
1.连接服务器 数据库是CS模式的软件,所以要连接数据库必须要有客户端软件.MySQL数据库默认端口号是3306 1.1window界面连接服务器 1.2通过web窗体 ...
- 3.智能快递柜(通信篇-HTTP)
1.智能快递柜(开篇) 2.智能快递柜(终端篇) 3.智能快递柜(通信篇-HTTP) 4.智能快递柜(通信篇-SOCKET) 5.智能快递柜(通信篇-Server程序) 6.智能快递柜(平台篇) 7. ...
- 1_Swift概况
Swift 标准库 解决复杂的问题并编写高性能,可读的代码 概况 Swift标准库定义了用于编写Swift程序的基本功能,其中包括 1.如基本数据类型Int,Double以及String 2.共同的数 ...
- Eclipse在Tomcat环境下运行项目出现NoClassDefFoundError/ClassNotFoundException解决办法
For this error, there can be different solutions. I have noted down the ones that had worked for me. ...