171022—素数完全分解的另外循环 & 剪刀石头布!
来源:互联网 发布:网络计划图绘制软件 编辑:程序博客网 时间:2024/06/05 09:44
一.对昨天的素数完全分解做了小改动,试了试其他循环语句。
之前保留了一点想当然的想法,认为在原结构中(x在最后位置得出值)判断语句应该放在后边。
今天尝试了for语句和while,发现这想法纯属多余。
这时给x赋了个初值。而最后的语句空下。运行结果正常。
while语句,运行也正常。
P.S. 切记想当然和人为敏感。。
二.剪刀石头布。
这是书上一道习题。
要求:s表示剪刀,r表示石头,p表示布,两个玩家交替输入“字符”,然后程序给出输赢结果。
这个题的主要难点在于,如何处理字母。这是遇到的第一个要考虑输入字母的问题。也借此察觉到自己对相关知识的生疏和浮于表面。
考虑到之前接触过的例子。计算机是不会认识字母的,这题一定是把字母和数字对应。那么,定义三个变量自己赋值吗?有点玄乎。
想到ASCII码,这可有现成的数字。
查阅得:p,r,s分别对应112,114,115。
两两做差可知出题人意图:三个差正好分别是:1,2,3。
心中有底了。
于是大体思路就是,定义char类型变量储存玩家输入的字母,强制转换将其变成ASCII,作差,用差的值判断输赢。
考虑到同样两个字母组合有两种输赢情况(即结果有正负两个)于是引进if..else语句协助判断大小。
而三种差的对应正好可以用一下还没用过的switch语句。这样的话就要写一共六种情况。。虽然就算穷举也就才9种,但暂时想不到优化的办法。原码如下:
#include<iostream>using namespace std;int main(){ char a,b;int m,n,x; cout<<"玩家甲输入:"<<endl; cin>>a; cout<<"玩家乙输入:"<<endl; cin>>b; m=int(a); cout<<m<<n; n=int(b) ; if(m>n) { x=m-n; switch(x) { case 1: cout<<"乙胜!"; break; case 2: cout<<"乙胜!"; break; case 3: cout<<"甲胜!"; break; } } else { x=n-m; switch(x) { case 1: cout<<"甲胜!"; break; case 2: cout<<"甲胜!"; break; case 3: cout<<"乙胜!"; break; } } }
P.P.S 字符s写在代码里的时候要加‘’,这里单引号是常量,字符常量。比如,定义一个char类型变量并赋值,就要写成:char a=’s’,
而在用键盘输入时则不用加单引号。
另外,这是第一次用强制转换把字母变成数字。在做之前还有些许怀疑可行否,果然实践才出真知。
- 171022—素数完全分解的另外循环 & 剪刀石头布!
- 石头,剪刀,布 循环版(改进)
- 石头剪刀布的小游戏
- 剪刀,石头,布游戏——类的初学习。
- 石头剪刀布游戏的python代码
- 简单的剪刀石头布游戏
- 用Python实现的"石头,剪刀,布"
- Unity-->实现剪刀石头布的游戏
- C#做的剪刀石头布游戏
- 8,石头,剪刀,布的逻辑代码
- 石头剪刀布的竞赛图
- python 剪刀石头布的入门demo
- 石头剪刀布(终极版)(添加对话框循环)
- 石头-剪刀-布
- 石头剪刀布
- 剪刀石头布
- 剪刀、石头、布游戏
- 剪刀 石头 布
- java基础知识2 JDBC
- 用VS2017上传项目到码云gitee.com和基本命令
- Java4Android笔记之Java中的static关键字的作用
- spring aop学习3:通知(Advice注解)
- c# 应用程序的.dll文件更新。
- 171022—素数完全分解的另外循环 & 剪刀石头布!
- 谈下自己学习编程的方法
- OnLowMemery与OnTrimMemery以及CompentCallBack
- Python Logistic回归--抛去复杂公式的简单理解
- 在JTable里面添加JCheckBox的几种方法
- Linux下的网卡bond
- 谓词逻辑
- HM的配置使用(编码)
- Angular 入门用户信息管理表