用C++读取、修改和保存位图
- 格式:doc
- 大小:40.00 KB
- 文档页数:6
浙江省2024年1月普通高校招生选考信息技术一、选择题1.下列关于数据与信息的说法,正确的是()A.数据以二进制方式编码后才能存储在计算机中B.大数据技术不能处理非结构化数据C.同一数据经解释后产生的信息都是相同的D.信息加工处理后不会产生更有价值的信息2.下列关于信息系统安全与信息社会责任的说法,正确的是()A.多人共享账户,不会影响信息系统的安全B.定期查杀病毒可以确保信息系统免受网络攻击C.网络上的不当行为可能会触犯法律D.任何密码算法中的加密密钥与解密密钥必须相同3.某校图书馆管理系统中,工作人员通过计算机终端上的扫描仪扫描图书条形码,录入图书信息后完成入库。
师生借阅时,通过校园一卡通识别身份,利用RFID读写器识别图书中的电子标签以获取图书信息,完成借阅后相关数据保存在服务器中。
该系统所在的局域网接入因特网,图书查询功能基于B/S架构开发,师生在馆内外都可使用计算机、手机等查询图书信息。
下列关于该系统组成的说法,正确的是()A.条形码扫描仪是输出设备B.服务器的存储器容量会影响系统性能C.该系统中的图书管理软件是系统软件D.该系统中的数据仅包含图书数据4.某校图书馆管理系统中,工作人员通过计算机终端上的扫描仪扫描图书条形码,录入图书信息后完成入库。
师生借阅时,通过校园一卡通识别身份,利用RFID读写器识别图书中的电子标签以获取图书信息,完成借阅后相关数据保存在服务器中。
该系统所在的局域网接入因特网,图书查询功能基于B/S架构开发,师生在馆内外都可使用计算机、手机等查询图书信息。
下列关于该系统功能与应用的说法,不正确的是()A.可通过浏览器查询图书馆中的图书信息B.可利用借阅数据分析学生的阅读兴趣C.师生所借图书的信息需要保存在校园一卡通中D.通过 RFID 读写器获取电子标签中的信息属于数据输入功能5.某校图书馆管理系统中,工作人员通过计算机终端上的扫描仪扫描图书条形码,录入图书信息后完成入库。
2024年1月浙江省普通高校招生选考科目考试信息技术本试题卷分两部分,第一部分信息技术,第二部分通用技术。
全卷共12页,第一部分1至6页,第二部分7至12页。
满分100分,考试时间90分钟。
考生注意:1.答题前,请务必将自己的姓名、准考证号用黑色字迹的签字笔或钢笔分别填写在试题卷和答题纸规定的位置上。
2.答题时,请按照答题纸上“注意事项”的要求,在答题纸相应的位置上规范作答,在本试题卷上的作答一律无效。
3.非选择题的答案必须使用黑色字迹的签字笔或钢笔写在答题纸上相应区域内,作图时可先使用2B铅笔,确定后必须使用黑色字迹的签字笔或钢笔描黑。
第一部分信息技术(共50分)一、选择题(本大题共12小题,每小题2分,共24分。
每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)1.下列关于数据与信息的说法,正确的是()A.数据以二进制方式编码后才能存储在计算机中B.大数据技术不能处理非结构化数据C.同一数据经解释后产生的信息都是相同的D.信息加工处理后不会产生更有价值的信息2.下列关于信息系统安全与信息社会责任的说法,正确的是()A.多人共享账户,不会影响信息系统的安全B.定期查杀病毒可以确保信息系统免受网络攻击C.网络上的不当行为可能会触犯法律D.任何密码算法中的加密密钥与解密密钥必须相同3.某校图书馆管理系统中,工作人员通过计算机终端上的扫描仪扫描图书条形码,录入图书信息后完成入库。
师生借阅时,通过校园一卡通识别身份,利用RFID读写器识别图书中的电子标签以获取图书信息,完成借阅后相关数据保存在服务器中。
该系统所在的局域网接入因特网,图书查询功能基于B/S架构开发,师生在馆内外都可使用计算机、手机等查询图书信息。
下列关于该系统组成的说法,正确的是()A.条形码扫描仪是输出设备 B.服务器的存储器容量会影响系统性能C.该系统中的图书管理软件是系统软件D.该系统中的数据仅包含图书数据4.某校图书馆管理系统中,工作人员通过计算机终端上的扫描仪扫描图书条形码,录入图书信息后完成入库。
第一章思考与练习1、举出3个书本中未提到的嵌入式系统的例子。
答:红绿灯控制,数字空调,机顶盒2、什么叫嵌入式系统嵌入式系统:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
3、什么叫嵌入式处理器?嵌入式处理器分为哪几类?嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。
嵌入式微处理器(Embedded Microprocessor Unit, EMPU)嵌入式微控制器(Microcontroller Unit, MCU)嵌入式DSP 处理器(Embedded Digital Signal Processor, EDSP)嵌入式片上系统(System On Chip)4、什么是嵌入式操作系统?为何要使用嵌入式操作系统?是一段在嵌入式系统启动后首先执行的背景程序,首先,嵌入式实时操作系统提高了系统的可靠性。
其次,提高了开发效率,缩短了开发周期。
再次,嵌入式实时操作系统充分发挥了32 位CPU 的多任务潜力。
第二章1、嵌入式系统项目开发的生命周期分哪几个阶段?各自的具体任务是什么?项目的生命周期一般分为识别需求、提出解决方案、执行项目和结束项目4 个阶段。
识别需求阶段的主要任务是确认需求,分析投资收益比,研究项目的可行性,分析厂商所应具备的条件。
提出解决方案阶段由各厂商向客户提交标书、介绍解决方案。
执行项目阶段细化目标,制定工作计划,协调人力和其他资源;定期监控进展,分析项目偏差,采取必要措施以实现目标。
结束项目阶段主要包括移交工作成果,帮助客户实现商务目标;系统交接给维护人员;结清各种款项。
2、为何要进行风险分析?嵌入式项目主要有哪些方面的风险?在一个项目中,有许多的因素会影响到项目进行,因此在项目进行的初期,在客户和开发团队都还未投入大量资源之前,风险的评估可以用来预估项目进行可能会遭遇的难题。
需求风险;时间风险;资金风险;项目管理风险3、何谓系统规范?制定系统规范的目的是什么?规格制定阶段的目的在于将客户的需求,由模糊的描述,转换成有意义的量化数据。
《PS理论习题集》基础知识部分(一)一、填空题1、Photoshop图像属于(位图)性质的图像。
2、新建文件的方法有( 3 )种,分别是( 单击菜单栏中的【文件】/【新建】命令)、(按键盘中的Ctrl+N 键)、( 按住键盘中的Ctrl键,在工作区中双击鼠标左键)。
3、打开文件的方法有( 3 )种,分别是(单击菜单栏中的【文件】/【打开】命令)、( 按键盘中的Ctrl+O键)、( 在工作区中双击鼠标左键)。
4、除了使用按钮进行软件的退出之外,还有其他3种方法同样可以将软件关闭,分别是( 利用菜单栏中的【文件】/【退出】命令)、( 按键盘中的Ctrl+Q键)、(按键盘中的Alt+F4键)。
5、当需要将绘图窗口进行保存时,可以利用菜单栏中的(【窗口】/【工作区】/【存储工作区】)命令进行保存。
6、当需要将绘图窗口进行复位时,可以利用菜单栏中的(【窗口】/【工作区】/【复位调板位置】)命令进行复位。
7、将鼠标光标放置在(标题)栏的蓝色区域上双击,即可将窗口在最大化和还原状态之间切换。
8、在【窗口】菜单命令中有一部分命令选项的左侧显示有“√”符号,说明此控制面板或属性栏目前在Photoshop工作区是( 显示)状态,其左侧没有显示“√”的部分命令,说明是( 隐藏)状态。
9、按键盘中的( D )键,可以将前景色和背景色分别设置为系统默认的白色和黑色。
10、按键盘中的( X )键,可以将当前工具箱中的前景色与背景色互换。
11、按键盘中的( Tab )键可以将工具箱、属性栏和控制面板同时显示或隐藏。
12、在CMYK【颜色】面板中【C】是( 青)颜色、【M】是( 洋红)颜色、【Y】是( 黄)颜色、【K】是( 黑)颜色。
13、在RGB【颜色】面板中,【R】是( 红)颜色、【G】是( 绿)颜色、【B】是( 蓝)颜色。
14、图像文件的大小以( 千字节(KB))和( 兆字节(MB))为单位,它们之间的大小换算单位为:(1024KB)=(1MB)。
第三章计算机软件软件、程序设计1.下列关于指令、指令系统、程序和软件等术语的叙述中,错误的是_____。
A.指令是一种使用二进制表示的命令语言,它由操作码和操作数组成。
B.一个CPU所能执行的全部指令组成该CPU的指令系统。
C.简单的说,程序是为解决某个问题而设计的一连串指令。
D.软件是完成某种功能的程序集合,因此软件就是指各种应用程序(软件包含程序)。
2.计算机软件(简称软件)指的是能指挥计算机完成特定任务的、以电子格式存储的程序、数据和相关的文档。
在下列有关软件的叙述中,错误的是____。
A.软件的版权所有者不一定是软件作者B.共享软件指的是一种无版权的软件C.用户购买一个软件后,仅获得该软件的使用权,并没有获得其版权D.软件许可证是一种法律合同,它确定了用户对软件的使用方式3.数据结构是研究程序设计中计算机操作对象以及它们之间关系和运算的一个专门学科。
在下列数据结构的叙述中,错误的是_____。
A.数据结构仅研究数据的逻辑结构和存储结构,不考虑在该结构上的数据运算B.数据的存储结构是其逻辑结构在计算机存储器上的实现C.数据的逻辑结构是数据间关系的描述,它只抽象的反映数据元数间的逻辑关系D.线性表和树是典型的数据逻辑结构,链接表是典型的数据存储结构4.软件的可移植性是衡量软件质量的重要标准之一,它是指_____。
A.软件版本升级的难易程度B.软件与其它软件交换信息的难易程度C.软件对软硬件环境要求得到满足的难易程度D.软件从一个计算机系统或环境转移到另一个计算机系统或环境的难易程度5.在下列有关程序设计语言及其处理程序的叙述中,错误的是_____。
A.用多种不同的汇编语言汇编一个程序称为"交叉汇编"(同一个汇编程序汇编不同的源程序)B.汇编语言是一种用助记符号表示的、与机器语言接近的符号语言C.机器语言指令是由一串“0”和“1”组成的二进位代码D.编译程序应具有词法分析和语法分析功能6.下列关于机器语言与高级语言的说法中,正确的是______。
getbitmapbits用法1. 什么是getbitmapbits?getbitmapbits是一个在编程中常用的函数,它用于获取位图的像素数据。
位图是一种由像素组成的图像文件,每个像素都包含了图像上一个点的颜色信息。
通过getbitmapbits函数,我们可以获取位图中每个像素的颜色值,并对其进行处理。
2. getbitmapbits的语法getbitmapbits函数一般包含以下参数:GetBitmapBits(HBITMAP hBitmap, // 位图句柄LONG cbBuffer, // 缓冲区大小LPVOID lpvBits // 存储像素数据的缓冲区);•hBitmap: 指定要获取像素数据的位图句柄。
•cbBuffer: 指定存储像素数据的缓冲区大小,以字节为单位。
•lpvBits: 指向一个缓冲区,该缓冲区将用于存储获取到的像素数据。
3. getbitmapbits使用示例下面是一个使用getbitmapbits函数获取位图像素数据并打印出来的示例:#include <windows.h>#include <iostream>void PrintBitmapBits(HBITMAP hBitmap) {BITMAP bmp;GetObject(hBitmap, sizeof(BITMAP), &bmp);// 计算需要分配多少字节来存储所有像素数据LONG dataSize = bmp.bmWidthBytes * bmp.bmHeight;// 分配缓冲区LPVOID lpvBits = malloc(dataSize);// 获取位图像素数据GetBitmapBits(hBitmap, dataSize, lpvBits);// 将像素数据转换为颜色值并打印出来BYTE* pPixels = reinterpret_cast<BYTE*>(lpvBits);for (int y = 0; y < bmp.bmHeight; ++y) {for (int x = 0; x < bmp.bmWidthBytes; ++x) {std::cout << std::hex << static_cast<int>(pPixels[y * bmp.bmWidthB ytes + x]) << " ";}std::cout << std::endl;}free(lpvBits);}int main() {HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, "bitmap.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);if (hBitmap != NULL) {PrintBitmapBits(hBitmap);DeleteObject(hBitmap);} else {std::cout << "Failed to load bitmap." << std::endl;return -1;}return 0;}4. getbitmapbits的工作原理getbitmapbits函数的工作原理如下:•首先,通过GetObject函数获取位图的信息,包括宽度、高度等信息。
如何用C语言编写游戏网络游戏是常谈的话题,是交互式娱乐的主力军,是一种高层次的综合艺术,更是一个民族的文化,世界观的全新传播方式作为游戏玩家的我们,是不是想设计一个属于自己的游戏呢爱玩是人的天性,而C语言是我们计算机专业都要学习的一门基础学科.一般来说,是比较枯燥的.那么,我们能不能通过编一些小游戏来提高它的趣味性呢这样学习程序设计,就不会是一件艰苦,枯燥的事,它变得象电脑游戏一样充满好奇,富有乐趣.这正是我要写这文档目的.1, 总是从Hello,world开始学习编程的第一个程序,一般就是打印一个亲切的词语——"Hell o,world!".让我们来看看这个最简单的C程序:#incolude <stdio.h> /*把输入输出函数的头文件包含进来*/int main(){printf("Hello,world!");/*在屏幕上输出字符串"Hello,world!"*/return 0;/*退出main函数,并返回0*/}下面我们发现几个值得改进的地方,1,程序的运行结果一闪而过.2,每执行这个程序一次都能看见上次运行留下的字符.3,我们还希望屏幕输出一个笑脸来欢迎我们.(大家不要小看了这个笑脸曾经有人发贴专门问呢)让我们来改进一下这个程序吧!1,在return语句的前面加一句:getch ();,表示按任意键结束.2,在printf语句前用clrscr函数清屏,要使用这个函数和get ch函数,需要在程序开头再包含头文件conio.h.3,ASCII码也有许多非常好玩的字符,比如ASCII码值为2的就是一个笑脸,我们可以用printf("%c", 2)来输出一个笑脸.现在我们把Hello,world程序改成一个更好看的Hello,world了.下面让我们开始做游戏吧!2, 心动的开始,一个运动中的笑脸大家小时侯喜欢看动画片吗哈哈,我猜你们都喜欢吧!下面就让我们来做一个小动画吧.在屏幕上显示一个运动的小笑脸,而且当它到达屏幕的边缘时会自动弹回来.先在程序定义一个在屏幕中运动的点的结构:struct move_point{int x, y;/*该点的位置,包括x坐标和y坐标*/int xv, yv;/*该点在x轴,y轴的速度*/};运动的原理是,先擦去物体先前的轨迹,让物体按其速度移动一段距离,再画出该物体.让我们看到以下代码:gotoxy(man.x, man.y);/*把光标移到指定的坐标*/printf(" ");/*输出一个空格,把先前的字符擦去*/然后我们让物体按其速度运动:man.x += man.xv;/*水平方向按x轴的速度运动*/man.y += man.yv;/*垂直方向按y轴的速度运动*/运动后还要判断物体是否出界,如果出了界,就令物体反弹,即让它下一刻的速度等于现在的速度的相反数.最后打印出这个笑脸: gotoxy(man.x, man.y);printf("%c\b", 2); /*输出ASCII码值为2的"笑脸"字符*/怎么样是不是很有趣呢不过这个笑脸一直是自己运动,能不能让我们来控制它运动呢答案是肯定的,让我们继续往下学吧!3, 交互的实现——让我们来控制笑脸运动这个程序的主要功能是接受按键,如果接收的是方向键,就让笑脸顺着方向移动,如果接收的是ESC键就退出程序,其他按键则忽略处理.接受按键我们用以下两条语句:while (bioskey(1) == 0);/*等待按键*/key = bioskey(0);/*把接收的按键的键盘码赋给变量key*/然后用switch语句来判断按键以及执行相关操作,如下:switch (key) /*对变量key的值进行判断*/{case UP: /*如果按的是向上键*/… break; /*让物体向上运动,并退出switch*/case DOWN: /*如果按的是向下键*/… break; /*让物体向下运动,并退出switch*/case LEFT: /*向左键*/… break;;/*向左运动*/case RIGHT: /*向右键*/… break;/*向右运动*/赞62004-9-9 19:26 回复c闲人202位粉丝2楼default:break;/*其他按键则忽略处理*/}怎么样,是不是有了玩游戏的感觉了不过这个程序没有什么目的,也没有什么判断胜负的条件.下面我们就利用这个能控制它移动的笑脸来做一个更有趣的游戏吧!4, 在迷宫中探索小时侯,我常在一些小人书和杂志上看见一些迷宫的游戏,非常喜欢玩,还常到一些书上找迷宫玩呢.好的,现在我们用C语言来编个迷宫的游戏,重温一下童年的乐趣.首先,我们定义一个二维数组map,用它来保存迷宫的地图,其中m ap[x][y] == '#'表示在(x,y)坐标上的点是墙壁.DrawMap函数在屏幕上输出迷宫的地图和一些欢迎信息.在main函数里,我们定义了"小人"man的坐标和"目的地"des的坐标.在游戏循环中,我们增加了一些用来判断胜负的语句:if (man.x == des.x && man.y == des.y) /*如果人的坐标等于目的地的坐标*/{gotoxy(35, 3);printf("Ok! You win!"); /*输出胜利信息*/….}在判断按键时,如果玩家按的是方向键,我们还要先判断前面是不是有"墙壁",如果有的话,就不能往前移动了.好的,我们在判断按键的switch语句的各个分支加上了判断语句,如下:if (map[…][…] == '#') break;/*如果前面是墙壁,就不执行下去*/哇噻!真棒,我们做出了一个完整的游戏了.当然你还可以通过修改二维数组map来修改迷宫的地图,让它更有挑战性.不过,我们要设计一个更好玩的游戏——5, 聪明的搬运工大家一定玩过"搬运工"的游戏吧!这是在电脑和电子字典上较流行的益智游戏,让我们动手做一个属于自己的"搬运工"吧!程序依然用数组map来保存地图,数组元素如果为空格则表示什么也没有,'b'表示箱子,'#'表示墙壁,'*'表示目的地,'i'表示箱子在目的地.我们以后每推一下箱子,不但要改变屏幕的显示,也要改变map相应元素的值.游戏的主循环依然是接受按键.当接收一个方向键,需要判断小人前面一格的状态,如果是空地或目的地,则人物可以直接移动;如果是墙壁,则不可移动;如果是箱子或目的地上的箱子,则需要继续判断箱子前面一格的状态:如果前一格是空地或目的地,则人推箱子前进,否则不可移动.好的,我们在switch中增加了这些判断语句.程序还有一个重要的功能就是判断胜利.数组Des用来记录全部目的地的坐标,我们每执行一步操作后,程序就要通过Des数组判断这些目的地上是否都有箱子了.真棒啊!我们可以做游戏了.而且是一个老少皆宜,趣味十足的游戏呢!当然,我们可以通过修改map数组来制作不同的游戏地图, 我们还可以相互分享好的游戏地图呢.尾声:在C++等高级语言还没出来的时候,很多应用程序也是C语言开发的.C语言在与硬件联系紧密的编程中,也占有重要地位.其实我觉得学习编程,可以通过一些小游戏,实用的例子来学习. 象学习音乐的人,不是要等到把全部乐理学完后才演奏一个完整的曲子.而是刚开始学时就有一些简单的曲子让你演奏,让你立刻就有成就感,让你很快就能卖弄出来在别人面前表现自己了.通过编游戏来学习编程,把学习变成游戏,不失为学习计算机的一种好方法.好了,编游戏就这么简单,希望大家也尝试用C语言或其他的语言来做几个自己喜欢的小游戏.时间延迟函数函数名: delay功能: 将程序的执行暂停一段时间(毫秒)用法: void delay(unsigned milliseconds);重画屏幕区域的函数函数名:getimage功能:将指定区域的一个位图存到主存中用法:void far getimage( int left, int top, int right, int bottom, void far *bitmap);函数名:putimage功能:在屏幕上输出一个位图用法:void far putimage( int x, int y, void far *bitmap, int op );图像大小函数函数名: imagesize功能: 返回保存位图像所需的字节数用法: unsigned far imagesize( int left, int top, int right, int bottom );异或模式函数函数名: setwritemode功能: 设置图形方式下画线的输出模式用法: void far setwritemode(int mode);参数MODE可以被设置位COPY_PUT或者XOR_PUT两种模式。
01章用向导创建文档窗口MFC教程是小雅最怕写的内容,除了水平问题之外,还有一点就是,MFC将许多程序封装起来,使众多程序员在编程时,即使编出了程序,也不知究竟为什么这样就可以了。
这一现象使小雅想到当今的Java程序员,许多人在开发外包项目时,因为整个FrameWork已经建成,自己只是担当其中一部分功能,出了BUG之后,找原因非常困难。
在SDK教程中,小雅将各种功能进行详细解说,而MFC教程中,只是用例子来讲解MFC的原理,学会原理之后,就会感到MFC比SDK编程省了许多事。
小雅在SDK教程中,为了讲明API功能,用的方法都是C语言的方法,而MFC用的全是C++的内容,因此,学习MFC必须对C++有较深的了解,不会C语言、C++语言而能够学会MFC的人只能是吹牛。
小雅的“C语言教程”和“C++语言教程”都是按照标准C/C++来写的,在Unix、Linux、Windows都适用,这是很重要的基础。
SDK教程主要是让初学者明白WindowsAPI的功能,以及程序的实现方法,基本上是“C语言+ API”,而MFC基本上是“C++ + API”。
SDK编程和MFC是可以相互转化,相互调用的,因为MFC 封装了绝大部分API,但不是所有的API函数。
注意:SDK并不是只能用C语言来写,用C++一样编程,小雅在作教程时为了把内容说清楚,同时兼顾不会C++的人员才使用C语言。
对于初学者,小雅建议在C/C++的基础上用MFC来编程,一是省去了很多编程,二是用上了C++的面向对象编程的思想。
当今要找一个C++的项目来一边做一边学是很困难的。
小雅自己也一直想找一个C++的工作而未能如愿。
通过学习MFC 再反过来加强一下学的不是很深的C++,不是很好的一个方法吗?不过,MFC和SDK与C/C++不同点在消息事件处理方面,初学者要学会这一内容。
关于“”有“托管”和“非托管”二种编程方式,小雅的SDK教程和MFC教程全部是“非托管”编程,也就是传统编程。
2022年北京语言大学计算机科学与技术专业《操作系统》科目期末试卷A(有答案)一、选择题1、文件系统用位图法表示磁盘空间的分配情况,位图存于磁盘的32~127号块中,每个盘块占1024B.盘块和块内字节均从0开始编号。
假设要释放的盘块号为409612,则位图中要修改的位所在的盘块号和块内字节序号分别是()。
A.81,1B.81,2C.82,1D.82,22、设某文件为索引顺序文件,由5个逻辑记录组成,每个逻辑记录的大小与磁盘块的大小相等,均为512B,并依次存放在50,121,75,80,63号磁盘块上。
若要存取文件的第1569逻辑字节处的信息,则要访问()号磁盘块。
A.3B.75C.80D.633、下列选项中,会导致进程从执行态变为就绪态的事件是()。
A.执行P(wait)操作B.中请内存失败C.启动I/O设备D.被高优先级进程抢占4、采用时间片轮转调度算法分配CPU时,当处于执行状态的进程用完一个时间片后,它的状态是()A.阻塞B.运行C.就绪D.消亡5、下面哪个特征是并发程序执行的特点()。
A.程序执行的间断性B.相通信的可能性C.产生死锁的可能性D.资源分配的动态性6、产生内存抖动的主要原因是()A.内存空间太小B.CPU运行速度太慢C.CPU调度算法不合理D.页面置换算法不合理7、目标程序对应的地址空间是()A.名空间B.逻辑地址空间C.存储空间D.物理地址空间8、下列观点中,不是描述操作系统的典型观点的是()。
A.操作系统是众多软件的集合B.操作系统是用户和计算机之间的接口C.操作系统是资源的管理者D.操作系统是虚拟机9、 OS通常为用户提供4种使用接口,它们是终端命令、图标菜单、系统调用和()A.计算机高级指令B.宏命令C.类似DOS的批命令文件或UNIX的shell文件D.汇编语言10、系统管理设备是通过一些数据结构来进行的,下前的()不属于设备管理数据结构。
A.FCBB.DCTC.SDTD.COCT11、采用SPOOLing技术后,使得系统资源利用率()。
2022年河北地质大学计算机科学与技术专业《操作系统》科目期末试卷A(有答案)一、选择题1、在系统内存中设置磁盘缓冲区的主要11的是()。
A.减少磁盘1/0次数,B.减少平均寻道时间C.提高磁盘数据可靠性D.实现设备无关性2、文件系统用位图法表示磁盘空间的分配情况,位图存于磁盘的32~127号块中,每个盘块占1024B.盘块和块内字节均从0开始编号。
假设要释放的盘块号为409612,则位图中要修改的位所在的盘块号和块内字节序号分别是()。
A.81,1B.81,2C.82,1D.82,23、在下列操作系统的各个功能组成部分中,一定需要专门硬件配合支持的是()。
I.地址映射II.进程调度III.中断系统IV.系统调用A.IB.I、IIIC. I、III、IVD.II、II4、某系统中有11台打印机,N个进程共享打印机资源,每个进程要求3台打印机。
当N的取值不超过()时,系统不会发生死锁。
A.4B.5C.6D.75、一个进程的读磁盘操作完成后,操作系统针对该进程必做的是(),A.修改进程状态为就绪态B.降低进程优先级C.给进程分配用户内存空间D.增加进程时间片大小6、设系统缓冲区和用户工作区均采用单缓冲,从外设读入一个数据块到系统缓冲区的时间为100,从系统缓冲区读入1个数据块到用户工作区的时间为5,对用户上作区中的1个数据块进行分析的时问为90。
进程从外设读入并分析2个数据块的最短时间是()。
A.200B.295C.300D.3907、适合多道程序运行的存储管理中,存储保护是为了()A.防止一个作业占用同个分区B.防止非法访问磁盘文件C.防止非法访问磁带文件D.防止各道作业相互干扰8、下列选项中,在用户态执行的是()。
A.命令解释程序B.缺页处理程序C.进程调度程序D.时钟中断处理程序9、若程序正在试图读取某个磁盘的第100个逻辑块,使用操作系统提供的()接门。
A.系统调用B.图形用户接口C.原语D.键盘命令10、采用SPOOLing技术后,使得系统资源利用率()。
第1章 数字图像处理软件开发概述“心有多大,舞台就有多大。
”开发数字图像处理软件,需要想象力,而要把想象变成现实,则需要得心应手的开发平台。
目前常用于开发数字图像处理软件的平台可以粗略地分为通用平台和专用平台两大类。
通用平台不是专门针对数字图像处理软件开发而打造的,但是却可以用于开发数字图像处理系统,如Visual C++、Matlab等。
为了提高开发效率,通用平台往往结合专门的软件包(如OpenCV、VTK 等)或工具箱(如Matlab中的Image Processing工具箱等)进行数字图像处理软件开发。
专用平台则是专为数字图像处理或更进一步的机器视觉系统开发量身定制的,这类开发平台中均内置了大量专门用于数字图像处理的数据结构、对象、函数或组件模块,可供开发人员方便地调用,在更高的层次上进行数字图像处理系统的开发,如Halcon、VisionPro等。
本章主要介绍本书将要用到的几种开发平台及其配置和使用方法。
本章要点Visual C++处理数字图像的基本方法在Visual C++中使用OpenCV在Visual C++中使用VTK1.1 Visual C++“工欲善其事,必先利其器。
”Visual C++便是众多开发工具中的“一把所向披靡的利器”。
Visual C++(简称VC)是Microsoft公司的Visual Studio开发工具箱中的一个C++程序开发环境。
自诞生以来,凭借着C++语言的强大威力、开发环境的良好支持,以及与Windows操作系统的“血缘”关系,一直是Windows操作系统环境下最主要的开发工具之一。
使用VC可以完成各种各样应用程序的开发,从底层软件到上层直接面向用户的软件,而且用VC开发出的产品与Windows操作系统最具“亲和力”。
掌握了VC,就等于进入了Windows编程的自由王国。
VC在数字图像处理软件开发中也占据着极其重要的地位。
第1章Visual C++1.1.1 Visual C++概述VC是一个面向对象的可视化集成开发系统,它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2、WinSock网络、3D控制界面。
用C++读取、修改和保存位图该示例用C++读取、修改位图,通过它我们可以了解位图的文件结构,对图像处理的理解很有帮助。
下面是全部的源码:#include <stdio.h>#include <fstream.h>#include <windows.h>/***********************变量的定义***********************************/unsigned char* pBmpBuf; //读入图像数据的指针int bmpWidth; //图像的宽度int bmpHeight; //图像的高度RGBQUAD* pColorTable; //颜色表指针int biBitCount; //图像类型,像素位数/****************************************************************************读取图像的位图数据、宽度、高度、颜色表及像素位数,并存放在全局变量中*****************************************************************************/bool readBmp(char* bmpName){FILE* fp = fopen(bmpName,"rb"); //以二进制读的方式打开指定的图像文件if(fp == 0) return 0;//跳过位图文件头fseek(fp,sizeof(BITMAPFILEHEADER),0);//定义位图信息头结构变量,读取位图信息头进内存,存放在变量infoHead中BITMAPINFOHEADER infoHead;fread(&infoHead,sizeof(BITMAPINFOHEADER),1,fp);bmpWidth = infoHead.biWidth;bmpHeight = infoHead.biHeight;biBitCount = infoHead.biBitCount;//定义变量,计算图像每行像素所占的字节数(必须为4的倍数)int lineByte=(bmpWidth * biBitCount/8 + 3)/4 * 4;//灰度图像有颜色表,且颜色表为256if(biBitCount == 8){//申请颜色表所需要的空间,读颜色表进内存pColorTable = new RGBQUAD[256];fread(pColorTable,sizeof(RGBQUAD),256,fp);}//申请位图数据所需要的空间,读位图数据进内存pBmpBuf = new unsigned char[lineByte * bmpHeight];fread(pBmpBuf,1,lineByte * bmpHeight,fp);fclose(fp);return 1;}/***************************************************************************************************将指定数据写到文件中***************************************************************************************************/ bool saveBmp(char* bmpName, unsigned char* imgBuf, int width, int height, int biBitCount, RGBQUAD* pColorTable){//如果位图数据指针为0,则没有数据输入if (!imgBuf)return 0;//颜色表大小,以字节为单位:灰度图像为1024;彩色图像为0int colorTablesize = 0;if(biBitCount == 8)colorTablesize = 1024;//待存储图像数据每行字节数为4的倍数int lineByte = (width * biBitCount/8 + 3)/4 * 4;//以二进制写的方式打开文件FILE* fp = fopen(bmpName,"wb");if(fp == 0) return 0;//申请位图文件头结构变量,填写文件头信息BITMAPFILEHEADER fileHead;fileHead.bfType = 0x4D42; // bmp 类型//bfSize是图像文件4个部分之和fileHead.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + colorTablesize + lineByte * height;fileHead.bfReserved1 = 0;fileHead.bfReserved2 = 0;//bfOffBits是图像文件前3个部分所需空间之和fileHead.bfOffBits = 54 + colorTablesize;//写文件头进文件fwrite(&fileHead,sizeof(BITMAPFILEHEADER),1,fp);//申请位图信息头结构变量,填写信息头信息BITMAPINFOHEADER infoHead;infoHead.biBitCount = biBitCount;infoHead.biClrImportant = 0;infoHead.biClrUsed = 0;infoHead.biCompression = 0;infoHead.biHeight = height;infoHead.biPlanes = 1;infoHead.biSize = 40;infoHead.biSizeImage = lineByte * height;infoHead.biWidth = width;infoHead.biXPelsPerMeter = 0;infoHead.biYPelsPerMeter = 0;//写位图信息头进内存fwrite(&infoHead,sizeof(BITMAPINFOHEADER),1,fp);//如果灰度图像,有颜色表,写入文件if(biBitCount == 8)fwrite(pColorTable,sizeof(RGBQUAD),256,fp);//写位图数据进文件fwrite(imgBuf,height * lineByte,1,fp);fclose(fp);return 1;}/********************************************************************************************************** ***********位图处理过程********************************************************************************************************** **********/void pixHandle(char* bmpName){//读入指定BMP文件进内存readBmp(bmpName);//输出图像的信息cout<<"width="<<bmpWidth<<"/nheight="<<bmpHeight<<"/nBitCount="<<biBitCount<<endl;//每行字节数int lineByte = (bmpWidth * biBitCount/8 + 3)/4 * 4;//循环变量定义int m=0,n=0,pixCount=0;//输出改变像素的文本文件ofstream outfile("图像像素.txt",ios::in | ios::trunc );if(biBitCount == 8) //灰度图像{//把图像的右上方的1/4变为黑色for(int i=bmpHeight/2;i<bmpHeight;i++){for(int j=lineByte/2;j<lineByte;j++){m=*(pBmpBuf + i*lineByte + j) = 0;outfile<<m<<" ";pixCount++;if(pixCount%8 == 0)outfile<<endl;}}}if(!outfile)cout<<"Open error!"<<endl;else if(biBitCount == 24) //彩色图像{for(int i=bmpHeight/2;i<bmpHeight;i++){for(int j=bmpWidth/2;j<bmpWidth;j++){for(int k=0;k<3;k++){m=*(pBmpBuf + i*lineByte + j*3 + k) =0; //每像素RGB三个分量分别置为0 outfile<<m<<" ";pixCount++;if(pixCount%8 == 0)outfile<<endl;}n++;}}cout<<"总的像素个数为:"<<n<<endl;}//将图像数据存盘char* writePath = "testcpy.bmp";//图片处理后再存储saveBmp(writePath, pBmpBuf, bmpWidth, bmpHeight, biBitCount, pColorTable);delete[] pBmpBuf;if(biBitCount == 8)delete[] pColorTable;}void main(){pixHandle("test.bmp");}上述代码可直接运行,已经过测试。
参考:/question/122567656.html?si=1。