工学

单选题下面代码是申明EPCSDK.dll中的打开和关闭串口的函数,请指出里面包含()处错误--[DllImport(“EPCSDK.dll”)]--publicstaticexternIntPtrOpenComm(intportNo);--[DllImport(“EPCSDK.dll”)]--publicstaticexternvoidCloseComm();A 1B 2C 3D 4

题目
单选题
下面代码是申明EPCSDK.dll中的打开和关闭串口的函数,请指出里面包含()处错误--[DllImport(“EPCSDK.dll”)]--publicstaticexternIntPtrOpenComm(intportNo);--[DllImport(“EPCSDK.dll”)]--publicstaticexternvoidCloseComm();
A

1

B

2

C

3

D

4

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

阅读以下说明和C函数代码,回答问题并将解答写在对应栏内。

【说明】

著名的菲波那契数列定义式为

f1=1 f2=1 fn=fn-1+fn-2 (n=3,4,…)

因此,从第1项开始的该数列为1,1,2,3,5,8,13,21,…。函数fibl和fib2分别用递归方式和迭代方式求解菲波那契数列的第n项(调用fib1、fib2时可确保参数n获得一个正整数)。

【C函数代码】

函数fib1和fib2存在错误,只需分别修改其中的一行代码即可改正错误。

(1)函数fib1不能通过编译,请写出fib1中错误所在行修改正确后的完整代码。

(2)函数fib2在n≤2时不能获得正确结果,请写出fib2中错误所在行修改正确后的完整代码。


正确答案:(1) return fib1(n-1)+fib1(n-2);或return(fib1(n-1)+fib1(n-2)); (2) long f=1;或long f=(long)1;或long f=1L;
(1) return fib1(n-1)+fib1(n-2);或return(fib1(n-1)+fib1(n-2)); (2) long f=1;或long f=(long)1;或long f=1L; 解析:函数fib1不能通过编译,原因在于语句“fib1(n)=fib1(n-1)+fib1(n-2)”出错,该语句中fib1(n)、fib1(n-1)、fib1(n-2)都是函数调用,由于fib1是返回长整型数据的函数,所以不能为函数调用fib1(n)赋值。该语句处应将fib1(n-1)+fib1(n-2)的值作为返回值,形式为“returnfib1(n-1)+fib1(n-2)”。
在函数fib2中,for语句从i等于3开始循环,用于计算菲波那契数列第3项及以后各项的值。对于n等于1或2,for语句的循环体并不执行,因此对于第1、2项数列值,最后返回的f值是不确定的,为f赋初值1即可纠正该错误。

第2题:

下面使用DWR的代码中,()存在错误。

A.A处

B.B处

C.C处

D.D处


参考答案:C

第3题:

下面关于web窗体的代码隐藏页模型的说法错误的是( )。

A、显示界面的代码包含于aspx文件中

B、逻辑处理代码包含于aspx.cs文件中

C、代码隐藏类使用partial关键字声明

D、代码隐藏类使用sealed关键字声明


参考答案:D

第4题:

试题四(共 15 分)

阅读以下说明和 C 函数代码,回答问题并将解答写在答题纸的对应栏内。

[说明]

著名的菲波那契数列定义式为

f1 = 1 f2 = 1 fn = fn-1 + fn-2 (n = 3,4,…)

因此,从第 1 项开始的该数列为 1,1,2,3,5,8,13,21,…。函数 fib1 和 fib2 分别用递归方式和迭代方式求解菲波那契数列的第 n 项(调用 fib1、fib2 时可确保参数 n 获得一个正整数) 。

[C函数代码]

[问题 1](6 分)

函数 fib1 和 fib2 存在错误,只需分别修改其中的一行代码即可改正错误。

(1)函数 fib1 不能通过编译,请写出 fib1 中错误所在行修改正确后的完整代码;

(2)函数 fib2 在n≤2 时不能获得正确结果,请写出 fib2 中错误所在行修改正确后的完整代码。

[问题 2](3 分)

将函数 fib1 和 fib2 改正后进行测试,发现前 46 项都正确,而第 47 项的值是一个负数,请说明原因。

[问题 3](6 分)

函数 fib1、fib2 求得菲波那契数列第 n 项(n>40)的速度并不相同,请指出速度慢的函数名,并简要说明原因。


