经过了考研几个月以来的奋战,目前数学一、和专业课的数据结构已经完成了一轮复习。接下来要好好用两个月左右的时间准备一下pat,这个是可以直接抵复试上机的成绩的。而且据说每年的九月份的pat最简单,因此建议大家复习pat的话最好准备一下九月份的,我应该会参加12月份的了。因为一轮复习比较仔细,速度较慢,时间有些来不及了。不过就像一位浙大学长说的那样,量变积累产生质变,速度会越来越快的!加油!
例题4-3 比较交换3个实数值,并按序输出
题目描述
从键盘输入3个实数a, b, c,通过比较交换,将最小值存储在变量a中,最大值存储在变量c中,中间值存储在变量b中,并按照从小到大的顺序输出这三个数a, b, c。
末尾输出换行。
输入
输入以空格分隔的三个实数
输出
按照从小到大的顺序输出这三个实数,中间以空格分隔,最小值在前,最大值在后。小数点后保留2位小数。
注意末尾的换行。
这道题目比较简单,都是对if、switch等选择结构的应用。在使用if结构的时候,应注意分好情况,边界情况一定要留意。然后,大家要把基本的结构搞清楚,这个题目中的if分支较多较长,需要读者做好分类,不然容易混。
#include<stdio.h>
#include<math.h>
int main (){
double a,b,c,min,max,mid;
scanf("%lf %lf %lf",&a,&b,&c);//double 类型输入的时候,要用%lf,切记切记!
if(a>b) //这里是if的双层嵌套
if(a>c)
{
max=a;
if(b>c)
{
mid=b;
min=c;
}
else
{
mid=c;
min=b;
}
}
else
{
max=c;
mid=a;
min=b;
}
else
{
if(b<c)
{
max=c;
mid=b;
min=a;
}
else
{
max=b;
if(a<c)
{
min=a;
mid=c;
}
else
{
min=c;
mid=a;
}
}
}
a=min;
b=mid;
c=max;//为了表达方便,本人特意用了这种表达方式,如果大家觉得这样麻烦,可以直接使用a、b、c进行赋值操作。
printf("%.2f\n%.2f\n%.2f\n",a,b,c);
}
这道题目的讲解就到这里,大家可以看看在程序代码中的注释部分,这些都是需要注意的地方。如果大家有任何疑问,可以在评论下方留言,和我一起讨论!