数字正面和负面

时间:2013-04-27 22:15:27

标签: c++ negative-number

我做错了什么?我希望a个随机数。负整数和正整数

#include <iostream>
#include <cstdlib>
int main(){
   int a;
   cin<<a;
   int t[a];
   for(int i=0;i<a;i+=1)
      t[a]=rand();
   for(int i=0;i<a;i++)
      cout>>t[i];
}

我是初学者,我想要随机数,但我只有一个非常大。 有人可以帮忙吗?

对不起,但你看到我没有的问题。现在我知道我应该只写>>endl

修改 我纠正了我的代码,现在可以使用了

#include <cstdlib>
#include <time.h>
int main(){
   int a;
   cin>>a;
   for(int i=0;i<a;i++)
      cout<<(rand()-rand())<<endl;//i asked only for this "endl"
}

4 个答案:

答案 0 :(得分:2)

您还没有播种随机数生成器。在程序开始时致电srand()

通常的方法是用当前时间调用它:

std::srand(std::time(0))

您还需要包含<ctime>

请注意rand() doesn't return negative values,您需要自己实施的逻辑。

答案 1 :(得分:1)

cin<<a;

在这里,您使用了错误的运算符。将尖括号视为显示数据流。你想要:

cin>>a;

cout类似:

cout<<t[i];

您还在第一个t循环中使用a而不是ifor编制索引:

t[i]=rand();
//^ This is i, not a

另一个问题是您使用编译器扩展来创建运行时大小的数组。也就是说,使用标准C ++,您不能使用a作为数组的大小,因为它在编译时是未知的。

答案 2 :(得分:1)

t[i]=rand();

不是

t[a]=rand();

或者你也写错了吗?

答案 3 :(得分:1)

我不确定100%但IMO,rand()只能创建正数,从065535,具体取决于编译可执行文件的时间:这意味着一旦你编译了.exe文件,它就会一遍又一遍地给出相同的数字!

为了让他产生不同的数字,你必须使用srand()

另一件事: 在C ++中,您无法使用type array[n]分配动态数组[它不在标准中!],即使编译器允许您这样做! 实际上,编译器会在array = new type[n]中翻译您必须使用delete[]关键字取消分配的代码。