早教吧作业答案频道 -->其他-->
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
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);
}
不用指针做自定义函数中的变量会被释放,比较的只是形参大小而实参不变,所以输出地还是原先输入的.
用指针则避免了这个问题,指针指向实参,可以更改实参的内容.
#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);
}
不用指针做自定义函数中的变量会被释放,比较的只是形参大小而实参不变,所以输出地还是原先输入的.
用指针则避免了这个问题,指针指向实参,可以更改实参的内容.
看了1、下列程序为什么无法将用户输...的网友还看了以下:
关于数学集合的几个问题1.A=﹛x|x²-mx+3=0﹜,B=﹛x|2x-6=0﹜,⑴若A=空集,求 2020-03-31 …
用符号“属于”“不属于”“真包含于”“真包含”或“等于”填空(1)﹛1,3,5﹜()﹛1,2,3, 2020-05-13 …
指出下列各组集合之间的关系⑴A=﹛X▏X-1=0﹜,B=﹛1,2﹜⑵M=﹛X>1﹜,N=﹛X▏X大 2020-05-19 …
﹛an﹜,q≠1的等比数列,﹛an·an+1﹜,﹛a﹙n+1﹚-an﹜,﹛an∧3﹜﹛n·an﹜哪 2020-05-20 …
下列个选项中,两个集合相等的是A.M=﹛﹙1,2﹚﹜,N=﹛﹙2,1﹚﹜B.M=﹛1,2﹜,N=﹛ 2020-07-09 …
1.关于缺省参数,不正确的是A.intf(intx,inty=0,intz=0)B.intf(in 2020-07-11 …
子集和真子集的区别集合﹛1,2,3﹜真子集有﹛1﹜﹛2﹜﹛3﹜﹛1,2﹜﹛1,3﹜﹛2,3﹜和空集 2020-07-30 …
设集合A=﹛a,b,c,d,e﹜上有一个分划,S=﹛﹛a,b﹜,﹛c﹜,﹛d,e﹜﹜,试求由S确定 2020-08-02 …
1、下列程序为什么无法将用户输入的三个整数按从小到大排序输出?应该如何修改?要求:描述出错原因(5分 2020-11-06 …
向量的集合部分问题设M=﹛a|a=(2,0)+m(0,1),m∈R﹜和N=﹛b|b=(1,1)+n( 2020-11-30 …