【问题标题】:How to make a random number math quiz with 10 questions in C++?如何用 C++ 做一个包含 10 个问题的随机数数学测验?
【发布时间】:2016-04-10 05:00:56
【问题描述】:

我一直在尝试做一个包含 10 个问题的随机数数学测验,但我的循环并没有只停留在第一个问题上。

我正在尝试一次循环一个问题,当用户回答问题 1 时,它会转到问题 2,依此类推,直到回答完所有 10 个问题,并且每个正确答案都将加到 1 分每个问题。谁能帮我解决这个问题?

编辑:1 好的,我按照你说的那样更改了代码,对吗?

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

int main()
{
    int Player = 0;
    int question = 1;
    int nquestion = 10;
    int choice = 0;

    int qanswere1 = 0;
    int panswere1 = 0;

    int num1 = 0;
    int num2 = 0;
    int score = 0;

    cout << "Lets Start" <<endl;
    cout << "[1] Addition" <<endl;
    cout << "[3] End" <<endl;
    cout << "Choose: ";
    cin >>choice;

    if(choice == 1){
        choice = 0;

        cout << "Level" <<endl;
        cout << "[1] Easy (1 - 10)" <<endl;
        cout << "Choose: ";
        cin >> choice;

        while(choice == 1){
            for(question = 1; question <= nquestion; question = question + 1 ){
                num1 = rand()%10 +1;
                num2 = rand()%10 +1;
                cout<<num1<<"+"<<num2<<endl;
                qanswere1 = num1 + num2;
                cin>>panswere1;
            }}
        if(panswere1 == qanswere1){
            score = score + 1;
        }
        else{
        }
        return 0;
    }
}

即使使用此代码,它仍然超过 10 个问题,我做错了什么..

【问题讨论】:

    标签: c++


    【解决方案1】:

    要使循环停止以先输入单个问题,然后继续处理其他问题,请尝试在循环内为变量 panswere1 输入输入,如下所示:

     for( question = 1; question <= nquestion; question = question + 1 ){
        num1 = rand()%20 +1;
        num2 = rand()%20 +1;
        coutnum1"+"num2endl;
        qanswere1 = num1 + num2;
        cin>>panswere1;
    }
    

    注1:判断第一个for循环是做什么的,可以通过

    while(choice == 1){..
    

    不会影响代码的可读性。

    干杯!

    编辑 1:
    要使代码停在 10 个问题上,您必须替换外循环

    for ( choice ==1; choice==1; choice==1){..
    

    使用简单的 if 条件:

    if( choice == 1){..
    

    for 循环的问题在于它会运行无限次,因为您没有添加任何机制来限制它的执行次数。如果您必须将问题的数量限制为 10 个,我建议您使用此 if 语句替换循环。

    编辑 2:
    您也必须用 if 条件替换内部 while 循环:
    替换

    while(choice == 1){..
    

    if(choice == 1){..
    

    【讨论】:

    • 谢谢!但是我怎么能把它限制在 10 它现在超过 10 对不起,如果我不理解它
    • @genesia 循环将运行 10 次,假设您已将 10 分配给变量 nquestion
    • 如果它可以解决您的疑问,请不要忘记接受答案:)
    • 是的 nquestion 仍然是一样的,即使有 20 个问题,它并没有停止
    • question = question + 1 可以写成++question
    猜你喜欢
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 2016-03-05
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 2015-05-08
    相关资源
    最近更新 更多