C 如何迭代给定的整数输入,并给出从最大到最小数字的输出?

C 如何迭代给定的整数输入,并给出从最大到最小数字的输出?,c,loops,syntax,concatenation,C,Loops,Syntax,Concatenation,从理论上讲,我理解如何解决这个问题 例如,如果给定的输入为9536,则输出为9653 我想要一种方法来做到这一点,使用串联,循环遍历每个数字,当找到一个比其他数字大的数字时,它将存储为空字符串r中的第一个“字符” 我能用php(我的主要语言)解决这个问题,但不是C。我正在准备一个实验室的职位,这个实验室使用C作为他们的主要语言,所以我正在努力复习我的基本C技能 感谢您的帮助三个步骤: 每次读取输入的一个字符,将字符转换为整数并存储在整数数组中 排序数组 打印(现在已排序)数组中的每个数字 使用提

从理论上讲,我理解如何解决这个问题

例如,如果给定的输入为9536,则输出为9653

我想要一种方法来做到这一点,使用串联,循环遍历每个数字,当找到一个比其他数字大的数字时,它将存储为空字符串r中的第一个“字符”

我能用php(我的主要语言)解决这个问题,但不是C。我正在准备一个实验室的职位,这个实验室使用C作为他们的主要语言,所以我正在努力复习我的基本C技能

感谢您的帮助

三个步骤:

  • 每次读取输入的一个字符,将字符转换为整数并存储在整数数组中
  • 排序数组
  • 打印(现在已排序)数组中的每个数字

  • 使用提供的
    qsort()
    可以轻松排序。在本例中,我可以直接请求字符串输入,但您需要整数。它没有使用您想要的“连接”,但是您没有显示任何代码

        #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>
    
        int compare(const void *A, const void *B) {
            return *(char*)B - *(char*)A;
        }
    
        int main() {
            int number;
            char numstr[21];
            printf("Enter an integer: ");
            if (scanf("%d", &number) != 1)
                return 1;
            sprintf (numstr,"%d", number);
            qsort(numstr, strlen(numstr), 1, compare);
            printf("%s\n", numstr);
        return 0;
        }
    

    C中的
    char
    类型是整数类型,因此实际上不需要转换/强制转换它。您可以直接比较字符。有一个非常简洁的解决方案,包括使用数字计数的10个元素数组,并使用
    %10
    /10
    提取/删除一个数字(假设输入是数字而不是字符串)。我想这与你的要求并不完全一致。作为对数字进行排序的替代方法,你可以创建一个由数字0到9索引的柱状图(出现次数),然后从柱状图的最后一个条目开始(对于数字9),对于索引I的每个非零计数,输出那么多数字。
    Enter an integer: 9536
    9653