&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
}
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")
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)