error C2143: syntax error : missing ✀;✀ before ✀type✀怎么办?

2024-12-15 00:45:09
推荐回答(3个)
回答1:

int sumit(int a)
这个函数没有结束
在int main( )这句的上面加一个}
#include
#define maxn 1000000000
#define maxm 100000
int a,b,c,ans,t;
int q[maxm];
int p [maxm] ;
void prepare()
{
int i,j;
t=0;
for (i=2;i if(!p[i])
{
q[++t]=i;
if(maxm/i>=i)
for (j=i*i;j p[j]=1;
}
}
int sumit(int a)
{
long sum=1,now;
int i=1;
while (q[i]*q[i]<=a)
{
if (a%q[i]==0)
{
now=1;
while (a%q[i]==0)
{
a/=q[i];
now*=q[i];
}
i++;
}
if(a>1)
{
now=a+1;
sum*=now;
}
return sum;
}
}//这儿加一个}让sumit函数结束
int main( )
{
freopen("genius.in","r",stdin);
freopen("genius.out","w",stdout);
long temp;
prepare();
while(scanf("%d %d %d",&a,&b,&c),a)
{
long temp=a;
if(temp*c%b)
printf("0\n");
else
{
ans=(temp*c/b);
if(sumit(ans)==a) printf("1 %d\n",ans);
else printf("0\n");
}
}
return 0;
}

回答2:

int sumit(int a)
{
long sum=1,now;
int i=1;
while (q[i]*q[i]<=a){
if (a%q[i]==0){
now=1;
while (a%q[i]==0){
a/=q[i];
now*=q[i];
}
i++;
}
if(a>1){
now=a+1;
sum*=now;
}
return sum;
}

整理一下:

int sumit(int a)
{
long sum=1,now;
int i=1;
while (q[i]*q[i]<=a)
{
if (a%q[i]==0)
{
now=1;
while (a%q[i]==0)
{
a/=q[i];
now*=q[i];
}
i++;
}
if(a>1)
{
now=a+1;
sum*=now;
}
return sum;
}

发现{}不匹配。

写程序的时候,最好注意缩进以及各式,这样可以不发生这种问题。

回答3:

int sumit(int a)
{
long sum=1,now;
int i=1;
while (q[i]*q[i]<=a){
if (a%q[i]==0){
now=1;
while (a%q[i]==0){
a/=q[i];
now*=q[i];
}
i++;
}
if(a>1){
now=a+1;
sum*=now;
}
return sum;
}
你程序中少了一个}