正确答案:


第5题:

下面说法正确的是( )。A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方 SXB

下面说法正确的是( )。

A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方

B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方

C.类的内联函数必须在类体内定义

D.类的内联函数必须在类体外通过加关键字inline定义


正确答案:B
B。【解析】内联函数用inline修饰,用于取代C语言中的宏定义。inline是建议机制而不是强制机制,也就是说,程序员可以指定任意函数为inline函数,但是编译器会根据系统情况来决定是否将其inline处理。对于较大的函数,编译器往往会取消其inline特性。inline函数的特点之一就是执行速度快,其实质是在编译时将函数的目标代码插入到每个调用该函数的地方,从而没有出栈入栈、保护现场等开销,提高了效率。在类体内定义的成员函数,自动被编译器当做内联函数处理,在类体外定义的成员函数,如果用inline修饰,则编译器也认为是一种内联建议。

第6题:

请认真阅读以下关于某传输系统的技术说明、状态转换图及C++代码,根据要求回答问题1~问题2。

[说明]

传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、 StayOpen(保持打开)和Closing(正在关闭)5种状态。触发状态的转换事件有click、complete和timeout3种。事件与其相应的状态转换如图7-15所示。

下面的[C++代码1]与[C++代码2]分别用两种不同的设计思路对传输门进行状态模拟,请填补代码段中的空缺语句。

[C++代码1]

请将以上[C++代码1]与[C++代码2]程序段中的(1)~(7)空缺处的语句填写完整。


正确答案:这是一道要求读者掌握状态转换图的程序设计与实现的综合题。本试题的解答思路如下。 根据(1)空缺处所在的程序段给出的注释信息“发生crick事件时进行状态转换”可知(1)空缺处所在的方法为click表示当发生crick事件时应该发生什么状态转换。找出传输门响应事件与其状态转换图(见图7-15)与crick事件相关的内容并特别注意箭头所指的方向。由于发生click事件前的状态CLOSED、CLOSING分别跳转到状态OPENING因此(1)空缺处所填写的内容是“state==CLOSED‖state==CLOSING”。 同理由图7-15所示中的状态转换关系可知发生click事件前的状态OPENING、STAYOPEN分别跳转到状态CLOSING即(2)空缺处所填写的内容是“state==OPENING‖state==STAYOPEN”;发生 click事件前的状态OPEN跳转到状态STAYOPEN即(3)空缺处所填写的内容是“state==OPEN”。 仔细阅读[C++代码2]程序段由语句private DoorState state=CLOSED;可知类Door的state成员变量用于记录类Door所处的状态而state变量的类型为Doorstate*。由语句“virtual void click() {}”、“virtual void complete() {}”和“virtual void timeout() {}”可知Doorstate中分别具有click、timeout和 complete方法用来响应对应的事件。根据(4)空缺处所在程序段“void Door∷click()”可得(4)空缺处所填写的内容是“state->click()”。 同理根据(5)空缺处所在程序段“void Door∷timeout()”可得(5)空缺处所填写的内容是“state->timeout()”;根据(6)空缺处所在程序段“void Door∷complete()”可得(6)空缺处所填写的内容是“state->complete()”。 根据(7)空缺处所在程序段给出的注释信息“定义一个基本的Closed状态”和语句“void DoorClosed∷click()”可知(7)空缺处所填写的内容与传输门当前状态为CLOSED且发生Click事件时状态的迁移有关。结合如图7-16所示中的状态转换关系可知在Click事件下CLOSED状态将迁移到 OPENING因此(7)空缺处应该将传输门的状态设置为OPENING。由于Doorstate变量存储了当前其存储的传输门的实例因此可直接调用其方法setState设置状态。同时考虑到传输门的状态采用类的实例变量表示故(7)空缺处所填写的内容为“door->setState(door->OPENING)”。
这是一道要求读者掌握状态转换图的程序设计与实现的综合题。本试题的解答思路如下。 根据(1)空缺处所在的程序段给出的注释信息“发生crick事件时进行状态转换”可知,(1)空缺处所在的方法为click,表示当发生crick事件时应该发生什么状态转换。找出传输门响应事件与其状态转换图(见图7-15)与crick事件相关的内容,并特别注意箭头所指的方向。由于发生click事件前的状态CLOSED、CLOSING分别跳转到状态OPENING,因此(1)空缺处所填写的内容是“state==CLOSED‖state==CLOSING”。 同理,由图7-15所示中的状态转换关系可知,发生click事件前的状态OPENING、STAYOPEN分别跳转到状态CLOSING,即(2)空缺处所填写的内容是“state==OPENING‖state==STAYOPEN”;发生 click事件前的状态OPEN跳转到状态STAYOPEN,即(3)空缺处所填写的内容是“state==OPEN”。 仔细阅读[C++代码2]程序段,由语句private DoorState state=CLOSED;可知,类Door的state成员变量用于记录类Door所处的状态,而state变量的类型为Doorstate*。由语句“virtual void click() {}”、“virtual void complete() {}”和“virtual void timeout() {}”可知,Doorstate中分别具有click、timeout和 complete方法用来响应对应的事件。根据(4)空缺处所在程序段“void Door∷click()”可得,(4)空缺处所填写的内容是“state->click()”。 同理,根据(5)空缺处所在程序段“void Door∷timeout()”可得,(5)空缺处所填写的内容是“state->timeout()”;根据(6)空缺处所在程序段“void Door∷complete()”可得,(6)空缺处所填写的内容是“state->complete()”。 根据(7)空缺处所在程序段给出的注释信息“定义一个基本的Closed状态”和语句“void DoorClosed∷click()”可知,(7)空缺处所填写的内容与传输门当前状态为CLOSED且发生Click事件时状态的迁移有关。结合如图7-16所示中的状态转换关系可知,在Click事件下CLOSED状态将迁移到 OPENING,因此(7)空缺处应该将传输门的状态设置为OPENING。由于Doorstate变量存储了当前其存储的传输门的实例,因此可直接调用其方法setState设置状态。同时考虑到传输门的状态采用类的实例变量表示,故(7)空缺处所填写的内容为“door->setState(door->OPENING)”。

