我编了一个C语言的程序,可是我的WIN-TC编译器老是说有错误。
它老说“'else'位置错在main函数中”#include"stdio.h"#include"math.h"intf(intx){inti;if(x==1)return...
它老说“'else' 位置错在main函数中”
#include "stdio.h"
#include "math.h"
int f(int x)
{
int i;
if (x==1)
return 0;
else
{
for(i=2;i<=x;i++)
if(x%i==0)break;
if(i==x)return 1;
else return 0;
}
}
main()
{
int n,c=0;
FILE *fp;
fp=fopen("DATA.DAT","rb+");
if(fp==NULL)
{
fp=fopen("DATA.DAT","wb+");
while(1)
{
if(f(pow(2,n)-1))
{
c++;
if(c==c+1000 && f(pow(2,n)-1))
fprintf(fp,"%d\n",c);break;
else c++;continue;
}
else if(c==c+1000 && f(pow(2,n)-1))
fprintf(fp,"%d\n",c);break;
else c++;continue;
}
}
else
{
fscanf(fp,"%d\n",&c);
while(1)
{
if(f(pow(2,n)-1))
{
c++;
if(c==c+1000 && f(pow(2,n)-1))
fprintf(fp,"%d\n",c);break;
else c++;continue;
}
else if(c==c+1000 && f(pow(2,n)-1))
fprintf(fp,"%d\n",c);break;
else c++;continue;
}
}
printf("%g",f(pow(2,n)-1));
getch();
} 展开
#include "stdio.h"
#include "math.h"
int f(int x)
{
int i;
if (x==1)
return 0;
else
{
for(i=2;i<=x;i++)
if(x%i==0)break;
if(i==x)return 1;
else return 0;
}
}
main()
{
int n,c=0;
FILE *fp;
fp=fopen("DATA.DAT","rb+");
if(fp==NULL)
{
fp=fopen("DATA.DAT","wb+");
while(1)
{
if(f(pow(2,n)-1))
{
c++;
if(c==c+1000 && f(pow(2,n)-1))
fprintf(fp,"%d\n",c);break;
else c++;continue;
}
else if(c==c+1000 && f(pow(2,n)-1))
fprintf(fp,"%d\n",c);break;
else c++;continue;
}
}
else
{
fscanf(fp,"%d\n",&c);
while(1)
{
if(f(pow(2,n)-1))
{
c++;
if(c==c+1000 && f(pow(2,n)-1))
fprintf(fp,"%d\n",c);break;
else c++;continue;
}
else if(c==c+1000 && f(pow(2,n)-1))
fprintf(fp,"%d\n",c);break;
else c++;continue;
}
}
printf("%g",f(pow(2,n)-1));
getch();
} 展开
展开全部
if(c==c+1000 && f(pow(2,n)-1))
fprintf(fp,"%d\n",c);break; // if 后面没有花括号,所以只有fprintf属于if 。后面跟了break之后,下面的 else 没有匹配的 if 了。几个地方这样的都需要修改为下面样子。
else c++;continue;
if(c==c+1000 && f(pow(2,n)-1)) {
fprintf(fp,"%d\n",c);
break;
} else {
c++;
continue;
}
追答
话说没仔细看,但你代码里还有几个问题,
1、n 没有初始化就使用
2、f 返回int,你printf 不该用 %g
3、if(c==c+1000 && f(pow(2,n)-1))
c == c + 1000 永远不可能成立吧?
你是不是该把类似这段改成这样:
int count = c+1000;
while(1)
{
if(f(pow(2,n)-1))
{
c++;
// c == c + 1000 改成这样
if(count==c+1000 && f(pow(2,n)-1)) {
fprintf(fp,"%d\n",c);break;
}
else { c++;continue; }
}
else if(count==c+1000 && f(pow(2,n)-1)) {
fprintf(fp,"%d\n",c);break;
}
else {c++;continue;}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询