明解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 # 随机点名器 # 需提前 ...
- linq根据两个时间求出天数
对于在Linq To Entity里使用日期函数需要DbFunctions里的扩展方法,而不能使用.net里的日期函数,因为linq的代码会被翻译成SQL发到数据库端,如你的.net方法对于数据库是不 ...
- javascript split() 把一个字符串分割成字符串数组,类似于PHP的 explode()函数
用法类似于框里的 例子:
- Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失问题分析
最近spring boot项目中由于使用了spring cloud 的hystrix 导致了threadLocal中数据丢失,其实具体也没有使用hystrix,但是显示的把他打开了,导致了此问题. 导 ...
- 使用Java操作Elasticsearch(Elasticsearch的java api使用)
1.Elasticsearch是基于Lucene开发的一个分布式全文检索框架,向Elasticsearch中存储和从Elasticsearch中查询,格式是json. 索引index,相当于数据库中的 ...
- Pycharm快捷键集合
运行类:Alt + Shift + F10 运行模式配置Alt + Shift + F9 调试模式配置Shift + F10 运行Shift + F9 调试Ctrl + Shift + F10 运行编 ...
- SpringMVC学习笔记一(请求流程和配置,启动项目)
springmvc请求流程: 1.用户发送请求至前端控制器DispatcherServlet 2.DispatcherServlet收到请求调用HandlerMapping处理器映射器. 3.处理器映 ...
- ES6变量的解构赋值(二)对象的解构赋值
前面我们知道,数组的结构赋值需要按顺序进行赋值, let [a,,c] = [,,] console.log(a); console.log(c);//3 let [a,b] = [1];consol ...
- 干货,Wireshark使用技巧-过滤规则
- 过滤规则使用 在抓取报文时使用的规则,称为过滤规则,Wireshark底层是基于Winpcap,因此过滤规则是Winpcap定义的规则,设置过滤规则后,抓到的报文仅包含符合规则的报文,其它报文则被 ...
- Web安全攻防笔记-SQL注入
information_schema(MySQL5.0版本之后,MySQL数据库默认存放一个information_schema数据库) information_schema的三个表: SCHEMAT ...