三个数字从小到大排列#includemain(){ int a,b,c;void exchange(int m,int
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/17 02:06:38
三个数字从小到大排列
#include
main()
{
int a,b,c;
void exchange(int m,int n);
scanf("%d%d%d",&a,&b,&c);
if (a>b)
{exchange(a,b);}
else ;
if (a>c)
exchange(a,c);
else ;
if (b>c)
exchange(b,c);
printf("%d %d %d",a,b,c);
}
void exchange(int m,int n)
{ int d;
d=m;
m=n;
n=d;
}
通过了编译,但是输入5 1 2,输出还是5 1 2,根本没有从小到大排列.
#include
main()
{
int a,b,c;
void exchange(int m,int n);
scanf("%d%d%d",&a,&b,&c);
if (a>b)
{exchange(a,b);}
else ;
if (a>c)
exchange(a,c);
else ;
if (b>c)
exchange(b,c);
printf("%d %d %d",a,b,c);
}
void exchange(int m,int n)
{ int d;
d=m;
m=n;
n=d;
}
通过了编译,但是输入5 1 2,输出还是5 1 2,根本没有从小到大排列.
冒泡排序不会吗?搞那么复杂
再问: 三个数字就冒泡?你是有多懒?? 这是考试题,就是让你用这个思路写~
再答: 找了一个多小时终于找到问题所在了,a,b,c是三个全局变量,函数里面的是局部变量,当你调用函数时,事实上是把全局变量的值赋给了局部变量,那两个局部变量m,n在经过函数处理后他们的值发生了调换,但是全局变量的值的并没有改变,也就是说用函数改变的是局部变量的值不是全局变量的值,而你输出的又是三个全局变量的值,所以才会出现你输入什么,输出的还是什么。 把完整的题目发来我看看 楼主太不负责了吧,今天都三号了,还不传题目上来,哥们每天都在等你题目啊!
再问: 三个数字就冒泡?你是有多懒?? 这是考试题,就是让你用这个思路写~
再答: 找了一个多小时终于找到问题所在了,a,b,c是三个全局变量,函数里面的是局部变量,当你调用函数时,事实上是把全局变量的值赋给了局部变量,那两个局部变量m,n在经过函数处理后他们的值发生了调换,但是全局变量的值的并没有改变,也就是说用函数改变的是局部变量的值不是全局变量的值,而你输出的又是三个全局变量的值,所以才会出现你输入什么,输出的还是什么。 把完整的题目发来我看看 楼主太不负责了吧,今天都三号了,还不传题目上来,哥们每天都在等你题目啊!