此部分为条件判断部分如图但是我想到如果出现3次点数相同且大于10的情况和3次点数相同且小于10的两种情况没有进行判断,该如何用条件运算符进行编写呢

此题为用c++语言编写赌徒掷骰子的游戏,大致规则掷3次若3次点数相同,输出一个”豹子“;若3次之和大于10,则输出一个”大“;3次之和小于10,输出”小“。
此部分为条件判断部分如图

img


但是我想到如果出现3次点数相同且大于10的情况和3次点数相同且小于10的两种情况没有进行判断,该如何用条件运算符进行编写呢?
我的编写如下图,如何改正呢

img

可以把变量c的数据类型改为string;

然后如果满足条件的各个结果都输出,例如,同时满足大,豹子,大豹子或小豹子,就可以把三个条件都使用if来逐个判断,如果只需要输出一条判断结果就可以使用if-else if-else语句;

然后当筛子点数为10时是否需要输出结果,如果需要的话就可以再增加一个if语句来进行判断输出。

测试代码如下:

参考链接:


https://blog.csdn.net/qq_43403759/article/details/113391196

https://blog.csdn.net/weixin_43956732/article/details/109765323

https://blog.csdn.net/qq_37454669/article/details/123774733

https://blog.csdn.net/weixin_43840338/article/details/102788342

#include <iostream>
#include <ctime>
using namespace std;

class Dice{
    // https://www.cnblogs.com/LonelyMoNan/p/C.html
    public:
        int point;
        Dice();
// https://blog.csdn.net/qq_43403759/article/details/113391196    
    int run();        
}; 

Dice::Dice(){
    // https://blog.csdn.net/weixin_43956732/article/details/109765323
    srand(time(NULL));
}

int Dice::run(){
    
    // https://blog.csdn.net/qq_37454669/article/details/123774733
    point = rand()%5+1;
    return point;
}

class Gambler{
    
    public :
        void play(Dice a,Dice b,Dice c);
    
};


void Gambler::play(Dice a,Dice b,Dice c){
    
    int num1,num2,num3;
    num1=a.run();
    num2=b.run();
    num3=c.run();
//    num1=5;
//    num2=5;
//    num3=5;
//    cout<<"num1="<<num1<<",num2="<<num2<<",num3="<<num3<<endl;
    
    if(num1==num2&&num2==num3){
        cout<<num1<<" "<<num2<<" "<<num3<<" 豹子"<<endl;
        string c = num1+num2+num3>10?"大豹子":"小豹子";
        cout<<c<<endl; 
    }
     if((num1+num2+num3)>10){
        cout<<num1<<" "<<num2<<" "<<num3<<" 大"<<endl;
    }
    
    if((num1+num2+num3)<10)
    {
        cout<<num1<<" "<<num2<<" "<<num3<<" 小"<<endl;
    }
}


int main(void){
    
    Dice d1,d2,d3;
    Gambler game;
    game.play(d1,d2,d3);
    
    
    return 0;
} 

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7576800
  • 这篇博客你也可以参考下:指针知识,用实参做参数,实现最小值,输入三个数到数组中,找出数组中的最小值
  • 除此之外, 这篇博客: C与C++程序设计学习笔记中的 5、某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。每位选手都有一个起步的分数为10分。某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗?如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的字符串来表示。例如:0010110011 就是可能的情况。你的任务是算出所有可能情况。每个答案占一行。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include <stdio.h>
    int ti[11] = { 0 }; //用来存储每道题的回答情况0或者1,0表示错误,1表示正确
    //提醒:数组ti的编号实际用1-10
    //score表示当前得分,num是当前第num道题目
    void f(int score, int num)
    {
    	if (num == 11)//10道题目全部做完
    	{
    		if (score == 100)
    		{
    			int i = 0;
    			for (i = 1; i <= 10; i++)
    				printf("%d", ti[i]);
    			printf("\n");
    		}
    	}
    	else //10道题目没有做完
    	{
    		ti[num] = 1; //讨论第num道题目的正确情况
    		f(score * 2, num + 1);
    		ti[num] = 0; //讨论第num道题目的错误情况
    		f(score - num, num + 1);
    	}
    }
    int main(void)
    {
    	f(10, 1);//从基础分10分开始,从第1题开始
    	return 0;
    }