第7题:

(1)将自由表“股票代码”添加到“投资管理”数据库中。

(2)为表“股票代码”建立一个主索引(升序),索引名和索引表达式均为“股票代码”。

(3)为表“股票代码”设定有效性规则:股票代码第一位必须以0或6开头,错误提示信息是“股票代码必须以0或6开头”。

(4)打开表单文件“bd1”,请修改“登录”命令按钮的标题为关闭。


正确答案:
【考点指引】本大题主要考查了添加自由表、数据表的索引、有效性规则建立的基本操作以及命令按钮的Caption属性的修改。
(1)【操作步骤】
①选择【文件】→【打开】命令,或直接单击工具栏上的“打开”图标,在弹出的对话框中选择要打开的数据库文件“投资管理.dbc”。
②在“数据库设计器”中,单击右键选择“添加表”,在“打开”对话框中选择表“股票代码”,单击“确定”按钮将自由表“股票代码”添加到数据库“投资管理”中。
(2)【操作步骤】
在数据库设计器中,选择表“股票代码”,选择【数据库】→【修改】命令,打开表设计器修改表“股票代码”结构,在“股票代码”表设计器中的“索引”选项卡的“索引名”中输入“股票代码”,选择索引类型为“主索引”,索引表达式为“股票代码”。
(3)【操作步骤】
①在“股票代码”表设计器中的“字段”选项卡下,选择“股票代码”字段,在“字段有效性”的“规则”文本框中输入“LEFT(股票代码,1)=”0”OR LEFT(股票代码,1)="6"”,“信息”文本框中输入“"股票代码必须以0或6开头"”,单击“确定”按钮关闭表设计器并保存表“股票代码”结构。
(4)【操作步骤】
①选择【文件】→【打开】命令,在“打开”对话框中的“文件类型”下拉列表框中选择“表单”,选择“bd1.sex”,单击“确定”按钮,打开表单设计器。
②在表单设计器中,选择“登录”命令按钮,在命令按钮属性窗口中将“Caption”属性值修改为“关闭”,然后关闭表单设计器并保存表单"bd1”。

第8题:

请仔细阅读以下关于某传输系统的技术说明、状态转换图及Java程序,根据要求回答问题1~问题2。

[说明]

传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、 StayOpen(保持打开)和Closing(正在关闭)5种状态。触发状态的转换事件有click、complete和timeout3种。事件与其相应的状态转换如图7-16所示。

