| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4086 人关注过本帖
标题:求组成的最大数,程序无效内存引用
只看楼主 加入收藏
Allurelovess
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2017-6-2
结帖率:0
收藏
 问题点数:0 回复次数:35 
求组成的最大数,程序无效内存引用
问题:任意输入一个自然数,输出该自然数的各位数字组成的最大数。例如,输入 1593 ,则输出为 9531
      输入:自然数 n
      输出:各位数字组成的最大数
程序:
#include <stdio.h>
#include <math.h>

void p(int a[]);
int main(void)
 {
     int m,i,s=0,n,a[100]={0},b,c;
     scanf("%d",&m);
     for(i=1;i<100;i++)if(m<pow(10,i)){n=i;break;}//判断位数
     for(i=0;i<n;i++){c=pow(10,(i+1));b=m%c;a[i]=b/pow(10,i);}//取出每个数字
    p(a);//for(i=0;i<n;i++)printf("%d",a[i]);
    for(i=0;i<n+1;i++)s=s+pow(10,(n-i-1))*a[i];
    printf("%d\n",s);
   
    return 0;
 }
 
 void p(int a[])//排序
 {  int i,j;char temp;
     for(i=0;i<100;i++)
     {
         for(j=0;j<100-i;j++)
         {
          if(a[j]<a[j+1])
          {
              temp=a[j];
              a[j]=a[j+1];
              a[j+1]=temp;
          }   
         }
     }
     
 }
Dev c++可以编译运行,但其他编译器显示无效内存引用,大家帮忙看一下我的程序哪儿有问题啊?
搜索更多相关主题的帖子: include 自然数 
2017-06-02 23:43
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
for(j=0;j<100-i;j++)

越界了吧

剑栈风樯各苦辛,别时冰雪到时春
2017-06-03 00:03
Allurelovess
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2017-6-2
收藏
得分:0 
回复 2楼 林月儿
应该怎么改一下呢?
2017-06-03 00:05
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
能把代码写的这么丑,也是本事。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-03 00:06
Allurelovess
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2017-6-2
收藏
得分:0 
回复 4楼 renkejun1942
别在意这些细节,能把他写出来已经很不错了
2017-06-03 00:15
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
感觉可以用桶排序或者基数排序在o(n)的时间内解决~如果是大数的话输入就要另外处理了~


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-06-03 00:25
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
十进制就10个数字的。
在初始状态下,数组各元素的初始值为0。循环对数字进行模运算,然后除于10,对余数对应的数组元素自增1。
而后,逆序遍历数组,输出值大于1的元素,并且每次输出值自减1.
所得的结果就是最大值了。

超大数的话,不就是降序排序么?

[此贴子已经被作者于2017-6-3 00:31编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-03 00:28
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 7楼 renkejun1942
感觉这就是桶排序思想啊~睡觉去了就是这样~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-06-03 00:31
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
回复 3楼 Allurelovess
程序代码:
//问题:任意输入一个自然数,输出该自然数的各位数字组成的最大数。例如,输入 1593 ,则输出为 9531 
//      输入:自然数 n
//      输出:各位数字组成的最大数
//程序:
#include <stdio.h>
#include <string.h>
void sort(char a[]);
int main(void){
     char s[100];
     scanf("%s", s);
     sort(s);
     printf("%s\n",s);
     return 0; 

 }

 void sort(char a[]){
     int i,j,len=strlen(a);
     for(i=len-1;i>=0;i--){
         for(j=0;j<i;j++){
             if(a[j]-a[j+1]<0){
                 char aa=a[j];a[j]=a[j+1];a[j+1]=aa;
             }
         } 
     }

 }

剑栈风樯各苦辛,别时冰雪到时春
2017-06-03 00:50
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
好久不写代码了,练练手。
程序代码:
#include <stdio.h>

int
main( void )
{
    int innum, value;
    int ix;
    int array[ 10 ] = { 0 };

    ix = 10;
    value = 0;
    scanf( "%d", &innum );

    for( ;innum > 0; innum /= 10 )
        ++array[ innum % 10 ];

    while( --ix >= 0 )
        while( array[ ix ]-- > 0 )
            value = value * 10 + ix;

    printf( "%d", value );
    return 0;
}




[此贴子已经被作者于2017-6-3 19:58编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-03 00:54
快速回复:求组成的最大数,程序无效内存引用
数据加载中...
 
   



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

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