首页 大学stl期末试题 (23页)

大学stl期末试题 (23页)

举报
开通vip

大学stl期末试题 (23页)大学stl期末试题大学stl期末试题篇一:4大学期末考试计算机面试和笔试题知识一、基础知识wss1.各类修饰符的作用:static的作用:(1)函数体内(数据长久性)作用范围就是该函数体,并只分配一次内存,且在下一次调用时,其值会维持为上一次调用时的值;(auto变量则是每次调用时清零)(2)文件/模块中(数据隐藏性):a.普通全局变量/函数:具有全局可见性(即在所有文件中都可见:若本文件中没有该全局变量,则通过extern进行扩展);b.静态全局变量/函数:具有局部可见性(即只在当前文件/模块内可见);(3)默认...

大学stl期末试题 (23页)
大学stl期末试题大学stl期末试题篇一:4大学期末考试计算机面试和笔试题知识一、基础知识wss1.各类修饰符的作用:static的作用:(1)函数体内(数据长久性)作用范围就是该函数体,并只分配一次内存,且在下一次调用时,其值会维持为上一次调用时的值;(auto变量则是每次调用时清零)(2)文件/模块中(数据隐藏性):a.普通全局变量/函数:具有全局可见性(即在所有文件中都可见:若本文件中没有该全局变量,则通过extern进行扩展);b.静态全局变量/函数:具有局部可见性(即只在当前文件/模块内可见);(3)默认初始化值为0,原因是静态数据区默认值为0,因此可以减少程序员的工作量。(4)类中的静态数据成员:1.被该类所有对象所共享(包括其派生类);2.独立于类对象而存在,不是类对象的组成部分(因此sizeof时不计算在内);3.只能在类外定义或者初始化(静态成员变量被该类所有对象所共享,因此如果在该类内部进行定义,容易引起混乱)。(5)类中的静态成员函数:1.被该类所有对象所共享(包括其派生类);2.没有this指针,因此只能调用静态数据成员,而无法调用普通数据成员;3.不可被声明为virtual、const;4.无需创建类对象可实现函数访问,即可通过类作用域直接访问;const的作用:(1)用于普通变量:将被修饰变量定义为常量,以防止被修改;(2)用于函数返回值类型:string类型的加法赋值函数返回s=s1+s2;(3)用于函数形参类型:防止形成被修改,并且扩展形参范围(const形参可以接受const或非const实参,而非const形参只能接受非const实参);(3)用于修饰函数体:const成员函数无法修改其调用类对象的数据成员(若用mutable修饰后,则可修改其数据成员);(4)关于volatile:类似于const,但是在编译器认识范围之外可以被改变。&引用的作用:(作用类似于指针)(1)用于普通变量:其是目标变量的一个别名,对其进行操作相当于对目标变量进行操作;其不占用内存空间;(数组没有引用)(2)用于函数返回类型;(用于连续赋值)(3)用于函数形参:引用传递和地址传递的效果是相同的,即函数中所有对形参的操作都是对主函数中实参的操作(但是指针形参会产生形参副本和存储单元);此外,引用形参不产生形参副本且不产生存储单元,即直接使用实参本身,并使用用于大型数据的形参传递,可提高运行效率(对于普通形参,会产生形参副本并分配存储单元,对于类对象形参还会调用拷贝构造函数);(4)const&(常引用):经常用作函数形参类型,const作用是使得形参无法被修改,&作用是避免调用复制构造函数,提高代码效率;(5)可用于产生多态(Derivedd;Base&b=d;)(6)引用与指针的区别1.引用必须被初始化,指针不必初始化;2.不能改变引用所指对象,可以改变指针所指对象;3.不存在指向空值的引用,但是存在指向空值的指针。2.#define(宏定义)的相关讨论宏定义(注意括号的使用以防止边界效应,没有分号):#definemin(a,b)(((a)<(b))?(a):(b))a.#define与const相同点:二者均可定义常量;不同点:(1)编译器处理方式不同define是在预处理阶段展开。const是编译运行阶段使用。(2)类型和安全检查不同define宏没有具体类型,没有类型检查。(存在边际效应)const常量有具体类型,有类型检查。(3)存储方式不同define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。const常量仅有一份拷贝,且会在内存中分配。(4)调试工具define没有集成化调试工具可以对其进行调试。const有集成化调试工具可以对其进行调试。b.#define与inline(内联函数)相同点:二者均可定义函数;不同点:宏定义函数只是函数的简单替换和展开,因此安全性较差。inline函数不是函数跳转,而是直接将代码写入该行,提升了效率,安全性更高。3.new与malloc的区别(1)malloc和free是C++\C语言的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 库函数,new和delete是C++运算符,都用于动态内存分配和删除;(2)malloc不能初始化类对象,new可以初始化类对象,new会调用对象的构造函数进行对象初始化。Delete会调用对象的destructor,而free不会调用对象的destructor;(3)new带有具体指针类型,而malloc不带有指针类型并始终返回void*。4.堆stack和栈heap的区别(1)管理方式:a.栈中内存空间由系统编译器自动申请和释放;b.堆中内存空间则由用户手动申请和释放(new、malloc);(2)分配方式:a.栈可进行静态和动态内存分配:inti=1;int*ptr=newint[10];b.堆只可进行动态内存分配;newint[10];(int*)malloc(sizeof(int)*n);(3)空间大小:a.栈有空间大小限制;b.堆没有空间大小限制;(4)申请效率:栈>堆;(5)碎片问题:a.栈:是一种向低地址扩展的数据结构,连续内存空间,不易产生碎片,;b.堆:是一种向高地址扩展的数据结构,非连续内存空间(通过遍历链 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf ,该链表记录了空闲内存地址),易产生碎片。5.struct和class的区别struct和class一样,可以含有数据成员和成员函数、继承、多态。(1)默认访问权限:struct默认是public,class默认是private。(2)默认继承权限:struct默认是public,class默认是private。(3)实现struct更适合实现数据结构,class更适合实现类对象。6.sizeof()操作符的使用问题:(1)void(charstr[100]){ints=sizeof(str);//无论str[]中的维数是多大,此时s=4returns;}原因:实参数组传入到函数的形参中,此时形参数组会退化成指针,相当于传递了一个指针变量(即长整型地址变量long),因此sizeof(str)==sizeof(long)=4。(2)classA{//空类}a;sizeof(a)=1;原因:空类不含有数据成员或成员函数,理论上不占用内存空间。但是,空类是可以进行实例化的,而一旦进行实例化后该对象则会占用内存空间。因此,系统为保证空类在实例化过程中不会出错会分配给空类一定的内存空间,32位系统下所分配的内存空间1byte。6.函数重载、覆盖、隐藏重载是指相同的函数名,但参数的类型或个数中只要有所不同,便进行再定义,编译之后重载的函数都具有不同的地址,也就是说虽然函数名相同,实际上是不同的函数,在调用时,编译系统会根据不同之处自动区别是调用哪一个函数。对于普通函数和后面要学的类的成员函数都适用。它们的地址在编译时就确定了,和多态无关。覆盖(也叫重写)只对类的构造函数或成员函数适用,是子类继承父类是才使用的非常有用的功能。真正和多态相关。它们的地址在编译时无法确定,在运行时动态分配。重载可以针对运算符,而覆盖不行。隐藏:是指派生类的函数屏蔽了与其同名的基类函数,规则如下:(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)区别:重载(overload):(1)作用范围:同一个类内;(2)函数名相同;(3)函数参数不同(返回值类型、参数个数或参数类型)。覆盖(override):(1)作用范围:分别在基类和派生类;(2)函数名相同;(3)函数参数相同(返回值类型、参数个数与参数类型);(4)有virtual标识。隐藏(hide):(1)作用范围:分别在基类和派生类;(2)函数名相同:(3)a.若函数参数不同(个数和类型),则无论有无virtual标识,构成隐藏;b.若函数参数相同(个数和类型),且无virtual标识,构成隐藏;7.内存分配方式1.动态数据区(1)栈区(stack)—程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。(2)堆区(heap)—在内存开辟另一块存储区域。一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。用malloc,calloc,realloc等分配内存的函数分配得到的就是在堆上2.静态数据区:全局区(静态区)(static)—编译器编译时即分配内存。全局变量和静态变量的存储是放在一块的。对于C语言初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。而C++则没有这个区别-程序结束后由系统释放3.文字常量区—常量字符串就是放在这里的。程序结束后由系统释放4.程序代码区—存放函数体的二进制代码。(1)全局变量和局部变量在内存中有什么区别?编译器如何区分二者?1.存储区域不同:全局变量储存在静态数据区,局部变量存在动态数据区。(内存分配:动态存储区域(堆、栈:局部变量)、代码区、常量区、静态存储区域(全局、静态变量static))。2.作用范围不同:全局变量的生命周期从程序开始到程序结束,而局部变量的生命周期仅仅是在函数体内。编译器根据变量声明位置进行判断。(2)字符串数组的全局和局部变量形式:局部数组:(str被存于栈内,即动态数据区)全局变量:(str被存于栈内,但由于后面的字符串常量复制,最后返回相当于返回一个全局变量,因此保存在内存中的静态数据区)静态变量:(保存在内存中的静态数据区)篇二:PLC 期末试卷 初三化学期末试卷答案小学一年级科学上册五年级下数学期末试卷七年级数学期末试卷四年级上册期末试卷 2015-2016年度第一学期济南九职专期中考试试卷《PLC》一、填空题:(本大题共15个空,每空2分,共30分)1、可编程逻辑控制器简称__________。2、。该符号表示的是__________电器,作用是__________。3、三菱plc输入继电器用__________字母表示、输出继电器用__________字母表示。4、辅助继电器M有三类,分别是_________辅助继电器,_________辅助继电器,_________继电器三种。5、M8011是_________的时钟继电器,M8012是_________的时钟继电器,M8013是_________的时钟继电器。6、时间继电器是T4是_________ms的定时器,时间继电器是T202是_________ms的定时器,。7、PLC中的两条步进指令是_________和_______。二、判断题:(本大题共5个小题,每题3分,共15分)1、X、Y有无数个常开常闭触点供编程使用。()2、M辅助继电器都有无数个常开常闭触点供编程使用,可以用作外部输出负载使用。()3、C0~C99是通用型计数器。()4、除步进程序外,任何线圈、定时器、计数器、高级指令等不能直接与左母线相连。()5、梯形图中的触点应画在垂直分支上,而不能画在水平线上。()三、改错题:(本大题共2个小题,每题10分,共20分)1、在画梯形图时,不能将触点画在线圈的右边,而只能画在线圈的左边,将错误的改正在右边。1错误图正确图2、在程序中,不允许同一编号的线圈两次输出。将错误的改正在右边。错误图正确图四、编程题:(本大题共35分)对三相异步电动机正反转电路进行PLC改造要求:1、写出I/O分配图(10分)2、画出I/O外部接线图(10分)3、PLC编程(15分)2《PLC》答题纸一、填空题:(本大题共15个空,每空2分,共30分)1、plc2、熔断器、短路保护3、x、y4、通用、掉电保持、特殊辅助5、10ms、100ms、1s6、100ms、10ms7、STL、RET二、判断题:(本大题共5个小题,每题4分,共20分)三、改错题:(本大题共2个小题,每题10分,共20分)1、2、四、编程题:(本大题共30分)34篇三:石河子大学信息学院c++期末考试复习题(小题前面那个复习题里面有,大题注意一下)试题一一、单项选择题(共20分,每题2分,正确 答案 八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案 只有一项)1.以下说法中正确的是A.类A的private成员只能在类A的成员函数内部进行直接访问,其他任何地方都不能直接访问。B.静态成员一定不能是private的。C.在某种情况下,在派生类的成员函数内部也能对基类的私有成员进行直接访问。D.只有成员变量才能是protected的,成员函数不能是protected的。(C)2.以下关于this指针的说法中不正确的是:A.const成员函数内部不可以使用this指针B.成员函数内的this指针,指向成员函数所作用的对象。C.在构造函数内部可以使用this指针D.在析构函数内部可以使用this指针(A)3.下列类模板中定义正确的是:A.template<classT1,classT2>classA:{T1b;intfun(inta){returnT1+T2;}};B.template<classT1,classT2>classA{intT2;T1fun(T2a){returna+T2;}};C.template<classT1,classT2>classA{public:T2b;T1a;A<T1>(){}T1fun(){returna;}};D.template<classT1,classT2>classA{T2b;T1fun(doublea){b=(T2)a;return(T1)a;}};(D)4.假设p1,p2是STL中的list容器上的迭代器,那么以下语句哪个是不符合语法的A.p1++;B.p1--;C.p1+=1;D.intn=(p1==p2);(C)5.将一个对象放入STL中的容器里时:A.实际上被放入的是该对象的一个拷贝(副本)B.实际上被放入的是该对象的指针C实际上被放入的是该对象的引用D.实际上被放入的就是该对象自身(A)6.以下关于函数对象的说法正确的是:A.函数对象所属的类将()运算符重载为一个成员函数B.函数对象所属的类将[]运算符重载为一个成员函数C.函数对象所属的类不能有成员变量D.A和C都对(A)7.以下说法正确的是:A.const成员函数内可以调用非const成员函数B.在抽象类的某些成员函数中,可以出现调用纯虚函数的语句C.静态成员函数也可以是虚函数D.静态成员变量只能通过静态成员函数来访问(B)8.如果将运算符“*”重载为某个类的成员运算符(也即成员函数),则该成员函数的参数个数是:A.0个B.1个C.2个D.根据实际作用不同,0个或1个都行(D)9.以下关于STL中stack类模板的正确说法是:A.stack是关联容器B.对于stack上的迭代器p,能够执行p++操作C.stack可以用deque实现D.可以用sort算法对stack进行排序(C)10.以下说法正确的是A.在静态成员函数中调用虚函数是动态联编(多态)B.在构造函数中调用虚函数,不是动态联编C.抽象类的成员函数都是纯虚函数D.构造函数和析构函数都不能是虚函数(B)二.以下程序编译、连接都能通过,请写出运行时输出的结果。你认为没有输出的,就写"无输出"(共28分)。1)4分#include<vector>#include<iostream>usingnamespacestd;classA{private:intnId;public:A(intn){nId=n;cout<<nId<<"contructor"<<endl;};~A(){cout<<nId<<"destructor"<<endl;}};main(){vector<A*>vp;vp.push_back(newA(1));vp.push_back(newA(2));vp.clear();Aa(4);}/*1contructor2contructor4contructor4destructor*/2)4分#include<iostream.h>classApple{private:staticintnTotalNumber;public:Apple(){nTotalNumber++;}~Apple(){nTotalNumber--;}staticvoidPrintTotal(){cout<<nTotalNumber<<endl;}};intApple::nTotalNumber=0;intmain(){Apple*p=newApple[4];Apple::PrintTotal();Applep1,p2;delete[]p;Apple::PrintTotal();}/*42*/3)4分#include<iostream>#include<vector>usingnamespacestd;classA{public:inti;A(intn):i(n){};voidPrint(){cout<<i<<",";}};A&Func(vector<A>&v,A*p){v.push_back(*p);for(inti=0;i<v.size();i++)if(v[i].i==2){p=&(v[i]);break;}return*p;}main(){constintSIZE=4;Aarray[SIZE]={A(1),A(2),A(3),A(4)};vector<A>v(array,array+SIZE);A*p=newA(5);Func(v,p)=10;for(inti=0;i<v.size();i++)v[i].Print();cout<<endl;cout<<p->i;}/*1,10,3,4,5,5*/4)4分#include<iostream.h>classA{public:A(){}virtualvoidfunc(){cout<<"A::func"<<endl;}~A(){}virtualvoidfund(){cout<<"A::fund"<<endl;}};classB:publicA{public:B(){func();}voidfun(){func();}virtual~B(){fund();}};classC:publicB{public:C(){}voidfunc(){cout<<"C::func"<<endl;}~C(){fund();}voidfund(){cout<<"C::fund"<<endl;}};main(){A*pa=newC();deletepa;B*pb=newC();deletepb;}/*A::funcA::funcC::fundA::fund*/5)4分#include<iostream.h>#include<vector>#include<numeric>usingstd::vector;usingstd::accumulate;classComplex{doublereal;doubleimage;public:Complex(doubler=0,doublei=0):real(r),image(i){}friendComplexoperator+(constComplex&c,inti);friendostream&operator<<(ostream&o,constComplex&c);};Complexoperator+(constComplex&c,inti){Complextmp;tmp.real=i*i+c.real;tmp.image=c.image;returntmp;}ostream&operator<<(ostream&o,constComplex&c){o<<c.real<<"+"<<c.image<<"i";returno;}main(){inta[]={1,2,3,4};vector<int>v(a,a+4);cout<<accumulate(v.begin(),v.end(),Complex(2,3));}/*32+3i*/6)4分#include<iostream>#include<map>usingnamespacestd;classGt{public:booloperator()(constint&n1,constint&n2)const{return(n1%10)>(n2%10);}};intmain(){typedefmap<int,double,Gt>mmid;mmidMyMap;cout<<MyMap.count(15)<<endl;MyMap.insert(mmid::value_type(15,2.7));MyMap.insert(mmid::value_type(15,99.3));cout<<MyMap.count(15)<<endl;MyMap.insert(mmid::value_type(30,111.11));MyMap.insert(mmid::value_type(11,22.22));cout<<MyMap[16]<<endl;for(mmid::const_iteratori=MyMap.begin();i!=MyMap.end();i++)cout<<"("<<i->first<<","<<i->second<<")"<<",";}/*010(16,0),(15,2.7),(11,22.22),(30,111.11)*/7)4分#include<iostream.h>classA1{public:inti;A1(intn):i(n){cout<<"A1_Con:"<<i<<endl;}~A1(){cout<<"A1_Des:"<<i<<endl;}};classA2{public:inti;A2(intn):i(n){cout<<"A2_Con:"<<i<<endl;}~A2(){cout<<"A2_Des:"<<i<<endl;}};classB{public:B(){cout<<"B_Con"<<endl;}~B(){cout<<"B_Des"<<endl;}};classC:publicB{public:A2a2;A1a1;C():a1(1),a2(1){cout<<"C_Con"<<endl;}~C(){cout<<"C_Des"<<endl;}};main(){C*pc=newC;}/*B_ConA2_Con:1A1_Con:1C_Con*/三、程序填空(36分):已知以下程序的输出结果,请填出缺少的部分。您填写的 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 里不能包含分号。假设您需要的头文件前面都已经有#include语句包含进来了(即可以随意使用标准库中的类、模板等)1)6分voidOutputN(intn);函数的功能是输出所有数正整数i,j,k的组合,该组合满足下列3个条件:1)i,j,k都不大于n2)i<j<k3)i+j+k能够被3整除比如,OutputN(5)的输出结果就是:1,2,31,3,52,3,43,4,5请补上丢失的部分。#include<iostream.h>voidOutputN(intn){inti,j,k;for(_____;______;_____)for(_____;______;______)for(______;______;______)if((i+j+k)%3==0)cout<<i<<","<<j<<","<<k<<endl;}/*i=1i<=ni++j=i+1j<=nj++k=j+1k<=nk++*/2)6分从1,2,3,4,5这5个整数中取一个或多个数(每个数最多只能取1次),使得取出的数总和能被3整除。下面的这段程序的功能就是用枚举的办法,求出了所有满足条件的取法并输出。输出结果如下:1,2,3,1,2,3,2,4,2,3,4,1,5,1,3,5,4,5,1,2,4,5,3,4,5,1,2,3,4,5,请填出缺少的部分#include<vector>#include<iostream>#include<algorithm>usingnamespacestd;intbit(intn,intb){return____________;}main(){inti;intsum;vector<int>v;for(i=1;i<32;i++){sum=0;____________;for(intj=0;j<5;j++)if(bit(__________)){sum+=j+1;v.push_back(j+1);}if((sum%3)==0){for(intk=0;k<v.size();k++)cout<<v[k]<<",";cout<<endl;}}}/*n&(1<<b)v.clear();i,j*/3)6分输出结果:Tom,Jack,Mary,John,程序:#include<vector>#include<iostream>#include<string>usingnamespacestd;template<classT>classMyClass{vector<T>array;public:MyClass_____________________{copy(begin,begin+n,array.begin());}voidList(){______________________;for(i=array.begin();i!=array.end();i++)cout<<*i<<",";}};main(){stringarray[4]={"Tom","Jack","Mary","John"};_________________________;obj.List();}/*(T*begin,intn):array(n)vector<T>::iteratoriMyClass<string>obj(array,4)*/4)6分输出结果:A::Print:1B::Print:2B::Print:3程序:template<classT>voidPrintAll(constT&c){T::const_iteratori;for(i=c.begin();i!=c.end();i++)_________________;};classA{protected:intnVal;public:A(inti):nVal(i){}virtualvoidPrint(){cout<<"A::Print:"<<nVal<<endl;}};classB:publicA{public:B(inti):A(i){}voidPrint(){cout<<"B::Print:"<<nVal<<endl;}};main(){__________________;v.push_back(newA(1));v.push_back(newB(2));v.push_back(newB(3));PrintAll(v);}/*(*i)->Print()vector<A*>v*/5)6分回文串指的是颠倒过来后还是与原串一样的字符串。比如“abba”,“bcd232dcb”,都是回文串。下面的程序运行后等待输入一串字符(字符个数小于4000),敲回车后程序判断输入的字符串是否是回文串,如果是,输出yes,否则,输出no。比如输入abba(回车)则输出yes输入abcd(回车)则输出:no请填空。#include<string.h>#include<iostream.h>charszWord[5000];boolPalindrome(char*s,intnLen){if(___________)returntrue;if(____________)returnfalse;returnPalindrome(___________);}main(){cin.getline(szWord,4990);if(Palindrome(szWord,strlen(szWord)))cout<<"yes";elsecout<<"no";}/*nLen<=1s[0]!=s[nLen-1]s+1,nLen-2*/6)6分输出结果是:05程序:classA{public:intval(来自:WwW.:大学stl期末试题);A(____________){val=n;};//(a)___________GetObj(){//(b)return_________;//(c)}};main(){Aa;cout<<a.val<<endl;a.GetObj()=5;cout<<a.val<<endl;}/*intnA&*this*/四、编程题1.(8分)程序员马克斯的程序风格和他的性格一样怪异。很不幸他被开除后老板命令你接替他的工作。马克斯走之前分愤然删除了他写的一个类模板MyMax中的代码,你只好将其补出来。你只知道MyMax模板的作用与求数组或向量中的最大元素有关,而且下面程序的输出结果是:5136请补出马克斯删掉的那部分代码。该部分代码全部位于"//开头"和"//结尾"之间,别处一个字节也没有。篇四:贵州大学DSP试题及答案(2012级A卷)贵州大学2012-2013学年第一学期考试试卷ADSP原理及应用试卷(2011电子信息科学与技术)注意事项:1.请考生按要求在试卷装订线内填写姓名、学号和年级专业。2.请仔细阅读各种题目的回答要求,在规定的位置填写答案。3.不要在试卷上乱写乱画,不要在装订线内填写无关的内容。4.满分100分,考试时间为120分钟。一、选择题(本大题共20分,每小题2分)下列各题的选项中,只有一项是正确的,请将正确选项的编号填在括号内。错填、不填均无分。1.C54x系列DSP芯片由于其内部CPU采用了(B),因此具有比传统处理器更快的指令执行速度。(A)冯.诺依曼结构和流水线操作(B)哈佛结构、流水线技术和多总线结构(C)并行操作和多总线结构(D)高时钟频率2.OVM是状态寄存器ST1中的溢出方式控制位,当OVM=1时,则对ALU的运行结果进行调整,若数据发生正向溢出时,则ALU将采用下列(C)方式进行处理。(A)将32位最小负数FF80000000装入累加器(B)由低32位向高8位进位(C)将32位最大正数007FFFFFFF装入累加器(D)保持不变3.当C54X执行一个双数据读操作指令时,将会使用到下列的哪一组总线(D)。(A)PB、CB、PAB、CAB(B)DB、EB、DAB、EAB(C)CB、EB、CAB、EAB(D)CB、DB、CAB、DAB4.40位累加器A中的定点数为FFFFFFFFCBH,T=0000H,执行EXPA指令后,则T寄存器的值变为(A)。(A)0019H(B)FFFFH(C)0025H(D)保持不变5.在C54X系列的DSP汇编语言程序中,定义一个小数如0.907,应当写成:(B)(A)0.907(B)32768*0.907(C)907/1000(D)32768*907/10006.程序空间的配置可通过PMST的MP/MC和OVLY控制位来设置,对C5402如要将其0000H~3FFFH空间定义为内部DARAM,可按如下哪一种方式配置(A)。(A)OVLY=1(B)MP/MC=1(C)OVLY=0(D)MP/MC=07.直接寻址指令中的低7位是一个数据页的偏移地址dmad,而所在的数据页由数据页指针DP或SP的值决定。如果用DP方式产生直接地址,并取DP=2和dmad=10H,则该直接地址为:(A)(A)0110H(B)0210H(C)0012H(D)0201H8.有一条DSP汇编指令,其语法格式为:MACSmen,src,该指令所完成的操作对应的表达式为:(D)(A)src=src+Smen*src(B)src=src+T*src(C)src=T+src*Smen(D)src=src+T*Smen9.当某个可屏蔽中断被DSP响应后,中断系统将自动完成(D)操作。(A)清除IMR中的相应位,INTM置1(B)清除IFR中的相应位,INTM置0(C)清除IMR中的相应位,INTM置0(D)清除IFR中的相应位,INTM置110.C54X系列芯片中,在同一个周期内,CPU可以同时进行读和写操作的存储器是:(B)(A)SARAM(B)片内ROM(C)DARAM(D)存储器映射寄存器MMR二、简答题(每小题6分,共12分)1.循环循址是实现循环缓冲区的关键,简要说明循环缓冲区中循环循址算法的基本工作原理。1、循环缓冲区的有效基地址(EFB)就是用户选定的辅助寄存器(ARx)的低N位置0后所刚的值。循环缓冲区的尾基地址(EOB)是通过用BK的低N位代替ARx的低N位得到。循环缓冲区的index就是ARx的低N位,步长(step)就是加到辅助寄存器或从辅助寄存器中减去的值。(3分)循环寻址算法为:0≤index+step<BK;index=index+stepElse讧index+step≥BK;(3分)Index=index+step—BKElseindex+step<0;Index=index+step+BK上述循环寻址算法,实际上是以BK寄存器中的值为模的取模运算。2.试分析小数乘法产生冗余符号位的原因,并说明如何解决冗余符号位问题。出错原因:两带符号数相乘,其结果带有2个符号位。Sxxx(Q3格式)×Syyy(Q3格式)SSzzzzzz(Q6格式)(3分)解决办法:运算结果左移一位,消去多余符号位。可通过对FRCT位置1,乘法器自动将乘积结果左移一位。(3分)三、分析题(每小题6分,共12分)阅读下列程序,写出程序的总体功能和运行结果。假定x1、x2、x3、x4、y、a、x、y等变量单元已按顺序定义。1、STACK.usect“STACK”,10H2、STACK.usect“STACK”,10HTable:.word3,5,4,5.data.texttable:.worda1,a2,a3,a4start:STM#0,SWWSR.wordx1,x2,x3,x4STM#STACK+10H,SP.textSTM#x1,AR1start:STM#0,SWWSRRPT#3STM#STACK+10H,SPMVPDtable,*AR1+STM#a,AR1CALLMODERPT#7End:BendMVPDtable,*AR1+MODE:LD@x1,TCALLMODEMPY@x3,BEnd:BendLD@x2,TMODE:STM#a,AR1MAC@x4,BSTM#x,AR2STLB,@ySTM#2,AR3STHB,@y+1LD*AR1+,TRETMPY*AR2+,A.endloop:LD*AR1+,TMPY*AR2+,BMAXABANZloop,*AR3-STLA,@yRET.end1、y=x1*x3+x2*x42、求ai*xi(i=1,2,3,4)中的最大值(6分)(6分)四、应用题(本大题共14分)假设目标存储器的配置为,程序空间:EPROME000H~FFFFH(片外),数据空间:SPRAM0060H~007FH(片内),DARAM0080H~017FH(片内),试编写连接器命令文件,将example.obj和vectors.obj中的.text、.data、.bss、STACK、.vectors段映射到对应的存储器空间。ectors.objexample.obj-oexample.out(4分)-mexample.map-estartMEMORY{PAGE0:EPROM:org=0E000h,len=100hVECS:org=0FF80h,len=04hPAGE1:SPRAM:org=0060h,len=20hDARAM:org=0080h,len=100h}(5分)SECTIONS{.text:>EPROMPAGE0.data:>EPROMPAGE0.bss:>SPROMPAGE1STACK:>DARAMPAGE1.vectors:>VECSPAGE0}五、编程题(本大题共14分)六、试编写|被除数|≥|除数|,且商为整数的除法运算程序,完成12384÷512的运算。程序内容包括符号的处理。.bssnum,1.bssden,1.bssquot,1.datatable:.word12384.word512(4分).textstart:STM#num,AR1RPT#1MVPDtable,*AR1+LD@den,16,AMPYA@num(5分)ABSASTHA,@denLD@num,AABSARPT#15
本文档为【大学stl期末试题 (23页)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥16.9 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
万用文库
暂无简介~
格式:doc
大小:32KB
软件:Word
页数:0
分类:
上传时间:2020-06-28
浏览量:157