下面的[Java代码1]与[Java代码2]分别用两种不同的设计思路对传输门进行状态模拟,请填补代码段中的空缺语句。

[Java代码1]

请将以上[Java代码1]与[Java代码2]程序段中,(1)~(7)空缺处的语句填写完整。


正确答案:这是一道要求读者掌握状态转换图的程序设计与实现的综合题。本试题的解答思路如下。 根据(1)空缺处所在的程序段给出的注释信息“发生click事件时进行状态转换”可知(1)空缺处所在的方法为click表示当发生click事件时应该发生什么状态转换。找出传输门响应事件与其状态转换图(见图7-16)与click事件相关的内容并特别注意箭头所指的方向。由于发生click事件前的状态 CLOSED、CLOSING分别跳转到状态OPENING因此(1)空缺处所填写的内容是“state==CLOSED‖state ==CLOSING”。 同理由图7-16所示中的状态转换关系可知发生click事件前的状态OPENING、STAYOPEN分别跳转到状态CLOSING即(2)空缺处所填写的内容是“state==OPENING‖state==STAYOPEN”;发生click事件前的状态OPEN跳转到状态STAYOPEN即(3)空缺处所填写的内容是“state==OPEN”。 仔细阅读[Java代码2]程序段由语句private DoorState state=CLOSED;可知类Door的state成员变量用于记录类Door所处的状态而state变量的类型为Doorstate。由语句“public void click() {}”、“public void complete() {}”和“public void timeout() {}”可知Doorstate中分别具有click、timeout和complete方法用来响应对应的事件。根据(4)空缺处所在程序段给出的注释信息“发生click事件时进行状态转换”可得(4)空缺处所填写的内容是“state.click()”。 同理根据(5)空缺处的注释信息——“发生timeout事件时进行状态转换”可得(5)空缺处所填写的内容是“state.timeout()”;根据(6)空缺处的注释信息——“发生complete事件时进行状态转换”可得(6)空缺处所填写的内容是“state.complete()”。 根据(7)空缺处所在程序段给出的注释信息“定义一个基本的Closed状态”和语句“public void click()”可知(7)空缺处所填写的内容与传输门当前状态为CLOSED且发生Click事件时状态的迁移有关。结合图7-16所示中的状态转换关系可知在Click事件下CLOSED状态将迁移到OPENING因此(7)空缺处应该将传输门的状态设置为OPENING。由于Doorstate变量存储了当前其存储的传输门的实例因此可直接调用其方法setState设置状态。同时考虑到传输门的状态采用类的实例变量表示故(7)空缺处所填写的内容为“door.setState(door.OPENING)”。
这是一道要求读者掌握状态转换图的程序设计与实现的综合题。本试题的解答思路如下。 根据(1)空缺处所在的程序段给出的注释信息“发生click事件时进行状态转换”可知,(1)空缺处所在的方法为click,表示当发生click事件时应该发生什么状态转换。找出传输门响应事件与其状态转换图(见图7-16)与click事件相关的内容,并特别注意箭头所指的方向。由于发生click事件前的状态 CLOSED、CLOSING分别跳转到状态OPENING,因此(1)空缺处所填写的内容是“state==CLOSED‖state ==CLOSING”。 同理,由图7-16所示中的状态转换关系可知,发生click事件前的状态OPENING、STAYOPEN分别跳转到状态CLOSING,即(2)空缺处所填写的内容是“state==OPENING‖state==STAYOPEN”;发生click事件前的状态OPEN跳转到状态STAYOPEN,即(3)空缺处所填写的内容是“state==OPEN”。 仔细阅读[Java代码2]程序段,由语句private DoorState state=CLOSED;可知,类Door的state成员变量用于记录类Door所处的状态,而state变量的类型为Doorstate。由语句“public void click() {}”、“public void complete() {}”和“public void timeout() {}”可知,Doorstate中分别具有click、timeout和complete方法用来响应对应的事件。根据(4)空缺处所在程序段给出的注释信息“发生click事件时进行状态转换”可得,(4)空缺处所填写的内容是“state.click()”。 同理,根据(5)空缺处的注释信息——“发生timeout事件时进行状态转换”可得,(5)空缺处所填写的内容是“state.timeout()”;根据(6)空缺处的注释信息——“发生complete事件时进行状态转换”可得,(6)空缺处所填写的内容是“state.complete()”。 根据(7)空缺处所在程序段给出的注释信息“定义一个基本的Closed状态”和语句“public void click()”可知,(7)空缺处所填写的内容与传输门当前状态为CLOSED且发生Click事件时状态的迁移有关。结合图7-16所示中的状态转换关系可知,在Click事件下CLOSED状态将迁移到OPENING,因此(7)空缺处应该将传输门的状态设置为OPENING。由于Doorstate变量存储了当前其存储的传输门的实例,因此可直接调用其方法setState设置状态。同时考虑到传输门的状态采用类的实例变量表示,故(7)空缺处所填写的内容为“door.setState(door.OPENING)”。

