|
环境温度temp |
传感器的输出值Ratio |
|
-40℃ |
0.20 |
|
-20℃ |
0.60 |
|
-10℃ |
0.80 |
|
0℃ |
1.00 |
|
10℃ |
1.17 |
|
30℃ |
1.50 |
|
50℃ |
1.80 |
|
环境温度temp |
校正系数K |
|
-40℃ |
5.00 |
|
-39℃ |
4.55 |
|
-38℃ |
4.17 |
|
-37℃ |
3.85 |
|
…… |
…… |
|
-20℃ |
1.67 |
|
-19℃ |
1.61 |
|
…… |
^ |
|
-10℃ |
1.25 |
|
-9℃ |
1.22 |
|
…… |
…… |
|
-19℃ |
0.56 |
图4-17 二分查找算法示意图1
3) 以查找温度值20℃C为例,由于20℃>0℃,因此设置下一个查找区间为([m+1,high)),即[4,6],如图4—18所示。
图4-18 二分查找算法示意图2
4) 由于20℃<30℃,因此取high等于m-1,即下一个查找区间为([low,m-1]),即[4,5]。再进一步分析,由于20℃>10℃,因此取low等于m+1,即再下一个查找区间为[5,5]。而查找区间[5,5]上的数据30≠20,至此可确定此次查找失败,即如图4-19所示。
图4-19 二分查找算法示意图3
5) 由以上分析可知,(1)空缺处应填入“(low+high)/2”。
6) 程序中“if(Temp==(p+m)->Temp)”语句用于判断是否找到相应的温度值,若找到,则执行“return (2)”语句以返回相应温度的校正系数K。由试题关键信息“若找到相应的温度值,则按相应的Ratio值求倒数得到K值”可推理出,(2)空缺处应填入“1.0/(p+m)->Ratio”。
7) 当“if(Temp==(p+m)->Temp)”语句的判断条件不满足时,将执行“if(Temp<(p+m)->Temp)”判断语句。若待查元素小,将执行“high=m-1;”语句,即在前半区间([low,m-11)进行二分查找。若待查元素大,则在后半区间([m+1,high],继续进行二分查找,因此else语句中则需将“low”指针向上移动,即执行“low=m+1”语句。
8) 根据题干中给出的计算式子“Step=
”,以及题目中要求线性插值再求倒数得到K值可推理出(4)空缺处应填入“(p+1)->Ratio-p->Ratio”。
9) 同理,根据题干中给出的计算式子“