一道数据结构题目 算法
题目:写一算法,自大到小一次输出顺序读入的三个整数X,Y和Z的值。Voiddescending(){scanf(x,y,z);if(x<y){temp=x;x=y;y=t...
题目:写一算法,自大到小一次输出顺序读入的三个整数X,Y和Z的值。
Void descending(){
scanf(x,y,z);
if(x<y)
{temp=x;x=y;y=temp;}
if(y<z){
temp=z;z=y;
if(x>=temp)y=temp;
else{y=x;x=temp;}
}
printf(x,y,z);
}
请高手分析下这道题目,过程写的详细点,如果题目是从小到大呢?那又怎么做。
回答的好的,我再追加 展开
Void descending(){
scanf(x,y,z);
if(x<y)
{temp=x;x=y;y=temp;}
if(y<z){
temp=z;z=y;
if(x>=temp)y=temp;
else{y=x;x=temp;}
}
printf(x,y,z);
}
请高手分析下这道题目,过程写的详细点,如果题目是从小到大呢?那又怎么做。
回答的好的,我再追加 展开
2个回答
展开全部
过程的目的就是使得x,y,z,成为递减的顺序
首先判断x,y,如果x,y不是递减,即x<y,那么交换x和y,这样就保证了x,y是递减的顺序,即x>=y
然后判断y和z的顺序,如果y和z已经保证递减顺序,也就是y>=z的话,那么什么也不用做,因为这是x,y,z肯定是递减关系了
如果y<z的话,那就要看x和z谁大谁小,如果x比较大,那么顺序就是x,z,y,所以要交换z和y。如果z比较大,那么顺序就是z,x,y,那么三个数都要变:y=x,x=z,z=y
当然所有的交换都要引入临时变量temp
另外,从小到大很简单,只要输出的时候反过来就可以了,本来是顺序输出x,y,z,现在是顺序输出z,y,x
首先判断x,y,如果x,y不是递减,即x<y,那么交换x和y,这样就保证了x,y是递减的顺序,即x>=y
然后判断y和z的顺序,如果y和z已经保证递减顺序,也就是y>=z的话,那么什么也不用做,因为这是x,y,z肯定是递减关系了
如果y<z的话,那就要看x和z谁大谁小,如果x比较大,那么顺序就是x,z,y,所以要交换z和y。如果z比较大,那么顺序就是z,x,y,那么三个数都要变:y=x,x=z,z=y
当然所有的交换都要引入临时变量temp
另外,从小到大很简单,只要输出的时候反过来就可以了,本来是顺序输出x,y,z,现在是顺序输出z,y,x
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
最简单的一种方法,三次比较交换:
#include
<stdio.h>
#define
SWAP(
a,
b
)
{
t
=
a;
a
=
b;
b
=
t;
}
int
main()
{
int
x,
y,
z,
t;
scanf(
"%d%d%d",
&x,
&y,
&z
);
if
(
x
<
y
)
SWAP(
x,
y
);
/*如果x比y小,那么交换x和y*/
if
(
x
<
z
)
SWAP(
x,
z
);
/*如果x比z小,那么交换x和z*/
if
(
y
<
z
)
SWAP(
y,
z
);
/*如果y比z小,那么交换y和z*/
printf(
"%d
%d
%d\n",
x,
y,
z
);
/*从大到小排列。。。*/
}
#include
<stdio.h>
#define
SWAP(
a,
b
)
{
t
=
a;
a
=
b;
b
=
t;
}
int
main()
{
int
x,
y,
z,
t;
scanf(
"%d%d%d",
&x,
&y,
&z
);
if
(
x
<
y
)
SWAP(
x,
y
);
/*如果x比y小,那么交换x和y*/
if
(
x
<
z
)
SWAP(
x,
z
);
/*如果x比z小,那么交换x和z*/
if
(
y
<
z
)
SWAP(
y,
z
);
/*如果y比z小,那么交换y和z*/
printf(
"%d
%d
%d\n",
x,
y,
z
);
/*从大到小排列。。。*/
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询