2013计算机二级C语言考试真题
# 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);
}