数组问题,循环后数组内数据丢失

img

img

第25-38行,b1到bn-1的数都没了,怎么解决啊。

#include<stdio.h>
int main()
{
    int n,i,j,k,min,temp;
    int a[20],b[20];
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        scanf("%d",&a[i]);
        b[i]=a[i];
    }
    for(k=1;k<n;k++){
        min=k;
        for(i=k+1;i<n+1;i++){
            if(b[i]<b[min]){
                min=i;
            }
        }
        temp=b[min];
        b[min]=b[k];
        b[k]=temp;
    }
    for(i=1;i<=n;i++){
        printf("%d ",b[i]);
    }
    printf("\n");
    for(i=1;i<n;i++){
        for(j=i+1;j<=n;j++){
            if(b[i]=b[j]){
               b[j]=9999999;
            }
            else{
            b[i]=b[i];
            }
        }
    }
    for(i=1;i<=n;i++){
        printf("%d ",b[i]);
    }
        for(k=1;k<n;k++){
        min=k;
        for(i=k+1;i<n+1;i++){
            if(b[i]<b[min]){
                min=i;
            }
        }
        temp=b[min];
        b[min]=b[k];
        b[k]=temp;
    }
    
    
    
    printf("\n");
    for(i=1;i<=n;i++){
        printf("%d ",b[i]);
    }
    printf("\n");
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            if(a[i]=b[j]){
                printf("%d ",j);
            }
        }
    }
    
    
    return 0;
}

if语句里少写了等号


#include <stdio.h>
int main()
{
    int n, i, j, k, min, temp, cnt = 0;
    int a[20][2], b[20] ; //a[][0]存数据,a[][1]存排序号
    scanf("%d", &n);
    for (i = 0; i < n; i++) //
    {
        scanf("%d", &a[i][0]);
        a[i][1] = 0;

        for (j = 0; j < i; j++) //b只保存不重复项
        {
            if (b[j] == a[i][0])
                break;
        }
        if (j == i)
        {
            b[cnt] = a[i][0];
            cnt++; //不同项数量
        }
    }
    // b排序
    for (k = 0; k < cnt - 1; k++)
    {
        for (i = k + 1; i < cnt; i++)
        {
            if (b[i] < b[k])
            {
                temp = b[i];
                b[i] = b[k];
                b[k] = temp;
            }
        }
    }
    //从a中按b的顺序查找并赋值顺序号
    for (i = 0; i < cnt; i++)
    {
        for (j = 0; j < n; j++)
        {
            if (a[j][0] == b[i])
            {
                a[j][1] = i + 1;
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("%d ", a[i][1]);
    }

    return 0;
}