0

您好,我想打印从 30 到 -30 的数字,这是我的代码

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

int main(){

   srand(time(0));
   int arr[20] = {0};
   for(int i = 0; i < 20; i++){    
      arr[i] = rand() % 30+(-30);
   }
   for(int i = 0; i < 20; i++){
      cout << arr[i] << " "<<endl;
   }
   return 0;
}

我不知道为什么,但所有数字都是负数?

4

2 回答 2

7

您的逻辑有问题...您从 0-30 生成数字,然后减去 30...您可以获得的最大数字是 0...

arr[i] = (rand() % 61) - 30;

给你你想要的

于 2012-01-14T09:31:50.827 回答
6

你应该用过,

arr[i] = (rand() % 61) - 30

更详细地说,

arr[i] = (-30) + (rand() % ((30)-(-30)+1))  // base + range

假设 -30 到 30 是一个包含范围

于 2012-01-14T09:31:27.337 回答