题目内容 (请给出正确答案)
[主观题]

阅读下列算法说明和算法,将应填入(n)处的字句写在对应栏内。【算法说明】 为便于描述屏幕上每个像素

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

【算法说明】

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

设某种显示器的像素为128×128,即在每条水平线和每条垂直线上都有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)的值为215-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)。

查看答案
如搜索结果不匹配,请 联系老师 获取答案
您可能会需要:
您的账号:,可能会需要:
您的账号:
发送账号密码至手机
发送
更多“阅读下列算法说明和算法,将应填入(n)处的字句写在对应栏内。…”相关的问题

第1题

试题六(共15分)阅读以下说明和Java程序,填充程序中的空缺,将解答填入答题纸的对应栏内。【说明】下

试题六(共15分)

阅读以下说明和Java程序,填充程序中的空缺,将解答填入答题纸的对应栏内。

【说明】

下面的程序用来计算并寻找平面坐标系中给定点中最近的点对(若存在多对,则输出其中的一对即可)。程序运行时,先输入点的个数和一组互异的点的坐标,通过计算每对点之间的距离,从而确定出距离最近的点对。例如,在图6—1所示的8个点中,点(1,1)与(2,0.5)是间距最近的点对。

【Java代码】

import java.util.Scanner;

class GPoint

