#include<iostream>
using namespace std;
int main()
{
int a ,b;
int i ,j;
while(cin >> a)
{
b = a;
int base[a]={0},index[a]={0}; //宣告底數 指數
for(i=2 ; i<a ; i++)
{
if ( a % i == 0 )
{
base[i]= base[i]+1;
for ( j=0 ; a%i==0 ; j++ )
{
if( a % i == 0 )
{
if (a==i)
{index[i]++;goto end;}
else
{a /= i;
index[i] = index[i]+1;}
}
}
}
else;
}
if(a==1)
{
}
base[a] ++;
index[a] ++;
end:
for (i=1;i<a;i++)
{
if (base[i])
{
if (index[i]==1)
{cout<<i<<"*";}
else
{cout << i << "^"<< index[i] << "*" ;}
}
}
if (index[a]==1)
cout<<a<<endl;
else
cout<<a<<"^"<<index[a]<<endl;
}
return 0;
}
第 1 測資點(100%): CE ()
編譯錯誤
/code_2522198.cpp: In function ‘int main()’: /code_2522198.cpp:12:16: error: variable-sized object ‘base’ may not be initialized /code_2522198.cpp:12:29: error: variable-sized object ‘index’ may not be initialized
/code_2522198.cpp:12:16: error: variable-sized object ‘base’ may not be initialized /code_2522198.cpp:12:29: error: variable-sized object ‘index’ may not be initialized
這兩行就把原因都說了啊。
宣告陣列的時候,陣列的長度不可以是「變數」。
int base[a]={0},index[a]={0}; //宣告底數 指數
你的 a 是一個整數變數,不是常數。
若真的需要長度不固定的陣列,可以改用 STL 裡的 vector 或自行以 new / delete 來配置記憶體。