第9题:

试题二 ( 共15 分)

阅读以下问题说明、C 程序和函数,将解答填入答题纸的对应栏内。

【 问题1 】

分析下面的C 程序,指出错误代码(或运行异常代码)所在的行号。

【C程序】

【 问题2】

函数inputArr(int a[], int n)的功能是输入一组整数(输入0或输入的整数个数达到n时结束)存入数组 a,并返回实际输入的整数个数。函数 inputArr 可以成功编译。但测试函数调用inputArr后,发现运行结果不正确。

请指出错误所在的代码行号,并在不增加和删除代码行的情况下进行修改,写出修改正确后的完整代码行,使之符合上述设计意图。

【C 函数】


正确答案:
试题二(15分)问题15,或arrChar=“test”3分7,或*p=’0’;3分以上解答不分次序问题2

第10题:

阅读以下问题说明、C 程序和函数,将解答填入答题纸的对应栏内。
【问题 1】
分析下面的C 程序,指出错误代码(或运行异常代码)所在的行号。
【C 程序】

【问题 2】
函数inputArr(int a[], int n)的功能是输入一组整数(输入0或输入的整数个数达到n时结束)存入数组 a,并返回实际输入的整数个数。函数 inputArr 可以成功编译。但测试函数调用inputArr后,发现运行结果不正确。
请指出错误所在的代码行号,并在不增加和删除代码行的情况下进行修改,写出修改正确后的完整代码行,使之符合上述设计意图。
【C 函数】


答案:
解析:
【问题1】
5,或arrChar="test"
7,或*P='0';
【问题2】

【解析】

本题考查 C 程序编写和调试中常见错误的识别和改正。
【问题1】在C语言中,指针表示内存单元的地址,指针变量可用于存储指针类 型的值,即内存单元的地址值。变量的值在程序运行过程中允许修改,而常量则不允许修改。可以令指针指向一个变量或常量,但若指针指向一个常量,则不允许通过指针修改该常量。
第 5 行代码有错,即对数组名arrChar的赋值处理是错误的。在 C语言中,数组名是表示数组空间首地址的指针常量,程序中不允许对常量赋值。
第 7行代码有错,在第 6行中,通过 p = "testing"使指针变量指向了一个字符串常量,此后可以再令指针 p指向其他字符或字符串,但不能通过指针修改字符串常量的内容。
【问题2】该函数中出现的错误是编写 C程序时的常见错误。scanf 是 C标准库函数中的格式化输入函数,其原型如下:

int scanf(char *format ,...);

使用时,第一个实参是格式控制串,之后的实参是地址1,地址 2,…
在本题中,要求以十进制整数格式输入一个整数并存入 a[k] ,数组元素a[k]实质上一个整型变量,必须用"&"求得 a[k]的地址作为实参调用 scanf 函数,因此,第 4行出错,正确代码应为"scanf("%d&a[k]);"。
C程序中将相等运算符"="误用为赋值运算符"="也是常见的一个错误,由于"="也是合法的运算符并且 C语言中用 0 和非 0来表示逻辑假和逻辑真,因此在应产生逻辑值的地方产生了其他数值也可以,因此该错误通常只能用人工检查和排除。第 6 行的正确代码应为"if (k==n)break;"。
在该程序中,结束循环的一个条件是k等于n,另一个条件是输入的整数为0。另 外,do-whi1e的循环条件为真(非0)时要继续循环,因此,循环条件应该是判断输入的值不等于 0。观察循环体中与数组元素有关的部分,如下所示:

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

更多相关问题