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程序怎么运算的
2026年09月28日 08:12
有4个网友回答
网友(1):

很简单呀!在草稿纸上写上三个数比如: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):

if(a {
d=a; //d=a=9;
a=b; //a=b=8;
b=d; //b=d=9
}
//a=8;b=9;c=7
if(b{
d=b;
b=c;
c=d;
}
//a=8;b=7;c=9
if(a {
d=a;
a=b;
b=d;
}
//a=7;b=8;c=9

网友(3):

这可以看作冒泡排序,

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

#include
int main()
{
  int a,b,c,d;
  scanf("%d %d %d",&a,&b,&c);
  if(a  {
      d=a;a=b;b=d;
  }
 if(b {
  d=b;b=c;c=d;     
 }
 if(a {
  d=a;a=b;b=d;
 }
 printf("%d",b);
 return 0;
}

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

网友(4):

单步运行调试一下就知道了