C++编程:任意输入一个自然数,调用一个自定义的函数输出该自然数的各位数字组成的最大数

如题所述

#include<iostream>
#include<string>
using namespace std;
void main()
{
char a[20];
int i,j,length;
cout<<"输入自然数: ";
gets(a);
length=strlen(a);
for(j=0;j<length-1;j++)
for(i=0;j<length-1-i;i++)
{
int temp;
if(a[i]<a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}//用起泡把数组按从大到小,排序
cout<<"最大数是:"<<endl;
for(i=0;i<length;i++)
{
cout<<a[i];
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-05-18
#include <stdio.h>
INT main ()
{
char a[20];
int i,j,k;
scanf("%s",a);

for(i=0;a[i]!='\0';i++)
for(k=i+1;a[k]!='\0';k++)
if(a[i]>a[k])
{
j=a[i];
a[i]=a[k];
a[k]=j;
}
char x[20];
j=0;
for(i=0;a[i]!='\0';i++){
if(a[i]!='0'){
xin[j]=a[i];
j++;
}
}

printf("%s",x);
return 0;
第2个回答  2009-05-14
#include <iostream.h>
#include <string.h>

void main()
{
char n[200],t;
int i,j,m;
cin>>n;
m=strlen(n);
for(i=0;i<m;i++)
for(j=i;j<m;j++)
if(n[i]<n[j])
{
t=n[i];
n[i]=n[j];
n[j]=t;
}
cout<<n;
}
第3个回答  2009-05-14
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void max(char a[])
{
int i,j,len;
char temp;
len=strlen(a);
for(i=0;i<len;i++)
for(j=i+1;j<len;j++)
if(a[i]<a[j])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}

int main()
{
char a[100];
int num,i;
scanf("%d",&num);
itoa(num,a,10);
max(a);
for(i=0;i<strlen(a);i++)
printf("%c",a[i]);
return 0;
}
第4个回答  2009-05-14
#include <iostream>
using namespace std;

int Fac(int a);
int main(){
int a=1234;
cout <<Fac(a)<<endl;
return 0;
}
int Fac(int a){
char ch[10];
int b,i=0;
while(a!=0){
b=a%10;
a=a/10;
ch[i]=b+48;
i++;
}
char*pch=new char[i];
memcpy(pch,ch,i);
for(int m=0;m<i;m++){
for(int n=0;n<i-m;n++){
if(pch[n]<pch[n+1])swap(pch[n],pch[n+1]);
}
}
int s=0;
for(int m=0;m<i;m++){
int tmp=pch[m]-48;
for(int n=0;n<i-1-m;n++){
tmp*=10;
}
s+=tmp;
}
return s;
}本回答被网友采纳

...输出该自然数的各位数字组成的最大数。例如,输入 1593 ,则输出为 9...
inti,j;//输出各个数字出现的次数 for(i=9;i>=0;i--){ printf("数字%d出现%d次.\n",i,arr[i]);} //输出这些数组成的最大的数 printf("\n组成的最大的数:\n");for(i=9;i>=0;i--){ for(j=arr[i];j>0;j--)printf("%d...

输入一个自然数,输出该自然数的各位数字组成的最大数。
<1> 先计算输入的数是几位的 假设输入的为a 则 weishu=0;while(a>0){ weishu++;a = a\/10;} 这样可以求出位数。<2> 求各位上的数 int b[10] ; \/\/假设最多能输入10位数。int i=0;while(a>0){ b[i] = a%10;a=a\/10;i++;} 这样就存储了各位上的数 <3> 然后对 b[...

...输出该自然数的各位数字组成的最大数。输入 1593 ,则输出为 9531...
你的m只在第1次循环的时候初值是1,第2次循环的时候,是在原来的结果上又乘了若干个10 j=0改为j=0,m=1试试。或者 for(i=0;i<=num-1;i++){for(j=0;j<=num-i-2;j++) m=m*10;s=s+a[i]*m;} 改成 for(i=num-1, m=1;i>=0;i--){ s=s+a[i]*m;m=m*10;} ...

用c++设计一个程序,输入一个整数,输出组成该整数的各位数字,并求出它...
include using namespace std ; int main() { int n; int unit,tens,hund; cin >> n ; unit = n%10 ; tens= n\/10%10; hund=n\/100; if ( hund < tens ) { int temp=hund;hund=tens;tens=temp; } if ( hund < unit ) { int temp=hund;hund=unit;u...

...5位自然数(不含0),输出由该自然数的各位数字组成+的最小的数?_百度...
1. 输入一个 5 位自然数,例如 98765。2. 将数字拆分成各个位上的数字:9、8、7、6、5。3. 对这些数字进行从小到大的排序。排序后得到:5、6、7、8、9。4. 将排序后的数字依次相加:5 + 6 + 7 + 8 + 9 = 35。因此,由 98765 的各位数字组成的和的最小数为 35。

(C++) 输入一个由数字、+、-、*、\/及括号组成的自述表达式,求其值。
typedef struct SqStack_ch{ \/* 定义运算符栈 *\/ SElemType_ch *base; \/* 在栈构造之前和销毁之后,base的值为NULL *\/ SElemType_ch *top; \/* 栈顶指针 *\/ int stacksize; \/* 当前已分配的存储空间,以元素为单位 *\/ }SqStack_ch; \/* 顺序栈 *\/ Status InitStack(SqSt...

...个程序,输入一个三位正整数,输出其各位数字组成的最大整数,如,输入...
include <iostream> using namespace std ;int main(){ int n;int unit,tens,hund;cin >> n ;unit = n%10 ;tens= n\/10%10;hund=n\/100;if ( hund < tens ) { int temp=hund;hund=tens;tens=temp; } if ( hund < unit ) { int temp=hund;hund=unit;unit=temp; } if ( ...

...个程序,输入一个三位正整数,输出其各位数字组成的最大数
include <iostream>using namespace std ;int main(){ int n; int unit,tens,hund; cin >> n ; unit = n%10 ; tens= n\/10%10; hund=n\/100; if ( hund < tens ) { int temp=hund;hund=tens;tens=temp; } if ( hund < unit ) { int temp=hund;hu...

C语言:输入一个正整数 m(m<10000),输出组成该整数的各位数字和,例如输 ...
include <stdio.h>#include <malloc.h>int count_fun(int n){int count = 1;while(n>=10){count++;n=n\/10;}return count;}int main(int argc, char *argv[]){int n,i,sum = 0;scanf("%d",&n);int *arr = (int *)malloc(sizeof(int)*n);for(i = 0; i < n; i++){...

编程实现一个4位数n,输出组成的各位数字用符号*隔开
include<stdio.h> void main() { int x,y;scanf("%d",&x);x%=10000; y=x\/1000; printf("%d",y);x%=1000; y=x\/100; printf("*%d",y);x%=100; y=x\/10; printf("*%d",y);x%=10; y=x; printf("*%d\\n",y);} ...

相似回答