请求大神帮忙找错啊,可能是漏了某种情况吧!
#include<iostream>
using namespace std;
char p[7];
int b[1001],c[1001],a[6];
int main()
{
int n,i,j;
while(cin>>p>>n)
{
for(i=0;i<=5;i++)
if(p[i]=='.')
break;
if(n==1)
{
cout<<p<<endl;
continue;
}
if(n==0)
{
cout<<1<<endl;
continue;
}
int m=5-i;
int k=0;
int r=strlen(p);
if(m<5-r)
m=5-r;
for(i=0;i<=r-1;i++)
{
if(p[i]!='.')
{
a[k]=p[i]-'0';
k++;
}
}
for(i=r;i<6;i++)
a[i]=0;
m=m*n;
k=1000;
for(i=4;i>=0;i--)
b[k--]=a[i];
for(i=0;i<=995;i++)
b[i]=0;
n=n-1;
while(n--)
{
for(i=0;i<=1000;i++)
c[i]=0;
for(i=0;;i++)
if(b[i]!=0)
break;
k=i;
for(i=4;i>=0;i--)
for(j=1000;j>=k;j--)
{
c[i+j-4]+=a[i]*b[j];
}
for(i=1000;i>=0;i--)
{
if(c[i]>9);
{
c[i-1]+=c[i]/10;
c[i]=c[i]%10;
}
}
for(i=0;i<=1000;i++)
b[i]=c[i];
}
i=0;
while(c[i]==0)
{
i++;
if(i>1000)
{
cout<<0<<endl;break;
}
}
if(i>1000)
continue;
for(;i<=1000-m;i++)
cout<<c[i];
for(j=1000;;j--)
if(c[j]!=0)
break;
if(j>1000-m)
cout<<".";
for(i=1001-m;i<=j;i++)
cout<<c[i];
cout<<endl;
}
return 0;
}