整个代码我找不到啥逻辑错误,但是输入数据之后,什么运行结果都没有

#include
#include
int sushu(long x){
long i;
for(i=2;i
if(x%i==0){

return 0;}

}
return 1;
}
int decend(long n1,long n2,long x[]){
long i;
int a,k=0;
for(i=n1;i<=n2;i++)
{
int b[4],n=0;
while(i!=0)
{
a=i%10;
b[n]=a;
n++;
i=i/10;

    }
if(n!=4){
    continue;
}
if(b[3]>=b[2]&&b[2]>=b[1]&&b[1]>=b[0]&&sushu(i)){
    x[k]=i;
    k++;
}


}    

return k;

}

int main(){
int m=0,i=0;
long a,b,c[100];

scanf("a=%ld b=%ld",&a,&b);
m=decend(a,b,c);
for(i=0;i
printf("%10ld",c[i]);
}
FILE *fp;
fp=fopen("myf2.out","w");
for(i=0;i
fprintf(fp,"%10ld",c[i]);

}
fprintf(fp,"my examination number is 00123456789\n");
fclose(fp);
return 0;
}

img

img

应该是将区间a和b之间的数的每一个位提取到数组时,将循环变量i改变了的原因,因为while循环后每次i都变为了0,虽然for循环里i++变为了1,然后进入for循环又变为了0,所以导致不能再判断其他数,导致卡在循环里了。用一个临时变量来代替i做取每一位数的操作即可。修改如下:


#include<stdio.h>
#include<stdlib.h>
int sushu(long x){
    long i;
    for(i=2;i<x/2;i++){
            if(x%i==0){
            
                return 0;
            }
    }
    return 1;
}
int decend(long n1,long n2,long x[]){
    long i;
    int a,k=0;
    for(i=n1;i<=n2;i++)
    {
        int b[4],n=0;
        int temp = i;
        while(temp!=0)
        {
            a=temp%10;
            b[n]=a;
            n++;
            temp=temp/10;
        
        }
//        if(n!=4){
//            continue;
//        }
        if(b[3]>=b[2]&&b[2]>=b[1]&&b[1]>=b[0]&&sushu(i)){
            x[k]=i;
            printf("x[%d]=%d\n",k,x[k]);
            k++;
        }
        
        
     
    }    
    return k;

}

int main(){
    int m=0,i=0;
    long a,b,c[100];
    
    scanf("a=%ld b=%ld",&a,&b);
    printf("a=%ld b=%ld\n",a,b);
    m=decend(a,b,c);
    for(i=0;i<m;i++){
        printf("%10ld",c[i]);
    }
    
    FILE *fp;
    fp=fopen("myf2.out","w");
    for(i=0;i<m;i++){
        fprintf(fp,"%10ld",c[i]);
    
    }
    fprintf(fp,"my examination number is 00123456789\n");
    fclose(fp);
    return 0;
}

img

img

img

第49行scanf(a=%d)这样写会报错。

1、scanf函数的使用有问题,改为

scanf("%ld %ld",&a,&b);

2、decend函数没写好,还有在 for 循环里别轻易改变循环变量i的值
3、遇到问题,加点打印就可以看到了,学会自己解决问题