C语言数字排序

C语言数字排序,第1张

输入scanf是用的变量地址

&x

&y

&z

输出时,是用的变量x,

y,

z

所以sort3要改变这3个变量地址(指针)指向的值

#include

<stdio.h>

void

sort3(double

*x,

double

*y,

double

*z)

int

main(int

argc,

char

*argv[]){

double

x,y,z

if(scanf("%lf

%lf

%lf",&x,&y,&z)==3){

sort3(&x,&y,&z)

printf("%lf\n%lf\n%lf\n",x,y,z)

}else{

fprintf(stderr,"Error:

Incorrect

format\n")

}

return

0

}

void

sort3(double

*x,

double

*y,

double

*z){

double

a

=

*x,

b

=

*y,

c

=

*z

printf("a:%f

b:%f

c:%f\n",a,

b,

c)//testing

if(*x

>

*y)

{

a

=

*y

b

=

*x

}

if(c

<

a)

{

*x

=

c

*y

=

a

*z

=

b

}

else

if(c

<

b)

{

*x

=

a

*y

=

c

*z

=

b

}

else

{

*x

=

a

*y

=

b

*z

=

c

}

printf("sorted

numbers:\n")//testing

printf("%f

%f

%f\n",*x,

*y,

*z)//testing

}

方法1:用3个变量存放3个数字,按从大到小的顺序排:

int a,b,c,tmp

printf("请输入3个数字:")

scanf("%d%d%d",&a,&b,&c)

if(a<b)//如果a比b小,交换a和b的值,使a存放大的数字

{

tmp=a

a=b

b=tmp

}

if(a<c)//如果a比c小,交换a和c的值,使a存放大的数字

{

tmp=a

a=c

c=tmp

}

if(b<c)//如果b比c小,交换b和c的值,使b存放大的数字

{

tmp=b

b=c

c=tmp

}

printf("按照从大到小的顺序为:%d,%d,%d\n",a,b,c)

方法2:用数组存放3个变量,用冒泡排序的方法进行排序

int i=0,j=0,tmp=0,a[3]

printf("请输入3个数字:")

for(i=0i<3i++)

scanf("%d",&a[i])

for(i=0i<2i++)

for(j=0j<2-ij++)

if(a[i]<a[i+1])//按照从大到小排列

{

tmp=a[i]

a[i]=a[i+1]

a[i+1]=tmp

}

printf("按照从大到小的顺序为:")

for(i=0i<3i++)

printf("%d  ",&a[i])

printf("\n")


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11091427.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存