我正在制作一个简单的游戏,生成 0 到 99 之间的随机数字之和,但无法弄清楚出了什么问题。

编程


C++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>

using namespace std;

int sumFunc(int num1, int num2);
char askYesNo(string question);
int main() {
    srand(static_cast<unsigned int="">(time(0)));
    int ans;
    addition = sumFunc(int num1, int num2);
    cin>>ans;
    
    if (ans == addition) {
        cout<<"Correct! "<<ans<<"is the="" answer!";
="" tryagain="askYesNo("Do" you="" wish="" to="" continue?");
="" if="" (tryagain="=" "y")="" {
="" addition;
="" }
="" else="" break;
="" cout<<"wrong!"<<ans<<"="" is="" not="" answer."<<endl;
="" cout<<addition<<"="" answer.";
="" }

="" return="" 0;
}

int="" sumfunc(int="" num1,="" int="" num2)="" randomnumber="rand();
" num1="(randomNumber" %="" 99)="" +="" 1;
="" num2="(randomNumber" sum="num1" num2;
="" do="" cout<<num1<<"="" "<<num2<<"="?";
" 
="" }while="" (num1="">= 0 && num2 >= 0);
    
    return num1 + num2;
}

char askYesNo(string question) {
    char response;
    
    do {
        cout<<question<<"(y n)="" ?";
="" cin="">>response;
    }while (response != "y" && response != "n");
    
    return response;
}
 
 
}

我尝试过的:

我尝试将 num1&2 定义为参数括号中的随机数。
但考虑到所有事情,我不知道该尝试什么。

解决方案2

当您致电 rand 函数时,它返回一个随机数:它不会使您分配的变量在每次使用时更改其值。
不幸的是,您的代码是如此损坏,以至于我无法弄清楚您到底输入了什么:我无法从中编译出任何内容。

但是……如果你想要两个随机数,你需要打电话 rand 两次:

C
num1 = rand();
num2 = rand();

其次,这些数字是(伪)随机的:可以是 0 到 RAND_MAX 范围内的任何值(实际上最小为 32,767),因此要获得特定范围,您需要对两个返回值使用模运算符,不只是一个。
第三,如果你想要0到99之间的数字,你需要使用 x % (upperValue + 1): 如果你起诉 x % 99 这些值将在 0 到 98 之间(包括 0 和 98),而不是 0 到 99!
看这里: C/C++ 中的模运算符 (%) 及示例 – GeeksforGeeks[^]

解决方案3

将您的要求改写为“生成 0 到 99 之间的两个随机数之和的函数“,我会写

C++
int sum_of_rand()
{
  int a1 = rand() % 100;
  int a2 = rand() % 100;
  return (a1+a2);
}

コメント

タイトルとURLをコピーしました