怎会如此,什么东西都运行不出来,找不出错

img


#include
int seperate (int x[],int m,int y[])
{
int i,j=0,k=0,flag=0,tmp,w=0;
for(i=0;i
{ tmp=x[i];
while(tmp!=0)
{
if(k>tmp%10)
{
flag=1;
break;
}
else
{
k=tmp%10;
tmp=tmp/10;
}

    }
    if(flag==0)
    {
        y[j++]=x[i];
    }
    else
    {
        x[w++]=x[i];
    }    
}    
return j;

}

int main()
{
int a[6]={213,543,45,234,4231,7653}, b[6],m,i,j;
m=seperate(a,6,b);
for(i=0;i
{
printf("%d ",b[i]);
}
FILE *fp;
fp=fopen("myf2.out","w+");
for(j=0;j
{
fprintf(fp,"%d ",b[j]);
}
fclose(fp);
return 0;
}


    if(flag==0)
    {
        y[j++]=x[i];
    }
    else
    {
        x[w++]=x[i];
    }    

把你这段代码改成:

if(flag != 1) {
    y[j++] = x[i]
}

另外,刚进for 循环的时候将flag = 0; 初始化一下

为什么没有输入?调用了吗?

img

帮你写了一个,仅供参考!谢谢!

img

img

#include<stdio.h>
#include<stdlib.h>

int seperate(int x[], int m, int y[])
{
    char tmp[7];
    char *p = tmp;
    int j = 0, k = 0;
    char max = '9';
    int len;
    for (int i = 0; i < m; i++)
    {
        sprintf(tmp, "%d", x[i]);
        len = strlen(tmp);

        max = p[0];
        k += 1;
        while (p[k] != '\0')
        {
            if (p[k] < max)
            {
                max = p[k];
                 k++;
            }
            else
            {
                break;
            }
        }
        if (k == len)
        {
            y[j++] = atoi(tmp);
        }
        k = 0;
    }

    return j;
}

int main()
{
    int a[8] = { 987, 89, 123, 652, 521, 12, 96, 845 };
    int b[8];
    int m;
    char outf[] = "myf2.out";
    char str[] = "我的准考证号:123456";
    m = seperate(a, 8, b);

    FILE *out = fopen(outf, "w");
    if (!out)
        return -1;

    printf("a array: ");
    fprintf(out, "a array: ");
    for (int i = 0; i < 8; i++)
    {
        printf("%d ", a[i]);
        fprintf(out, "%d ", a[i]);
    }

    printf("\nb array: ");
    fprintf(out, "\n");
    fprintf(out, "b array: ");
    for (int i = 0; i < m; i++)
    {
        printf("%d ", b[i]);
        fprintf(out, "%d ", b[i]);
    }
    fprintf(out, "\n");
    fputs(str, out);

    fclose(out);
    return 0;
}