早教吧 育儿知识 作业答案 考试题库 百科 知识分享

1、下列程序为什么无法将用户输入的三个整数按从小到大排序输出?应该如何修改?要求:描述出错原因(5分#includevoidswap(intx,inty)﹛intt;t=x;x=y;y=t;﹜main()﹛inta,b,c;scanf(“%d,%d,%d”,&

题目详情
1、下列程序为什么无法将用户输入的三个整数按从小到大排序输出?应该如何修改?要求:描述出错原因(5分
# include
void swap (int x,int y)

int t;
t = x;
x = y;
y = t;

main ()

int a,b,c;
scanf (“%d,%d,%d”,&a,&b,&c);
if (a>b) swap (a,b);
if (a>c) swap (a,c);
if (b>c) swap (b,c);
printf (“%d,%d,%d”,a,b,c);
▼优质解答
答案和解析
用指针做:
#include "stdio.h"
void swap (int *x, int *y)
{
int t;
t = *x;
*x = *y;
*y = t;
}
main ()
{
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
if (a>b)
swap (&a,&b);
if (a>c)
swap (&a,&c);
if (b>c)
swap (&b,&c);
printf ("%d,%d,%d",a,b,c);
}
不用指针做自定义函数中的变量会被释放,比较的只是形参大小而实参不变,所以输出地还是原先输入的.
用指针则避免了这个问题,指针指向实参,可以更改实参的内容.