在C ++中编写多个if-else语句并使用rand()函数进行分支

时间:2012-06-20 01:40:10

标签: c++

问题是:

  

我们希望能够对在野外发现的新动物进行分类。我们将使用rand()函数生成随机整数(0或1)来表示No或Yes   分别回答一系列问题。然后我们可以使用答案将动物分类为:

     
      
  • 昆虫
  •   
  • 爬行动物
  •   
  •   
  • 哺乳动物
  •   
     

在每种情况下,问题都会继续,直到进行身份识别。对于每个问题,答案需要一个随机值。要识别每只动物,请使用嵌套的if - else结构。

以下是一些带有输出的示例程序运行。每个示例都是一个独特的程序运行。

Random Animal Generator

Is the animal a vertibrate? Yes – Not Insect
Is the animal warm-blooded? Yes – Not Reptile
Can the animal fly? Yes – The animal is a Bird!

Random Animal Generator

Is the animal a vertibrate? No – The animal is an Insect!

Random Animal Generator

Is the animal a vertibrate? Yes – Not Insect
Is the animal warm-blooded? No – The animal is a Reptile!

我很困惑。如何生成所有else if语句以便按顺序工作和回答?如何让他们回答是或否,然后让他们再次回答是或否,等等?另外我如何使用rand()函数随机出现它们?

代码:

#include <iostream> 
using namespace std; 

main () { 
    char Answer; 
    cout<<" Random Animal Generator\n"; 
    cout << "Is the animal a vertibrate?(1=Yes/0=No)? "; 
    cin >> Answer; 

    if(Answer == '1') 
        cout << "Not Insect \n"; 
    else (Answer== '0') 
        cout<<"The animal is an Insect!\n"; 

    cout<<endl; 
    system("pause"); 
}

2 个答案:

答案 0 :(得分:2)

这是一个开始:

#include <iostream> 
using namespace std; 

int getRandomAnswer()
{ // code here to return a 1 or 0 randomly
}


main () { 
    cout<<" Random Animal Generator\n"; 
    cout << "Is the animal a vertebrate?"; 

    if(getRandomAnswer() == 1) 
    {
        cout << "Yes - Not Insect \n"; 
        cout << "Is the animal warm blooded?"
        if (getRandomAnswer() == 1)
        {
          // Code for "warm blooded" case goes here
        }
        else
        {
          // Code for "not warm blooded" case goes here
        }
     }
    else
    {
       cout<<"No. The animal is an Insect!\n"; 
    }

    cout<<endl; 
}

此外,在任何情况下都不要使用system("pause");。如果你想等待按键,那就去做吧。但是你无法知道在其他人的机器上是否有一个名为pause的命令,或者如果有的话,它的作用是什么。例如,在我的机器上,有一个名为pause的命令,它暂停我家用反应堆上的冷却液泵。想象一下,如果我在我的机器上测试了你的代码,可能会造成伤害!

答案 1 :(得分:0)

C库有一个函数rand(),它返回一个从0到RAND_MAX的随机数。现在,您需要一个零或一个随机数。什么是一个好的函数,它取一个随机数并以相等的概率(或非常接近相等)返回0/1?

考虑自然数的属性。你需要一个大约有一半数量的属性而另一半没有。