五位数重置

来源:百度知道 编辑:UC知道 时间:2024/06/08 23:54:32
程序如下,我是在wintc里运行的,结果是一个负数,说明原因啊

#include"stdio.h"
int max(int x,int y)
{int t ;
if(x<y)
{t=x;
x=y;
y=t;
return;
}
}
main()
{
long int b=0,a;
int num[5],n,m=0,d=10000;
scanf("%ld",&a);
for(n=0;n<5;n++)
{
num[m++]=a%10;
a=a/10;
}

for(n=0;n<4;n++)
max(num[n],num[n+1]);

for(n=0;n<5;n++)
{
b=b+num[n]*d;
d=d/10;
}
printf("%ld",b);
getch();

}
还是没办法,我又改了下程序
#include"stdio.h"
#include"conio.h"

main()
{
long sum=0,a;
int num[5],n,t,m=0,d=10000;
scanf("%ld",&a);
for(n=0;n<5;n++)
{
num[m++]=a%10;
if(m==5)break;
a=a/10;
}
m=0;
for(n=0;n<4;n++)
for(m=n+1;m<5;m++)
if(num[n]<num[m])

#include"stdio.h"

void max(int *x,int *y)//你要是想返回就返回点东西,要不别逗人家。这里需要明白数值传递的方法,要能传过来还能传回去,我给你改成了指针传值。
{int t ;
if(x<y)
{t=*x;
*x=*y;
*y=t;
// return;//这句就省了吧。
}
}
main()
{
long int b=0,a;
int num[5],n,m=0,d=10000;
scanf("%ld",&a);
for(n=0;n<5;n++)
{
num[m++]=a%10;
a=a/10;
}

for(n=0;n<4;n++)//你要是想排序,一个循环是不够的。
max(&num[n],&num[n+1]);//为了配合前面改动,实参要是地址值。

for(n=0;n<5;n++)
{
b=b+num[n]*d;
d=d/10;
}
printf("%ld",b);
getchar();//原来那个头文件需要conio.h,这个和那个略有不同。
}