明解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 ...
随机推荐
- 【计算机网络】UDP基础知识总结
1. UDP概念相关 [!NOTE] UDP(User Datagram Protocol),又叫用户数据报协议. UDP是一个无连接的.不可靠.基于数据报的传输协议.UDP只是报文(报文可以理解为一 ...
- 2、Hibernate持久化编写
一.对于hibernate中的PO编写规则: 1. 必须提供一个无参数的public构造方法 2. 所有属性要private ,对外提供public 的get/set方法 3. 在PO类必须提 ...
- 数据库——SQL-SERVER练习(2)连接与子查询
一.实验准备 1.复制实验要求文件及“CREATE-TABLES.SQL”文件, 粘贴到本地机桌面. 2.启动SQL-SERVER服务. 3. 运行查询分析器, 点击菜单<文件>/< ...
- Flink中Idle停滞流机制(源码分析)
前几天在社区群上,有人问了一个问题 既然上游最小水印会决定窗口触发,那如果我上游其中一条流突然没有了数据,我的窗口还会继续触发吗? 看到这个问题,我蒙了???? 对哈,因为我是选择上游所有流中水印最小 ...
- 前端之移动端库和框架bootstrap
学习移动端场景下的js事件:制作移动端特效常用的js库:介绍移动端常用开发框架Bootstrap:介绍动态样式语言less.sass.stylus的基本使用. 移动端js事件 移动端的操作方式和PC端 ...
- 第2个word发布的博客
//接收的为空时,则表示客户端下线,跳出循环 if (r == 0) { break; }; string str = Encoding.UTF8.GetString(buffer, 0, r); ...
- python中13个实用的文件操作
1. 判断指定目录是否存在: os.path.exists(input_folder) 2. 判断指定目录是不是文件夹 os.path.isdir(input_folder) 3. 判断指定目录是不是 ...
- SPA项目搭建及嵌套路由
Vue-cli: 什么是vue-cli? vue-cli是vue.js的脚手架,用于自动生成vue.js+webpack的项目模板,创建命令如下: vue init webpack xxx 注1:xx ...
- Java入门——初识Java
Java入门——初识Java 摘要:本文主要对Java这门编程语言进行简单的介绍. Java简介 说明 Java语言历时十多年,已发展成为人类计算机史上影响深远的编程语言,从某种程度上来看,它甚至超出 ...
- CAD打印图纸要怎么操作?简单方法分享给你
大家日常生活中多多少少的都接触到过CAD文件,CAD图是借助CAD制图软件来进行绘制完成的.唯一的困惑就是CAD图纸的格式大多数均为dwg格式的,查看起来不是那么的方便?所以很多设计师们都会选择将图纸 ...