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

如题所述

#include<iostream.h> 

int main(void) 

int num; 

void Max(int n); 

cin>>num; 

Max(num); 

}; 

//自定义函数Max; 

void Max(int n) 

int i,j,k,temp,a[4]; 

for(i=0;i<4;i++) 

a[i]=n%10; 

n/=10; 

for(i=0;i<4;i++) 

k=i; 

for(j=i+1;j<4;j++) 

if(a[j]>a[i])k=j; 

if(k!=i) 

temp=a[i]; 

a[i]=a[k]; 

a[k]=temp; 

for(i=0;i<4;i++)cout<<a[i]; 

cout<<endl; 

};

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-05-13
#include<iostream.h>
int fun(int a,int b,int c,int d)
{
int max[4]={a,b,c,d};
int i,j,z,t;
for(i=0;i<3;i++)
{
for(j=i+1;j<4;j++)
{
if(max[i]<max[j])
{
z=max[i];
max[i]=max[j];
max[j]=z;
}
}
}
t=1000*max[0]+100*max[1]+10*max[2]+max[3];
return t;
}
void main()
{
int num_1,num_2,num_3,num_4;
cout<<"请输入四个自然数:";
cin>>num_1>>num_2>>num_3>>num_4;
cout<<"你输入四个数组成的最大的数为:"<<fun(num_1,num_2,num_3,num_4)<<endl;
}
第2个回答  2009-05-13
1楼的好像不对吧?人家是要组成最大数不是要求和。
sum = a+b+c+d;
cout<<sum;
这两句话可以改为以下:
int a[]={a,b,c,d},t;
for(int i=0;i<4;i++)
for(int j=i+1;j<4;j++)
if(a[i]<a[j]){
t=a[i];
a[i]=a[j];
a[j]=t;
}
for(int k=0;k<4;k++)
cout<<a[k];

刚发现我也错了,因为题目要用函数……晕……2楼正解。
第3个回答  2009-05-13
#include"stdio.h"
void fun(int a)
{
int i,j,buf,x[4];
for (i=0;i<4;i++)
{
x[i]=a%10;
a/=10;
}
for (i=0;i<4;i++)
{
for (j=0;j<3;j++)
{
if (x[j]>x[j+1])
{
buf = x[j+1];
x[j+1] = x[j];
x[j] = buf;
}
}
printf("%d",x[3]);
x[3] = -1;
}
printf("\n");
}
void main()
{
int a;
scanf("%d",&a);
fun(a);
}
第4个回答  2009-05-13
给4个自然数从大到小排序,排好后为a,b,c,d;
则最大数为a*10000+b*1000+c*100+d;