{

private double x,y;

public void setX(aouble x) {this.x = x;}

public void setY(double y) {this.y = y;)

public double getX() {return this.x;)

public double getY() {return this.y;

}

class FindNearestPoints{

public static void main(String[] args){

Scanner input= new Scanner(System.in);

System.out.print("输入点的个数:");

int numberOfPoints= input.nextlnt();

(1) points= new GPoint[numberOfPoints]; //创建保存点坐标的数组

System.out.print("请输入"+numberOfPoints+"个点的坐标");

for (int i=0;i<points.length; i++){

points[i]= (2) ;

points[i].setX(input.nextDouble());

points[i].setY(input.nextDouble());

}

FindNearestPoints fnp= new FindNearestPoints();

int p1=0,p2=1; //p1和p2用于表示距离最近的点对在数组中的下标

double shortestDistance=fnp.getDistance(points[p1], points[p2]);

//计算每一对点之间的距离

for (int i=0;i<points.length; i++)

{

for (intj = 1+1;j< (3) ;j++)

{

double tmpDistance=fnp.(4);

//计算两点间的距离

if( (5) )

{

p1=i;

p2 =j;

shortestDistance = tmpDistance;

}

}

}

System.out.println("距离最近的点对是("+

points[p1].getX()+","+points[p1].getY()+")和(”+

points[p2].getX()+”,”+points[p2].getY()+”)”);

}

public double getDistance(GPoint pt1, GPoint pt2)

{

retum Math.sqrt((pt2.getX() – pt1.getX())*(pt2.getX() – ptl1getX())

+ (pt2.getY() – pt1.getY())*(pt2.getY() – pt1.getY());

}

}

点击查看答案

第2题

阅读下列说明、图和Java代码,回答问题1至问题3。 【说明】 已知四个类之间的关系如图2-4所示,分别对

阅读下列说明、图和Java代码,回答问题1至问题3。

【说明】

已知四个类之间的关系如图2-4所示,分别对每个类的方法进行编号,例如Shape的perimeter()为1号,表示为1:perimeter(),Rectangle类的perimeter()为2号,表示为 2:perimeter(),依此类推,其中,每个类的perimeter方法签名相同。

【Java代码】

Triangle tr=new Triangle();

Square sq=new Square();

Shape sh=tr;

关于上述Java代码中sh和tr的以下叙述中,哪两个是正确的(写出编号)。

①sh和tr分别引用同一个对象;

②sh和tr分别引用同一类型的不同的对象:

③sh和tr分别引用不同类型的不同对象:

④sh和tr分别引用同一个对象的不同拷贝;

⑤sh和tr所引用的内存空间是相同的。

点击查看答案

第3题

阅读下列程序说明和c代码,将应填入(n)处的字句写在对应栏内。[说明] 下面的程序利用递归算法计算x

阅读下列程序说明和c代码,将应填入(n)处的字句写在对应栏内。

[说明]

下面的程序利用递归算法计算x和y的最大公约数。

[函数2.1]

main ( )

{ int x,y,k,t;

scanf(" % d% d" , &x, &y);

if(x>y) { t=x;x=y; y=t;}

(1);

while(k! =0){

y=x;

(2);

k=y%x;

}

prinff( "% d" ,x); }

[函数2.2说明]

函数fun(char *str,char *substr的功能是计算子串sugbstr在串str中出现的次数。

[函数2.2]

fun(ehar * str, char * substr)

{ int x,y,z;

(3);

for(x=0;str[ x] ! = '\O';x + + )

for(y=x,z=0;sabstr[z] = =str[y];(4),y+ +)

if((5)= ='\0') {

num + +;

break;

}

return(num);

}

点击查看答案

第4题

阅读下列说明和流程图,将应填入(n)的语句写在对应栏内。【流程图】 下面的流程图描述了对16位二进制

阅读下列说明和流程图,将应填入(n)的语句写在对应栏内。

【流程图】

下面的流程图描述了对16位二进制整数求补的算法。计算过程是:从二进制数的低位 (最右位)开始,依次向高位逐位查看,直到首次遇到“1”时,停止查看。然后,对该“1”位左面的更高位(如果有的话),逐位求反,所得的结果就是对原二进制数求补的结果。

例如:对二进制整数10111001 10101000求补的结果是01000110 01011000。

设16位二进制整数中的各位,从低位到高位,依次存放在整型数组BIT的BIT[1]~BIT[16]中。例如,二进制整数10111001 10101000存放在数组BIT后,就有BIT1[1]=0, BIT[2]=0,……,BIT[15]=0,BIT[16]=1。

流程图(如图1所示)中(1)处按“循环变量名:循环初值,增量,循环终值”格式描述。若流程图中存在空操作,则用NOP表示。

点击查看答案

第5题

阅读以下说明和流程图,将应填入(n)处的字句写在对应栏内。[说明] 下面的流程图实现了正整数序列{K

阅读以下说明和流程图,将应填入(n)处的字句写在对应栏内。

[说明]

下面的流程图实现了正整数序列{K(1),K(2),…,K(n)}的重排,得到的新序列中,比K(1)小的数都在K(1)的左侧,比K(1)大的数都在K(1)的右侧。以n=6为例,序列{12,2,9,13,21,8}的重排过程为:

{12,2,9,13,21,8}

→{2,12,9,13,21,8}

→{9,2,12,13,21,8}

→{8,9,2,12,13,21}

[流程图]

点击查看答案

第6题

阅读以下函数说明和C语言函数,将应填入(n)的字句写在答题纸的对应栏内。 [说明1] 函数int fun1(in

阅读以下函数说明和C语言函数,将应填入(n)的字句写在答题纸的对应栏内。

[说明1]

函数int fun1(int m, int n)的功能是:计算并返回正整数m和n的最大公约数。

[函数1]

int fun1(int m, int n)

{

while ((1)) {

if (m>n) m=m-n;

else n=n-m;

}

(2);

}

[说明2]

函数long fun2(char*str)的功能是:自左至右顺序取出非空字符串str中的数字字符形成一个十进制整数(最多8位)。

例如,若字符串str的值为“f3g8d5.ji2e3p12fkp”,则函数返回值为3852312。

[函数2]

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;

}

点击查看答案

第7题

阅读以下说明、Java代码和HTML文档,将应填入(n)处的字句写在答题纸的对应栏内。【说明】 当用户启动h

阅读以下说明、Java代码和HTML文档,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

当用户启动html浏览器并首次打开下面的HTML文档时,Java Applet小程序在显示面板上显示字符串“Welcome!”;当html页面被其他窗口

遮挡后再次显示时,小程序在显示面板上显示“Welcome back!”。

【Java代码】

import javA.awt.*;

import javA.applet;

public class HelloApplet extends (1) {

public void paim((2)){

g.drawString(message,10,20);

message="welcome back!”;

}

public void (3) (){

message="Welcome!”;

}

private (4) message;

}

【HTML文档】

<html>

<head>

<title>HTML Test HelloApplet Page</title>

</head>

<body>

Test HelloApplet小程序<br>

<applet

codebase="."

code="(5) "

name="TestApplet"

width="400"

height="300"

</applet>

</body>

</html>

点击查看答案

第8题

若按下式计算奇校验位,则上述流程图中的(1)处应填(5)。

点击查看答案

第9题

阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。【说明】 设串s和串t采用顺序存储结构,

阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。

【说明】

设串s和串t采用顺序存储结构,编写函数实现串s和串t的比较操作,要求比较结果包括大于、小于和等于3种情况。

【函数】

int StrCompare(SStrType s, SStrType t)

{

int n=s.length, m=(1), i,j,tag;

i=0; j=0;

while((2))

{

if((3))

{

i++;

j++;

}

else if(s.str[i]>t.str[j])

{

tag=1;

return tag;

}

else

{

tag=-1;

return tag;

}

}

if(n==m)

tag=0;

else if((4))

tag=1;

else if(n<m)

tag=-1;

(5);

}

点击查看答案

第10题

阅读下列算法说明和算法,将应填入(n)处的语句写在对应栏内。 【说明】为了减少直接插入排序关键字的

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

【说明】

为了减少直接插入排序关键字的比较次数,本算法使用了二分(折半)插入法对一个无序数组R[1..n]进行排序。排序思想是对一个待插入元素,先通过二分法(折半)找到插入位置,后移元素后将该元素插入到恰当位置。(假设R[]中的元素互不相同)

[算法]

1.变量声明

X: Data Type

i,j,low, high,mid,r:0..n

2.每循环一次插入一个R[i]

循环:i以1为步长,从2到n,反复执行。

(1)准备

X←R[i];(1); high←i-1;

(2)找插入位置

循环:当(2)时,反复执行。

(3)

若X.key<R[mid].key

则high←mid-1;

否则 (4)

(3)后移

循环:j以-1为步长,从(5),反复执行。

R[j+1]←R[j]

(4)插入

R[low]←X

3.算法结束

点击查看答案
热门考试 全部 >
相关试卷 全部 >
账号:
你好,尊敬的上学吧用户
发送账号至手机
密码将被重置
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
谢谢您的反馈

您认为本题答案有误,我们将认真、仔细核查,
如果您知道正确答案,欢迎您来纠错

警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
上学吧
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反上学吧购买须知被冻结。您可在“上学吧”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
上学吧
点击打开微信