C语言算法 求a、b、c三个数的中间数值

#include<stdio.h>
int main()
{
int a,b,c,d;
scanf("%d %d %d",&a,&b,&c);
if(a<b)
{
d=a;
a=b;
b=d;

}
if(b<c)
{
d=b;
b=c;
c=d;
}
if(a<b)
{
d=a;
a=b;
b=d;
}
printf("%d",b);
return 0;
}
如果a=9;b=8;c=7程序怎么运算的

第1个回答  推荐于2017-11-25
很简单呀!在草稿纸上写上三个数比如:7、9、8.
第一个IF表示:前两个数字比较,小的排前面;此处7、9不满足IF,不执行IF语句;
第二个IF表示:后两个数字比较,小的排前面;此处9、8满足IF,执行IF语句;交换位置变成7、8、9。d在程序里只是起到一个暂时存储数据的作用。
第三个IF表示:(如果执行IF,生成的新序列)头尾两个数字比较,小的排前面;此处7、9不满足条件,不执行IF 语句。
最后输出这个生成序列的中间数,也就是由7、9、8生成的7、8、9中的中间数8本回答被网友采纳
第2个回答  2013-10-03
if(a<b) //a=9;b=8;c=7
{
d=a; //d=a=9;
a=b; //a=b=8;
b=d; //b=d=9
}
//a=8;b=9;c=7
if(b<c)
{
d=b;
b=c;
c=d;
}
//a=8;b=7;c=9
if(a<b)
{
d=a;
a=b;
b=d;
}
//a=7;b=8;c=9
第3个回答  2013-10-03

这可以看作冒泡排序,

排序后3个数按  从大到小  排列,  所以b是中间数

#include<stdio.h>
int main()
{
  int a,b,c,d;
  scanf("%d %d %d",&a,&b,&c);
  if(a<b)//如果a<b交换a和b的位置  //这里没有交换所以是 9 8 7
  {
      d=a;a=b;b=d;
  }
 if(b<c)//9 8 7
 {
  d=b;b=c;c=d;     
 }
 if(a<b)//9 8 7
 {
  d=a;a=b;b=d;
 }
 printf("%d",b);
 return 0;
}

3个if都为假,最终结果是9,8,7按从大到小排列,所以输出8

本回答被提问者采纳
第4个回答  2013-10-03
单步运行调试一下就知道了