c语言:输入一个五位数,对此整数中的五个数值进行从大到小排序,形成一个新的五位数,输出这个整数

/*
编写一个程序,让它有以下功能:从键盘上输入一个五位数,对此整数中的五个数值
进行从大到小排序,形成一个新的五位数,输出这个整数。(15分)
*/
#include<stdio.h>
#include<conio.h>
void main()
{
long x;
/*用数组a存储五位数的五位*/
/*x1,x2,x3,分别表示五位数取余10000,1000,100后的数*/
long a[5],x1,x2,x3;
int i,j,temp=0;
printf("input a number:");
scanf("%d",&x);
a[0]=x/10000;
x1=x%10000;
a[1]=x1/1000;
x2=x1%1000;
a[2]=x2/100;
x3=x2%100;
a[3]=x3/10;
a[4]=x%10;

for(i=0;i<5;i++)
for(j=0;j<5-i;j++)
{
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
printf("\nnew number is:%ld",a[0]*10000+a[1]*1000+a[2]*100+a[3]*10+a[4]);
getch();
}

我用冒泡排序 为什么结果不正确呢?能编译通过。

/*
编写一个程序,让它有以下功能:从键盘上输入一个五位数,对此整数中的五个数值
进行从大到小排序,形成一个新的五位数,输出这个整数。(15分)
*/
#include<stdio.h>
#include<conio.h>
void main()
{
long x;
/*用数组a存储五位数的五位*/
/*x1,x2,x3,分别表示五位数取余10000,1000,100后的数*/
long a[5],x1,x2,x3;
int i,j,temp=0;
printf("input a number:");
scanf("%ld",&x); //对应起来。
a[0]=x/10000;
x1=x%10000;
a[1]=x1/1000;
x2=x1%1000;
a[2]=x2/100;
x3=x2%100;
a[3]=x3/10;
a[4]=x%10;

for(i=0;i<5-1;i++) //n个数 排n-1趟
for(j=0;j<5-i-1;j++) //这里不是 5-i 若i=0,则j+1 越界了。
{
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
printf("\nnew number is:%ld",a[0]*10000+a[1]*1000+a[2]*100+a[3]*10+a[4]);
getch();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-24
for(i=0;i<5;i++)
for(j=0;j<5-i;j++)

这里错了.改成

for(i=0;i<5;i++)
for(j=i;j<5;j++)
第2个回答  2011-10-24
for(j=0;j<5-i;j++)
改成 for(j=0;j<5-i-1;j++)

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网