怎样用C语言编写一个程序,功能是这样的,输入任意一整数,如1324,然后对各个位进行排序

如可以输出1342,3421等等,请问用C怎么实现???

以下为程序,输入的数为任意数(只要不溢出就可以)
____________________________________________________
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <math.h>

int getDigitLength(int number)
{
int flag;
if (0 == number) { flag = 0; }
else
{
int i = 1;
flag = 1;
while (!(i <= number && i*10 >= number))
{
i = i * 10;
flag++;
}
}
return flag;
}

int main(int argc, char *argv[])
{
int num;
int len;
printf("please enter number (0 <= number <= %d): ", INT_MAX/3);
scanf("%d",&num);
len = getDigitLength(num);
//printf("%d length: %d\n", num, len);

if (0 == len)
{
printf("old number is %d\n", num);
printf("new number is %d\n", num);
}
else
{
printf("old number is %d\n", num);
num = num / (int)pow(10, len-1) + (num % (int)pow(10, len-1)) * 10;
printf("new number is %d\n", num);
}

return 0;
}
_________________________________________________________
另外送上一个可以实现输入任意位数的程序,这个扩展性好(C++)
#include <iostream>
#include <string>
using namespace std;

int main(int argc, char *argv[])
{
string number;
cout << "please enter number:";
cin >> number;
int len;
int i;
len = number.size();
cout << "old number :";
for (i = 0; i < len; i++)
cout << number[i];
cout << endl;
cout << "new number :";
for (i = 1; i < len; i++)
cout << number[i];
cout << number[0];
cout << endl;
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-08
你要按什么顺序输出??如果是按顺序排列的话程序代码如下
#include "stdio.h"
void main()
{
int a[4],i,t;
{
for(i=0;i<4;i++)
scanf("%d",&a[i]);
}
{if(a[i+1]>=a[i])
t=a[i+1];a[i+1]=a[i];a[i]=t;
}
for(i=0;i<4;i++)

printf("%d", a[i]);

}追问

输入的是任意的一个整数啊,你用数组的话还要空格分开,那就达不到目的了

追答

你是要实现什么效果?

追问

比如,输入一个整数1024,然后可以对个位,十位,百位等进行排序,然后输出不同的结果

追答

哦 那就用%和/ 的配合使用就好
比若说:数字a的百位数是a%100 其他同理

相似回答