这个 程序的思路就是输入一个多位数,然后把他其中的数字从大到小重新输出出一个数,但写的程序不太对,可以看一下哪里错了吗

img

定义数组,以及提取和排序数位数字那里有点问题,修改如下:

#include <stdio.h>
#include <string.h>
int main(void){
    
    
    char x[20];
    int i,j,k;
    int newNum=0;
    printf("请输入一个整数:");
    scanf("%s",&x[i]);
    int length=strlen(x); // 整数的数位有多少位 
//    printf("length=%d\n",length);
    int numArr[length];  // 存储整数的每一个数位的数组 
    
    // 提取输入的整数字符串中的每一个数位数字到数组 
    for(i=length-1;i>=0;i--){
        numArr[i]=x[i]-'0';
    //    printf("%d",numArr[i]);
    } 
//    printf("\n");
    
    // 从大到小排序这个数组 
    for(i=0;i<length-1;i++){
        for(j=i+1;j<length;j++){
            if(numArr[i]<numArr[j]){
                k=numArr[i];
                numArr[i]=numArr[j];
                numArr[j]=k;
            }
        }
    }
    
    int weight=1;
    // 根据这个数组中的数字,转为对应的整数 
    for(i=0;i<length;i++){
        k = numArr[i];
        newNum=newNum*weight+k;
        //printf("k=%d,newNum=%d,weight=%d\n",k,newNum,weight);
        weight=10;
    }
    
    
    // 打印结果 
    printf("%d",newNum);

    
    return 0;
    
} 

img