| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1443 人关注过本帖
标题:数字排序:给出一个十进制正整数 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
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册: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
等 级:贵宾
威 望:27
帖 子:107
专家分:675
注 册: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
快速回复:数字排序:给出一个十进制正整数 n,按从大到小的顺序输出其中包含的数 ...
数据加载中...
 
   



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

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