题目
下面程序用于将输入的三个数从小到大排序输出,请将程序补充完整。#include int main(){int a,b,c,x,y;scanf("%d%d%d",&a,&b,&c);if(_____) (x=a;y=b;)else (x=b;y=a;)if(_____) x=c;else if(y>c) y=c;printf("%d,%d,%d",y,a+b+c-x-y,x);return 0;}第1空:第2空:
下面程序用于将输入的三个数从小到大排序输出,请将程序补充完整。
#include
int main()
{
int a,b,c,x,y;
scanf("%d%d%d",&a,&b,&c);
if(_____) {x=a;y=b;}
else {x=b;y=a;}
if(_____) x=c;
else if(y>c) y=c;
printf("%d,%d,%d",y,a+b+c-x-y,x);
return 0;
}
第1空:
第2空:
题目解答
答案
第一空需判断 `a` 和 `b` 的大小关系,应填 `a < b`。若 `a < b`,则 `y = a`,`x = b`;否则 `y = b`,`x = a`。
第二空需判断 `c` 是否大于当前最大值 `x`,应填 `c > x`。若 `c > x`,则 `x = c`;若 `c < y`,则 `y = c`。
最终输出顺序为:最小值 `y`、中间值 `a + b + c - x - y`、最大值 `x`。
答案:
第1空:`a < b`
第2空:`c > x`
解析
本题考查的是对程序逻辑的理解以及条件判断语句的运用,解题的关键在于明确如何通过比较和交换操作来实现三个数的排序。
第一空分析
程序的目的是将输入的三个数 a、b、c 从小到大排序。首先要对 a 和 b 进行比较,确定它们中的最大值和最小值。
- 若
a < b,为了后续方便比较,我们希望将较小的值赋给y,较大的值赋给x,所以当a < b时,执行x = a; y = b;。 - 若
a >= b,则执行x = b; y = a;,这样x始终存储a和b中的最大值,y始终存储a和b中的最小值。所以第一空应填a < b。
第二空分析
在确定了 a 和 b 中的最大值 x 和最小值 y 后,需要将 c 与 x 和 y 进行比较,以确定三个数中的最大值和最小值。
- 先判断
c是否大于当前的最大值x,若c > x,则说明c是三个数中的最大值,将c赋值给x,即执行x = c;。 - 若
c <= x,再判断c是否小于当前的最小值y,若y > c,则说明c是三个数中的最小值,将c赋值给y,即执行y = c;。所以第二空应填c > x。
输出部分分析
经过前面的比较和赋值操作,y 存储的是三个数中的最小值,x 存储的是三个数中的最大值,那么中间值就可以通过 a + b + c - x - y 计算得到。最后按照从小到大的顺序输出最小值 y、中间值 a + b + c - x - y、最大值 x。