文档介绍:05下半年软考程序员下午试题及答案
试题一(15分,每空3分)
阅读下列说明和流程图,将应填入___(n)___处的字句写在答题纸的对应栏内。
[流程图说明]
流程图1-1描述了一个算法,该算法将给定的原字符串中的所有前导空白和尾部空白都删除,但保留非空字符的空白。例如,原字符串" File Name ",处理变成"File Name" 。流程图1-2、流程图1-3 、流程图1-4分别详细描述了流程图1-1中的框A、B、C。
假设原字符串中的各个字符依次存放在字符数组ch 的各元素ch(1) 、ch(2) 、?、ch(n) 中,字符常量KB表示空白字符。
流程图1-1的处理过程是:先从头开始找出该字符串中的第一个非空白字符ch(i),再从串尾开始向前找出位于最末位的非空白字符ch(j) ,然后将ch(i) 、?、ch(j) 依次送入ch(1) 、ch(2)、?中。如果字符串中没有字符或全是空白字符,则输出相应的说明。在流程图中,strlen 是取字符串长度函数。
[流程图1-1]
 
[流程图1-2]
 
[流程图1-3] 
 
[流程图1-4] 
 
[问题]
在流程图1-1中,判断框P中的条件可表示为:i > ___(5)___ 
试题二(15,每空3分)
阅读以下函数说明和C语言函数,将应填入___(n)___处的字句写在答题纸的对应栏内。
[说明]
函数int find_Max_Min(int a[ ],int n) 的功能是:找出n个元素的数组a中的最大元素和最小元素并输出,返回查找过程中元素的比较次数。查找方法如下:比较a[0] 和a[n-1], 若a[0] 大,则交换a[0] 和a[n-1] 的值;再比较a[1] 和a[n-2] ,若a[1] 大,则交换a[1] 和a[n-2] 的值;依此类推,直到所有的元素都比较完。然后在数组的前半区从前往后找出小元素,在后半区从后往前找出大元素。
[函数]
int find_Max_Min(int a[ ],int n) {
/* 找出n个元素的数组a中的最大元素、最小元素并输出,返回查找过程中元素的比较次数*/
int i,Count = 0;
int temp,Maxnum,M
innum;
for(i = 0; i < n/2; i++){
Count = Count + 1; /*元素比较次数计数*/
if(a[i]>a[_____(1)_____ ]
{ /* 数组元素交换代码略*/ }
}
Maxnum=a[n-1];
Minnum=a[0];
for(i = 1; i < n/2+ n%2; i++){
Count = _____(2)_____ ; /* 元素比较次数计数*/
Minnum = _____(3)_____ ? a[i]:Minnum; /*找出最小元素*/
Maxnum = _____(4)_____ ? _______(5)_____:Maxnum; /* 找出最大元素*/
} printf("Max=%d\n,Maxnum"); printf("Min=%d\n",Minnum); return Count;
}
 
[NextPage]
 
试题三(15分,每空3分)
阅读以下说明和C语言函数,将应填入___(n)___处的字句写在答题纸的对应栏内。
[说明]
某种传感器的输出值Ratio 依赖于环境温度temp(-40℃≦temp≦50℃)。对一组环境温度值(ITEMS 个),人们已经测量得到了相应的Ratio 值(见表1)。该表粗略地描述了曲线Ration(temp) 。
 
校正系数K是Ratio 的倒数,因此也依赖于环境温度temp 。在数据处理中,人们需要用更多的列表值细致地描述曲线K(temp ),如表2所示。在表2中,各温度值所对应的K值是对表1进行线性插值再求倒数得到的,具体的计算方法如下:
1. 根据temp 值,在表1中用二分法查找;
2. 若找到相应的温度值,则按相应的Ratio 值求倒数得到K值;
3. 若没找到相应的温度值,则可确定temp 所在的温度区间[Tp1,Tp2] ,同时获得了相应的Ratio1 和Ratio2 ,再按如下公式计算K值:
Step = (Ratio1 - Ratio2)/(Tp1 - Tp2)
K = /(Ratio1 + Step * (temp - Tp1))
在程序中,当temp 高于50℃或低于-40℃时,设定K=0。
[程序]
#include <> ty