828c语言编程的真正问题。

# include & ltstdio.h & gt

# include & ltmath.h & gt

int isprime(int n){

int I;

for(I = 2;我& ltn;i++)

如果(n%i==0)

返回0;

返回1;

}

int prime_m(int n,int x[],long y[]){

int m,j=0,s[20]={0},a;

龙M,rei

for(m = 2;m & lt= n;m++){

M=(long)pow(2,m)-1;

这里应该用While(isprime(M)){ // if,而不是While。

rei = M;

a = 0;

白色(rei)

{ s[a]= rei % 10;

rei = rei/10;

a++;

}

printf("%d\n ",M);

//A-应该在操作s[a]之前执行,因为对应的s[a]在最后一个a++之后没有赋值。

if(s[a]%2==1){

for(;a = 0;A-){//for语句的中间条件判断不应该是a=0(这是赋值语句),而是A >;=0

if(s[a]==1){

x[j]= m;

y[j]= M;

j++;

//已经找到这里了,应该是断了。

}

}

}

}

}

返回j;

}

void main(){

int k,n,x[100],I;

龙y[100];

FILE * fp

fp=fopen("myf2.out "," w ");

Printf("请输入n:\ n ");

scanf("%d ",& ampn);

k=prime_m(n,x,y);

printf("%d\n ",k);

for(I = 1;我& lt= k;I++) //x[i]和y[i]应该是成对输出的,所以这里少了一个“{”。

//另外,I的取值范围应该是[0,k-1],也就是对于(I = 0;我& ltk;i++)

fprintf(fp," %d\n ",x[I]);//我看到了要求的格式。这里应该用“\t”而不是“\n”吗?

fprintf(fp," %d\n ",y[I]);

//此处添加“}”。

fprintf(fp," \ n我的考试号是:00123 ");

fclose(FP);

}