明解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 ...
随机推荐
- Nginx之前后端分离(入门)
几个月前,公司架构优化,首先就是前后端分离. 所谓前后端分离,就是在传统的前后端代码都在一个项目里的基础上,将前后端代码抽离,把前端代码从后端项目了分离出来,前后端开发人员各自在自己的项目里开发. 为 ...
- SQL常用函数之STR()
使用str函数 :STR 函数由数字数据转换来的字符数据. 语法 STR ( float_expression [ , length [ , ...
- .net core 后台如何生成html字符串到前台_后台html字符串在前台显示编码状态
1-后台生成html字符串的方法一般是: this.ViewData.Add("CURRENCY_SYMBOLS", new HtmlString(JsonHelper.Conve ...
- 1-4-JS基础-条件判断
第一种 1.if(条件成立){ 执行某件事} 2.if(条件成立){执行某件事}else{执行另外一件事 } 3.if(条件1成立){执行某件事}else if(条件2成立){执行某件事}else i ...
- iOS中进程与线程(多线程、主次线程)
一.什么是线程?什么是多线程? 线程是用来执行任务的,线程彻底执行完任务A才能去执行任务B.为了同时执行两个任务,产生了多线程. 例子: 打开一个音乐软件,用户开辟一个线程A ...
- Github使用总结(添加ssh-key,新建仓库,添加协作者) 转
http://jingyan.baidu.com/article/ab0b5630936ab6c15afa7d1c.html https://help.github.com/articles/gene ...
- UML类图和用例图
软件体系结构的多视图 kruchten提出了软件体系结构的4+1视图模型,其中用例图位于中心位置(4+1视图中的1). 逻辑视图 一种静态建模视图 进程视图 一种并发进程或任务视图 开发视 ...
- netcore codefirst生成数据库命令
1.程序通过nuget安装包 Microsoft.EntityFrameworkCore.Design 2.生成添加脚本 add-migration InitialCreate -Context AL ...
- 将vue2.9.6升级到vue3.0
vue2.9.6没有ui界面可以用,直接使用yarn global add @cli没用,还是2.9.6版本 借鉴博客: https://juejin.im/post/5bf7d67c51882518 ...
- python基础 while 字符串方法 运算符
一.while 1.while 死循环 f=True while f: print(1) print(2) 2.while 活循环 ①.正序 count = 1 while count <= 5 ...