发布网友 发布时间:2024-10-17 08:07
共3个回答
热心网友 时间:2024-10-17 21:27
这是c++的,中间都一样
#include <iostream>
using namespace std;
int main()
{
int num,n=0;
int temp;
int *p = new int[100];
cout<<"输入一个整数"<<endl;
cin>>num;
while(num) //分解各位
{
p[n] = num % 10;
num/=10;
n+=1;
}
for(int i = 0; i < ( n-1); i++)
{
for(int j = 0; j < ( n - 1- i); j++)
{
if(p[j] < p[j+1]) //交换
{
temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}
for(int i = 0; i < n; i++)
cout<<p[i]; //输出
delete[] p;
return 0;
}
热心网友 时间:2024-10-17 21:21
#include <stdio.h>
void main()
{
int a[100];
int n;
scanf("%d", &n);
for(int i=0; n; i++, n /= 10)
a[i] = n%10;
printf("共有%d位/n",i);
for(int j=0; j<i; j++)
for(int k=j+1; k<i+1; k++)
if(a[j]>a[k])
{int temp = a[j];<br/> a[j] = a[k];<br/> a[k] = temp;<br/> }
for(j=0; j<i+1; j++)
printf("%d", a[j]);
}
未调试,不过思路是正确的,自己试下
热心网友 时间:2024-10-17 21:26
我是学c++的,不过程序你应该看得懂:
#include <iostream>
using namespace std;
int a[33];
int ans = 0,n,t = 0;
void qsort_(int l,int r)
{
int tmp,i = l,j = r,mid=(l+r)/2;
while(i<j)
{
while(a[i]<a[mid]) i++;
while(a[j]>a[mid]) j--;
if (i<=j)
{
tmp = a[i]; a[i] = a[j]; a[j] = a[i];
i++; j--;
}
}
if (l<j) qsort_(l,j);
if (i<r) qsort_(i,r);
}
int main()
{
scanf("%d",&n); // 输入
while(n>0)
{
t++;
a[t] = n%10;
n /= 10;
}
qsort_(1,t); // 从小到大排序
printf("%d\n",t);//位数
int k = 1;
for (int i = 1;i<=t;i++)
{
ans += a[i]*k;
k = k*10;
}
printf("%d\n",ans); //最大值
}
我没编译,你自己。。