练习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. 【Linux命令】安装命令(yum,rpm)

    安装软件有三种方式,第一种是源码安装(源码安装需要手动安装软件,安装的目录,还需要进行编译之后才能安装),步骤比较繁琐.第二种是RPM安装,rpm安装有点像windows系统的面板,会建立统一的数据库 ...

  2. H5混合应用之webview元素定位工具

    一.工具选择 webview元素定位有三种方式: 使用driver.page_source方法,将获取到的页面内容写入到一个html文件中,然后使用浏览器打开html文件,使用F12调试用具进行元素定 ...

  3. C++入门到理解阶段二基础篇(4)——C++运算符

    目录 算术运算符(进行四则运算) 赋值运算符(表达式的值赋给变量) 比较运算符(表达是比较,返回一个真值或假值) 逻辑运算符(返回表格式的结果真或假) 位运算符 杂项运算符 C++ 中的运算符优先级 ...

  4. 2019_JAVA面试题_真实总结

    来自刚被某互联网公司录取的朋友的分享. 整理的面试题1: 1.Java里面有哪几种基础数据类型, 2.Char为何是两个字节, 3.Object有哪些方法 4.final修饰变量,函数,类的作用, 5 ...

  5. Python将list中的unicode转换成中文显示

    有这样一个列表: list = [{'channel_id': -3, 'name': u'\u7ea2\u5fc3\u5146\u8d6b'}, {u'seq_id': 0, u'name_en': ...

  6. Zipkin架构简介

    Zipkin基本概念 Span:基本工作单元,一次链路调用就会创建一个Span Trace:一组Span的集合,表示一条调用链路.举个例子:当前存在服务A调用服务B然后调用服务C,这个A->B- ...

  7. 异常处理类-Throwable源码详解

    package java.lang; import java.io.*; /** * * Throwable是所有Error和Exceptiong的父类 * 注意它有四个构造函数: * Throwab ...

  8. IDEA构建spring项目

    这两天使用IDEA从零构建一个spring项目,之所以说从零,是因为,我这个小白呢,之前IDEA没有碰过,spring也只是知道个名字. 因为没有文档,遇到了好些坑,把这些记录一下吧. 构建的第一步, ...

  9. nRF24L01+启用自动应答ACK及自动重发的实战分享

    ACK模式(自动应答)功能的官方说明 当用W_TX_PAYLOAD命令对发送端TX FIFO写数据时,将数据打包后,数据包中包控制字段NO_ACK 标志位复位.接收端接收到一帧有效数据后, 产生RX_ ...

  10. BayaiM__MYSQL千万级数据量的优化方法积累__初级菜鸟

      -----------------------------------------------------------------------------———————-------------- ...