010-6095-7397
登录 | 注册
010-6095-7397

当前位置:中公软考> 模拟试题 >

(软考初级)程序员案例分析每日一练(4)

发布者:中公软考     来源:中公软考     2021-04-15 18:17:55     阅读()

试题一

阅读下列算法说明和算法,将应填入 (n) 处的字句写在答题纸的对应栏内。

[算法说明]

为便于描述屏幕上每个像素的位置,在屏幕上建立平面直角坐标系。屏幕左上角的像素设为原点,水平向右方向设为x轴,垂直向下方向设为y轴。

设某种显示器的像素有128X128,即在每条水平线和每条垂直线上都有128个像素。这样,屏幕上的每个像素可用坐标(x,y)来描述其位置,其中x和y都是整数,0≤x≤127,0≤y≤127。

现用一维数组MAP来存储整个一屏显示的位图信息。数组的每个元素有16位二进位,其中每位对应一个像素,“1”表示该像素“亮”,“0”表示该像素“暗”。数组MAP的各个元素与屏幕上的像素相对应后,其位置可排列如下:

MAP(0),MAP(1),……,MAP(7)

MAP(8),MAP(9),……,MAP(15)

……

MAP(1016),MAP(1017),……,MAP(1023)

下述算法可根据用户要求,将指定坐标(x,y)上的像素置为“亮”或“暗”。

在该算法中,变量X,Y,V,S,K都是16位无符号的二进制整数。数组BIT中的每个

元素BIT(K)(K=0,…,15)的值是左起第K位为1,其余位均为0的16位无符号二进制整

数,即BIT(K)的值为2l5-k。

[算法]

第1步根据用户指定像素的位置坐标(x,y),算出该像素的位置所属的数组元素MAP(V)。这

一步的具体实现过程如下:

1、将x送变量X,将y送变量Y;

2、将Y左移 (1) 位,仍存入变量Y;

3、将X右移 (2) 位,并存入变量S;

4、计算Y+S,存入变量V,得到像素的位置所属的数组元素MAP(V)。

第2步算出指定像素在MAP(V)中所对应的位置K(K=0,…,15)。这一步的具体实现过程如下:

将变量X与二进制数 (3) 进行逻辑乘运算,并存入变量K。

第3步根据用户要求将数组元素MAP(V)左起第K位设置为”1”或”0”。这一步的具体实现过程

如下: ,

1、为在指定像素置“亮”,应将MAP(V)与BIT(K)进行逻辑 (4) 运算,并存入MAP(V)。

2、为在指定像素置“暗”, 应先将BIT(K)各位取反,再将MAP(V)与BIT(K)进行逻辑 (5) 运算,并存入MAP(V)。

试题二

阅读下列函数说明和C代码,将应填入—匹l处的字句写在答题纸的对应栏内。

[函数2.1说明]

函数strcat(char *si,char *s2)是将字符串s2连接在字符串si之后,构成一个首指

针为s1的字符串。

[函数2.1]

void strcat(char *sl,char *s2)

{ while(*s1!='\0') ;

(1) :

for( ; (2) ;s1++,s2++);

}

[函数2.2说明] .

本函数输入n(<1000)个整数到指定数组,求该数组中最大元素的值和此元素的下标,最大元素值以函数值返回,此元素的下标通过指针形参带回调用处。

[函数2.2]

#include

#define MAXLINE 1000

int maxindex(int a[],int *index)

{ int i,n;

do {

printf("Please input n\n");

scanf("%d",&n);

}while( (3) );/*保证输入的n在限定范围内*/

for(i=0 ; i

scanf("%d",&a[i]);

*index=0;

for(i=1 ; i

if( (4) ) *index=i;

return (5) ;

}

参考答案

软考微信公众号

分享最前沿行业动态、业内时评,打造专业软考交流圈

软考QQ群

备考交流、干货共享,学习各种软考考试技巧

相关阅读

近期考试资讯

为你推荐


在线咨询

新浪微博

软考微信


返回顶部