软考初级程序员备考资料(初级软考程序员考试大纲)
软考初级程序员备考资料(初级软考程序员考试大纲)(2)A. 尽可能地找出软件中的缺陷2.软件测试的目的是(2) 。B. 描述一个组织中的管理机制C. 统计一个商场中的顾客数D. 监视进入某住宅楼的访客
三、题型举例
(一)选择题
1 . 在以下情况中,(1)适合于采用队列数据结构
(1)A. 监视一个火车站售票窗口等待服务的客户
B. 描述一个组织中的管理机制
C. 统计一个商场中的顾客数
D. 监视进入某住宅楼的访客
2.软件测试的目的是(2) 。
(2)A. 尽可能地找出软件中的缺陷
B. 缩短软件的开发时间
C. 减少软件的维护成本
D. 证明程序没有缺陷
3.In C language,a (3) is a series of charaters enclosed in double quotes.
(3)A. matrix B. string
C. program D. stream
(二)问答题
阅读以下说明和算法,完善算法并回答问题,将解答填入答题纸的对应栏内。
【说明】
假设以二维数组 G[1..m 1..n]表示一幅图像各像素的颜色,则 G[i j]表示区域中点
(i j)处的颜色,颜色值为 0 到k 的整数。
下面的算法将指定点( )所在的同色邻接区域的颜色置换为给定的颜色值。约定所有
与点( )同色的上、下、左、右可连通的点组成同色邻接区域。
例如,一幅 8×9 像素的图像如图 1 所示。设用户指定点(3,5),其颜色值为 0,此时
其上方(2,5)、下方(4,5)、右方(3,6)邻接点的颜色值都为 0,因此这些点属于点(3,
5)所在的同色邻接区域,再从上、下、左、右 4 个方向进行扩展,可得出该同色邻接区域
的其他点(见图 1 中和阴影部分)。将上述同色区域的颜色替换为颜色值 7 所得的新图像如
图 2 所示。
1 2 3 4 5 6 7 8 9
1 5 4 5 4 3 1 5 1 2
2 2 5 5 3 0 1 3 2 1
3 0 3 2 3 0 0 2 3 1
4 2 0 1 0 0 0 0 2 0
5 1 0 0 0 0 3 2 0 1
6 0 1 0 2 0 0 2 2 1
7 6 5 5 0 1 0 2 1 0
8 6 3 3 4 0 0 7 4 5
图 1
1 2 3 4 5 6 7 8 9
1 5 4 5 4 3 1 5 1 2
2 2 5 5 3 7 1 3 2 1
3 0 3 2 3 7 7 2 3 1
4 2 7 1 7 7 7 7 2 0
5 1 7 7 7 7 3 2 0 1
6 0 1 7 2 7 7 2 2 1
7 6 5 5 0 1 7 2 1 0
8 6 3 3 4 7 7 7 4 5
图 2
【算法】
输入:矩阵 G,点的坐标( ),新颜色值 newcolor。
输出:点( )所在同色邻接区域的颜色为 newcolor 之后的矩阵 G。
算法步骤(规范算法,规定该算法只在第七步后结束):
第一步:若点( )的颜色值与新颜色值 newcolor 相同,则 (1) ;
第二步:点( )的颜色值→oldcolor;创建栈 S,并将点坐标( )入栈;
第三步:若 (2) ,则转第七步;
第四步:栈顶元素出栈→(x y),并 (3) ;
第五步:1)若点(x y-1)在图像中且 G[x y-1]等于 oldcolor,则(x y-1)入栈 S;
2)若点(x y 1)在图像中且 G[x y 1]等于 oldcolor,则(x y 1)入栈 S;
3) 若点(x-1 y)在图像中且 G[x-1 y]等于 oldcolor,则(x-1 y)入栈 S;
4) 若点(x 1 y)在图像中且 G[x 1 y]等于 oldcolor,则(x 1 y)入栈 S;
第六步:转 (4) ;
第七步:算法结束。
【问题 1】
是否可以将算法中的栈换成队列?回答: (5) 。
试题二(必做的 C 语言样题)
阅读以下函数说明和 C 语言函数,将应填入 (n) 处的字句写在答题纸的对应栏内。
【函数说明】
函数 int fun 1(int m int n)的功能是:计算并返回正整数 m 和n 的最大公约数。
【函数】
int fun 1(int m int n)
{
While( (1) ){
If (m>n) m=m-n;
Else n=n-m;
}
(2) ;
}
【函数说明】
函数 long fun2(char *str)的功能是:自左至右顺序取出非空字符串 str 中的数字字
符形成一个十进制整数(最多 8 位)。
例如,若字符串 str 的值为“f3g8d5.ji2e3p12fkp”,则函数返回值为 3852312。
【函数】
long fun2(char *str)
{ int i=0;
long k=0;
char *p=str;
while (*p != "\0" &$ (3) )
{ if (*p>="0" && *p<="9" ) {
k= (4) *p - "0";
i;
}
(5) ;
}
Return k;
}
试题三(选做的 C 语言样题)
阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
某种传感器的输出值 Ratio 依赖于环境温度 temp(-40℃≤temp≤50℃)。对一组环境温
度值(ITEMS 个),人们已经测量得到了相应的 Ratio 值(见表 3-1)。该表粗略地描述了曲
线 Ratio(temp)。
表 3-1 曲线 Ratio(temp)的列表值
环境温度
temp 传感器的输出值
Ratio 环境温度
temp 传感器的输出值
Ratio
-40℃ 0.20 10℃ 1.17
-20℃ 0.60 30℃ 1.50
-10℃ 0.80 50℃ 1.80
0℃ 1.00
校下系数 K 是 Ratio 的倒数,因此也依赖于环境温度 temp。在数据处理中,人们需要
用更多的列表值细致地描述曲线 K(temp),如表 3-2 所示。在表 3-2 中,各温度值所对应的
K 值是对表 3-1 进行线性插值再求倒数得到的,具体的计算方法如下:
表 3-2 曲线 K(temp)的列表值
环境温度
temp 较正系数
K 环 境 温 度
temp 较正系数
K
-40℃ 5.00 -19℃ 1.61
-39℃ 4.55 … …
-38℃ 4.17 -10℃ 1.25
-37℃ 3.85 -9℃ 1.22
… … … …
-20℃ 1.67 50℃ 0.56
1) 根据 temp 值,在表 3-1 中用二分法查找;
(2) 若找到相应的温度值,则按相应的 Ratio 值求倒数得到 K 值;
(3) 若没找到相应的温度值,则可确定 temp 所在的温度区间[Tp1,Tp2],同时获得了
相应的 Ratio1 和Ratio2,再按如下公式计算 K 值:
Step =( Ratio1 - Ratio2)/( Tp1 - Tp2)
K=1.0/( Ratio1 Step*(temp- Tp1))
在程序中,当 temp 高于 50℃或低于℃时,设定 K=0。
【程序】
#include <stdio.h>
typedef struct {
int Temp; /*环境温度*/
double Ratio; /*传感器的输出值*/
}CURVE;
#define ITEMS 7
double GetK(int CURVE * int);
Void main()
{
int Degree;
double k;
CURVE Curve{ITEMS} = { {-40 0.2} {-20 0.60} {-10 0.8}
{0 1.0} {10 1.17} {30 1.50} {50 1.8} };
printf("环境温度 校正系数\n");
for (Degree = -40; Degree<=50;
Degree ){ k =Getk(Degree Curve ITEMS);
printf (" = %4.2f \n" Degree k);
}
}
double Get(int Temp CURVE *P int n)
{/*用二分法在 n 个元素有的序表 p 中查找与 Temp 对应的传感器输出值*/
int low high m;double Stemp;
low =0;high =n-1;
if ( (Temp< p->Temp)||(Temp> (p high)->Temp) )
return 0.0; /*超出温度范围时返回 0.0*/
while (low <=high){
m= (1) ;
if (Temp == (p m)->Temp)
return (2) ;
if (Temp < (p m)->Temp) high = m-1;
else low = (3) ;
}
p =high;
Step =( (4) )/((p 1)->Temp –p->Temp);
return 1.0/(p->Ratio Step * ( (5) ));
}