c语言数位重排为最大数,求助分析:从键盘输入一个正整数,将该正整数中的每位数字重新排列,输出最 ......

我自己编了一下...可以将数字的各位分离出来....并求出最大和最小值..不过这个小程序只能处理INT型数据....如果想处理LONG等..自己再看看吧...

#include

#include     //使用itoa,将一整型数转化成字符串

#include

#include

int main()

{

const int ARRAY_SIZE = 20;

int value,length,max,min;

char buffer[ARRAY_SIZE];

int num[ARRAY_SIZE];

printf("Please enter one number:");

scanf("%d",&value);

length = strlen(itoa(value,buffer,10));

for(int i=length-1; i>=0; i--)

{

num[i] = value / (int)pow(10,i);

value = value % (int)pow(10,i);

printf("%d\t",num[i]);

}

printf("\n");

max = num[0];

min = num[0];

for(i=length-1; i>0; i--)

{

if(max < num[i])

max = num[i];

if(min > num[i])

min = num[i];

}

printf("THe min number is: %d\nThe max number is: %d\n",min,max);

return 0;

}

----------------解决方案--------------------------------------------------------

LZ```要知道你输入的一个整数```有多少位不知道````

如果从键盘输入```你又何必去想``怎么拆开它呢````

使用``getchar( )``不就等于把数拆开了吗````

然后你要做什么操作就不知道````有需要```你可以 getchar()-'48' ```

如果是用函数的功能实现``那么上面的办法肯定就不能用了``

我提供的方法是  一个循环```  n是要拆的数p指向一个数组```

void chaishu (  long  n  ,  int  *p  )

{

while ( n )

{

*p++  =  n%10  ;

n  /= 10 ;

}

return ;

}

----------------解决方案--------------------------------------------------------

楼上的那位,你上面的程序是否看懂了啊....?程序能处理任意长度的整形数....如果要用函数封装,你的那个办法可行么...函数需要的参数是一个整数哦...你那样可以么....

以上是本人的看法...

----------------解决方案--------------------------------------------------------

汗了

while(num)

{

data[num%10]++;

num/=10;

}

然后要最大的则从9开始循环,要最小则从1开始循环(记得从1开始得到一个数后要回到0处循环)

比如

0 1 2 3 4 5..

2 0 3 0 1..

得到的结果是200224..

----------------解决方案--------------------------------------------------------

不用那么复杂哟

要每一位的数字吧

int main()

{

int i=0

char a[100]={0};

gets(a);

while(a[i++]);

i-=2;

//a[0]就是最高位 a[i]就是个位

return 0;

}

----------------解决方案--------------------------------------------------------

看热闹

----------------解决方案--------------------------------------------------------

实验了N天,今天终于有了灵感,搞定了。大家看看我的程序,给点意见,谢谢大家.

#include

#include

main ()

{

char num[11] ,temp ; //定义一个数组存储输入的数字,这样方便取得数字长度

short i, j, a, a2 ;

scanf("%s",num);

a=strlen(num);   //用一个函数求得数字(字符串)长度,方便下面循环使用

a2=a-1;          //用于排序

for (i=1; i

{

for (j=0; j<=a2-i; j++)

{

if (num[j] > num[j+1])

{

temp=num[j]; num[j]=num[j+1]; num[j+1]=temp;

}

}

}

for (i=0; i

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值