2013-05-20 34 views
0

以下代碼段是輸入t(測試用例的數量)和學生人數n[w]g[w]。那麼它應該將學生的身高作爲輸入並將其存儲在數組stu中,其最大尺寸爲MAXV100。但是此循環會一直持續下去。這可能是什麼錯誤?程序無限輸入

int t; 
cin>>t; 
std::vector<int> n(t); 
std::vector<int> g(t); 
int m =0; 
int stu[MAXV]; 
for(int w=0;w<t;t++) 
{ 
    cin>>n[w]>>g[w]; 
    for(int i=m;i<n[w] && i < MAXV;i++) 
    { 
     cin>>stu[i]; 
     ++m; 
    } 
} 
+1

不*無限*,但它會接受輸入幾個十億次......你把'w'設置爲0,但你增加't'。 –

+1

可能你的意思是'w ++'而不是't ++'在第一個for循環中 – Uroc327

+0

另一件事:當內循環命中'MAXV'時,外循環保持循環。 – Barmar

回答

2
for(int w=0;w<t;t++) 
{ 

} 

這是一個無限循環。一旦t大於w,它總是會更大。如果你想讓它停下來,就用增量w而不是t來代替。

更正:它不是無限的,溢出後會停止。

+2

它不是*無限*循環。它將在數十億次後退出。 –

+0

你說得對。它會在powerflow後停止。 – gkovacs90

+1

@Nik Bougalis:是的,只要有耐心,給它一點時間... – AlexK

2
for(int w=0;w<t;t++) , really ? 

我敢肯定你的意思

for(int w=0;w<t;w++) 

檢查其他錯誤太多,但是這就是爲什麼你編碼一個無限循環

+0

+1,但是「*真的?*」是沒有必要的。 – Maroun

+0

那對我來說太蠢了...... –

+0

我站着糾正了 – AlexK