c语言题:输入一个正整数,输出他是几位数,并用这几个数字组合成最大数...

发布网友 发布时间: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); //最大值
}

我没编译,你自己。。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com