标题:数字排序:给出一个十进制正整数 n,按从大到小的顺序输出其中包含的数字。 ...
只看楼主
yggs
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2022-3-5
结帖率:0
已结贴  问题点数:20 回复次数:3 
数字排序:给出一个十进制正整数 n,按从大到小的顺序输出其中包含的数字。重复出现的数字,仅输出一次。 求大佬解答
输入样例1:
100
输出样例1:
10
本人写的:
#include <stdio.h>
#include <string.h>
int main()
{
    int i, j, k, m = 0;
    char a[20], b[20];
    scanf("%s", a);
    if (strlen(a) == 1) printf("%s", a);
    else {
        for (i = 0, k = 0; a < strlen(a); i++) {
            for (j = i + 1; j <= h; j++) {
                if (j == h) break;
                if (a[i] == a[j]) k = 1;
            }
            if (k == 0) a[i] = b[m], m += 1;
        }
        for (i = 0; b[i] != '\0'; i++)
            printf("%c", b[i]);
    }
    return 0;
}

[此贴子已经被作者于2022-3-5 01:55编辑过]

搜索更多相关主题的帖子: 重复 排序 数字 输出 出现 
2022-03-05 00:31
海潮浪帆
Rank: 2
等 级:论坛游民
帖 子:11
专家分:10
注 册:2020-2-5
得分:7 
马虎的看了一眼,你的h没有定义把
2022-03-05 10:12
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:7 
程序代码:
#include <stdio.h>
#include <stdbool.h>

int main( void )
{
    bool buf[10] = { 0 };

    scanf( " " ); // 跳过前面的空白字符
    for( int ch; ch=getchar(), '0'<=ch && ch<='9'; )
        buf[ch-'0'] = true;

    for( int i=9; i>=0; --i )
        if( buf[i] )
            putchar( i+'0' );
}


输入 1231279889
输出 987321
2022-03-05 19:15
不会游泳的虾
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:101
专家分:643
注 册:2021-7-1
得分:7 
楼主的代码修改如下,供参考:
程序代码:
#include <stdio.h>
#include <string.h>
int main()
{
    int i, j, k, m = 0, h;
    char a[20], b[20];
    scanf("%s", a);
    if (strlen(a) == 1) printf("%s", a);
    else {
        for (i = 0, h = strlen(a); i < h; i++) {  //for (i = 0, k = 0; a < strlen(a); i++)
            for (j = i + 1, k = 0; j < h; j++) {  //for (j = i + 1; j <= h; j++)
                //if (j == h) break;
                if (a[i] == a[j]) {
                    k = 1; break;
                }
            }
            if (k == 0) b[m++] = a[i]; //a[i] = b[m], m += 1;
        }
        for (i = 0; i < m - 1; i++) {  //排序
            for (j = 0; j < m - i - 1; j++) {
                if (b[j] < b[j + 1])
                {
                    k = b[j]; b[j] = b[j + 1]; b[j + 1] = k;
                }
            }
        }
        for (i = 0; i < m; i++) //for (i = 0; b[i] != '\0'; i++)
            printf("%c", b[i]);
    }
    return 0;
}
2022-03-08 16:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508469-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.647203 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved