簡體   English   中英

正數和負數

[英]Numbers positive and negative

我究竟做錯了什么? 我想要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"
}

您還沒有播種隨機數生成器。 在程序開始時調用srand()

通常的方法是使用當前時間調用它:

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

您還需要包含<ctime>

請注意, rand()不會返回負值,您需要自己實現該邏輯。

cin<<a;

在這里,您使用了錯誤的運算符。 將尖括號視為顯示數據流。 你要:

cin>>a;

cout類似:

cout<<t[i];

您還在第一個for循環中使用a而不是i索引t

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

另一個問題是您使用編譯器擴展來創建運行時大小的數組。 也就是說,對於標准 C++,您不能使用a作為數組的大小,因為它在編譯時是未知的。

t[i]=rand();

不是

t[a]=rand();

還是你也寫錯了?

我不確定是否為 100%,但 IMO, rand()只能創建從065535正數,具體取決於編譯可執行文件的時間:這意味着一旦您編譯了.exe文件,它就會給出一遍又一遍地重復相同的數字!

為了讓他產生不同的數字,你必須使用srand()

另一件事:在 C++ 中,您不能分配type array[n]的動態數組 [它不在標准中!],即使編譯器允許您這樣做! 實際上,編譯器將您的代碼轉換為array = new type[n] ,您必須使用delete[]關鍵字解除分配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM