作者Cidolfas ()
看板C_and_CPP
標題[問題] 語法問題,無法用 for 連續輸入
時間Thu Aug 19 11:45:01 2010
遇到的問題: (題意請描述清楚)
有一段式子,我想用 for 讓它能連續輸入,
但是若寫成 for 似乎會卡在迴圈中,
但若我只輸入一個值去跑,又沒問題,
所以想請教一下應該如何改才好,
謝謝。
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
Dev-C++
有問題的code: (請善用置底文標色功能)
#include<iostream>
#include<iomanip>
#define LEN 100
using namespace std;
int is_prime( int n)//測試是否為質數
{
int i;
for( i = 2 ; i <= n - 1 ; i++ )
if( n % i == 0)
return 0;
return 1;
}
int main()
{
int n; // m <= n < 99
int i;
cin >> n;
int a[2][LEN];
for ( i = 0 ; i < LEN ; i++ )
{
a[0][i] = 0;//初始化
a[1][i] = 0;//初始化
}
for ( i = 0 ; i < LEN ; i++ )
if( is_prime(i) )
a[0][i] = i; //把質數的位置標出來
int m=20;
//此處如果我想改成下面用for連續輸入,會卡迴圈
//for( m = 2 ; m <= n ; m++ )
{
do {
if (m == 1) //如果置換後m的值為1就跳出
break;
for ( i = 2 ; i <= m ; i++)
{
int k = m % i; //計算餘數
if (k == 0) //如果餘數=0
{
m /= i; //就將m重設成商
a[1][i] += 1; //把結果記錄起來
break;
}
}
}
while( m > 0 );
}
for ( i = 0 ; i < n ; i++ )
cout << a[0][i] << setw(3) << setw(10) << a[1][i] << "\t" << endl;
system("pause");
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.85.93.234
※ 編輯: Cidolfas 來自: 219.85.93.234 (08/19 12:13)
推 scwg:don't use m as outer loop counter since you modify it 08/19 12:16
→ scwg:inside the loop body. 08/19 12:17
→ Cidolfas:感激,問題解決! 08/19 12:21