首页 > 编程语言 >C++第三章课本例题

C++第三章课本例题

时间:2023-04-14 21:12:30浏览次数:38  
标签:case rand int sum C++ 数为 课本 例题 合数

游戏规则是:每个骰子有6面,点数分别为1、2、3、4、5、6。游戏者在程序开始时输入个无符号整数,作为产生随机数的种子。每轮投两次骰子,第一轮如果和数为7或11则为胜,游戏结束;和数为2、3或12则为负,游戏结束;和数为其他值则将此值作为自己的原数,继续第二轮、第三轮……直到某轮的和数等于点数则取胜,若在此前出现和数为7则为负。

#include <iostream>
#include <cstdlib>
using namespace std;
int rolldice(){                       //投骰子,计算合数,输出合数 
    int die1=1+rand()%6;
    int die2=1+rand()%6;
    int sum=die1+die2;
    cout<<"player rolled"<<die1<<"+"<<die2<<"="<<sum<<endl;
    return sum;
} 
enum GameStatus {WIN,LOSE,PLAYING};  
int main()
{
    int sum,mypoint;
    GameStatus status;
    unsigned seed;
    cin>>seed;                       //输入随机种子数 
    srand(seed);                       //将种子传递给rand函数 
    sum=rolldice();//第一轮投色子,计算和树 
    switch(sum){
        case 7:
        case 11:
            status=WIN;//如果合数为7,11则获胜,状态为win 
            break;
        case 2:
        case 3:
        case 12:
            status=LOSE;//如果合数为2,3,12,则输,状态为lose 
            break;
        default:
            status=PLAYING;//其他情况,游戏无结果,状态为playing,记下点数,为下一轮做准备 
            mypoint=sum;
            cout<<"point is"<<mypoint<<endl;
            break;
    } 
    while(status==PLAYING){//只要状态为playing,仍然继续 
        sum=rolldice();
        if(sum==mypoint)
        status=WIN;//合数等于点数的话获胜 
        else if(sum==7)
        status=LOSE;//合数等于7的话失败 
    }
    if(status==WIN)//状态不为playing,上面循环结束,以下程序输出结果 
    {
        cout<<"player win"<<endl;
    }
    else
    {
        cout<<"player lose"<<endl;
    }
}

 

标签:case,rand,int,sum,C++,数为,课本,例题,合数
From: https://www.cnblogs.com/Lyh3012648079/p/17319948.html

相关文章

  • C++复习第六天(继承、多态)
    vector.clear()将size设置为0,capacity不变 继承//公共页面classBasePage{public:voidheader(){cout<<"首页、公开课、登录、注册...(公共头部)"<<endl;}voidfooter(){cout<<"帮助中心、交流合作、站内地图...(......
  • C++第四天
    定义一个CPU类,包含等级(Rank)、频率(frequency)、电压(voltage)等属性。其中,rank为枚举类型CPU__Rank,定义为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为浮点型的电压值。代码#include<iostream>usingnamespacestd;enumCPU_Rank{P1=1,P2,P3,P......
  • c++练习打卡(7)
    银行存钱银行一年整存零取的利息每月0.0063,某人存了一笔钱,每年年底取1000,五年取完,问他存了多少?流程图:伪代码:源代码:#include<stdio.h>intmain(){ doublemoney=0.0; for(inti=0;i<5;i++){ money=(money+1000.0)/(1+12*0.0063); }printf("%0.2lf",money); return0;} ......
  • C++对象和类
    一、类的声明//global.h--defineforallproject//version0.0#ifndefGLOBAL_H_//防止重定义#defineGLOBAL_H_classGlobal//定义类{public://使用类对象的程序都可以直接访问公有部分/*定义在类声明中的函数称为内联函数,仅声明在......
  • 功能不够用?使用C++编写通达信插件及接入Python(一)
    第一次尝试,参照:http://www.xiaoyunyun.net/index.php/archives/53.html 和 https://blog.csdn.net/wiowei/article/details/121466094在绑定DLL环节失败了第二次尝试:参照:https://zhuanlan.zhihu.com/p/5698198681.修改VS2019,勾选 windows10SDK2.用Visualstudio打开......
  • [每天例题]日期之间隔几天
    日期之间隔几天题目 题目要求1.编写一个程序来计算两个日期之间隔了多少天。日期以字符串形式给出,格式为 YYYY-MM-DD2.给定的日期是 1971 年到 2100 年之间的有效日期。3.日期以字符串形式给出。思路分析1.可以将两个日期同时计算他们距离1971年1月1日有多少天,再......
  • 列举说明Python同Java及C++的不同之处
    首先是C++C++是在C语言的基础上发展起来的,他包含了C语言的所有内容。同时,也引入了面向对象的概念。优点:1、他包含了C语言的内容,包括指针,使得C++在执行效率上特别的高效。2、引入面向对象的概念,使得开发效率提高。3、提供了很多的库,具有较好的封装性和移植性(代码)。缺点:1、C++比较难......
  • 【C/C++】assert实现
     #defineMLA_ASSERT(expr)(void)((!!(expr))||(printf("mlaassertfail:\"%s\"@%s,%u",#expr,__FILENAME__,__LINE__),printf("\r\n"),abort()//usage:MLA_ASSERT(pointer!=NULL)#defineMLA_ASSERT(expr)(vo......
  • C++ 学习 第四天
    流程控制练习题1.控制台输入一个数(不多于五位),并将每一位上的数进行输出2.一个球从100米的高度自由落下,每次落地后反跳回原高度的一半;再落下,求他在第10次落地时,共经过了多少米?第十次反弹多高? 3.接上题,球经历多少次反弹后,反弹高度小于1米?4.计算1000内的完数。完数:一个数恰好......
  • C++的引用变量作为函数参数
    一、问题引入在C++的中新增一个特性:按引用传递变量,虽然与按传递变量的地址可以实现相同的结果,但引用有其独特的地方。引用传递:引用经常被用作函数参数,使得函数中的变量名成为调用程序中的变量的别名。通过引用变量用作参数,函数将使用原始数据,而不是其副本。二、解决过程举......