定义数组,以及提取和排序数位数字那里有点问题,修改如下:
#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;
}