搜档网
当前位置:搜档网 › 基于FlexBison的高级解释器设计及实现

基于FlexBison的高级解释器设计及实现

基于FlexBison的高级解释器设计及实现
基于FlexBison的高级解释器设计及实现

课程设计3 基于Flex/Bison的高级解释器设计及实现

3.1 需求分析

3.1.1 问题定义

1.使用flex和bison开发了一个具有全部功能的桌面计算器,能够支持变量,

过程,循环和条件表达式,使它成为一个虽然短小但是具有现实意义的编译器。

2.重点学习抽象语法树的用法,它具有强大而简单的数据结构来表示分析。

3.1.2 功能描述

1.计算器具体需要实现的功能:

a)变量命名;

b)实现赋值功能;

c)实现比较表达式(大于、小于、等于等等)

d)实现if/then/else和do/while的流程控制;

e)用户可以自定义函数;

f) 简单的错误恢复机制。

2. 编写 Flex/Bison源文件,实现C 语言的语法分析功能,最后上机调试。

3. 要求编写一个测试程序:

首先自定义两个函数sq和avg,sq函数使用Newton方法来迭代计算平方根;avg函数计算两个数值的平均值。

利用定义好的函数进行计算,得到计算结果并显示出来。

4.根据习题1的要求,修改fb3-2相关代码;

实现实现以下自定义函数,并保存为fb3-3。

函数示例:

let sq(n){e=1; while (|((t=n/e)-e)>.001) do {e=avg(e,t);}}

let avg(a,b){(a+b)/2;}

let max(a,b) { if(a>b) then a; else b; }

let max3(a,b,c) { if(a>b) then { if(a>c) then a; else c; }

else { if(b>c) then b; else c; } }

3.1.3 开发环境及工具介绍

1、Window环境下载Visual Studio之后,利用其命令提示窗口进行操作。下载并安装Flex。

2、vs2010的编译器cl.exe。

3、flex:词法分析器

Flex是用来生成程序的工具,他们所生成的程序能够处理结构化输入,最初的Flex是用来生成编译器的,但是后来他们被证明在其他领域也非常有效。Flex是一个SourceForge项目。其依赖于GNU m4宏处理器。Linux和BSD都应该有m4,对于Windos用户来说,Flex被包含在Cygein Linux模拟环境中。

什么是FLEX?它是一个自动化工具,可以按照定义好的规则自动生成一个C 函数yylex(),也成为扫描器(Scanner)。这个C函数把文本串作为输入,按照定义好的规则分析文本串中的字符,找到符合规则的一些字符序列后,就执行在规则中定义好的动作(Action)。例如在规则中可以这样定义:如果遇到一个换行字符\n,那么就把行计数器的值加一。Flex文件就是一个文本文件,内容包括定义好的一系列词法规则。

4、bison:语法分析器

GNU bison 是属于 GNU 项目的一个语法分析器生成器。Bison 把一个关于“向前查看从左到右最右”(LALR) 上下文无关文法的描述转化成可以分析该文法的 C 或 C++ 程序。它也可以为二义文法生成“通用的从左到右最右”(GLR)语法分析器。

Bison是一种通用目的的分析器生成器。它将LALR(1)上下文无关文法的描述转化成分析该文法的C程序。一旦你精通Bison,你可以用它生成从简单的桌面计算器到复杂的程序设计语言等等许多语言的分析器。

Bison 基本上与 Yacc 兼容,并且在 Yacc 之上进行了改进。它经常和Flex (一个自动的词法分析器生成器)一起使用。

此软件的源代码是可自由获得的,在 GPL 下发布。

3.2 系统概要设计

3.2.1 系统体系结构

本实验计算器系统是基于抽象语法树的改进的计算器,在fb3-3.h 的文件中实现声明部分,在fb3-3.l 文件中实现计算器对应的词法分析,在fb3-3.y 文件实现计算器的语法语义分析部分,在fb3-3funcs.c 文件对应的是相应的计算器的C 语言的代码。之后利用Visual Studio 命令提示实现计算器的功能。结构图如下:

声明部分计算器词法分析语法语义分析C 语言代码fb3-3.funcs.c

fb3-3.y

fb3-3.l

fb3-3.h

图3-1 系统体系结构图

计算器系统流程图:

开始

计算式

词法分析器读取

标识符

语法分析器处理

判断节点类型

建立相应节点

求值

输出结果

释放

结束

图3-2 系统流程图

3.2.2 系统模块划分

(1)fb3-3.h文件头声明部分

我们要做开始声明部分,在.h 头文件中我们可以用以下语句来定义抽象语法树的struct ast {int nodetype;struct ast *l;struct ast *r;}; 且所有

节点都有公共的初始 nodetype。而删除和释放抽象语法树可以用语句 void treefree(struct ast *)来实现即可。常量使用 numval,符号引用使用 symref 赋值使用 symasgn,它有一个指向被赋值符号的指针和使用抽象语法树表示的值;

(2)fb3-3.l文件词法分析部分

词法分析器中设计六个比较操作符都返回一个带有字面值以便于区分的CMP 记号,其中这六个关键字和四个内置函数通过文字模式加以识别,它们放在通用模式之前以便于在通用模式之前进行匹配;利用符号表进行词法分析,其中符号表中记录输入中使用的名称以及常用的符号。在这部分需要注意与C语言的交叉使用,对于每一类的词法分析须严格按照正则表达式来实现。

(3)fb3-3.y文件语法分析部分

语法分析器的设计,其中在语法分析器的最后提供了小部分错误恢复机制,这让我们有可能在错误发生时把语法分析器恢复到可以继续工作的状态;在这一部分我们为每个表达式建立了抽象语法树,以抽象语法树为单位进行计算,并打印出结果,并释放语法树。在这一部分需考虑移进/规约冲突和操作符的优先级,一定要在此代码中区分语句(stmt)和表达式(exp)。

(4)fb3-3funcs.c文件C语言代码部分

在这一部分的文件中语法分析器及.y文件需要调用其中的函数,创建语法树节点、分配节点进行填充、遍历抽象语法树。最后还要加一个辅助函数,正如《flex 与 bison》中所讲的一样,例程 treefree 的扩展版本会递归的遍历一颗抽象语法树并释放这棵树的所有节点。本计算器的核心例程是 eval,它用来计算分析器中构造的抽象语法树。我们采用深度优先遍历算法来计算表达式的值;

3.2.3系统的数据流图

在系统中,用户在输入要计算的内容后,先进行词法分析和语法分析,之后再判断用户要计算的类型是哪种四则运算,系统运算之后将结果返回给用户,数据流图如下: 用户计算器

词法分析

语法语义分析

进行计算用户

输入计算数据进行词法分析

进行语法分析

计算

运算结果返回用户 图3-3 系统数据流图

3.3 详细设计与实现

3.3.1 fb3-3..h 文件模块的设计与实现

在这部分中,主要是对整个系统中的头文件的说明。首先我们要做开始声明部分,在.h 头文件中我们可以用以下语句来定义抽象语法树的节点,且所有节点都有公共的初始nodetype 。而删除和释放抽象语法树可以用语句voidtreefree (struct ast *) 来实现即可。常量使用numval, 符号引用使用symref 赋值使用symasgn, 它有一个指向被赋值符号的指针和使用抽象语法树表示的值;在代码的一开始是说明与词法分析器的接口,其中的变量yylineno 来自词法分析器,接下来的部分用于构造抽象语法树,抽象语法树有多个节点组成,每个节点都有一个节点类型。不同的节点可以有不同的域,但是在这个文件中有八种不同类型的指针。之后一部分是对抽象语法树的操作,首先用eval 遍历抽象语法树,返

回它所代表的表达式的值,之后删除和释放抽象语法树。下一部分是对符号表的声明,其中symbol为变量名,func为函数体,syms为虚拟参数列表。之后建立一个符号列表,并将其作为参数列表。在这个计算器中,每个符号都有一个变量和一个用户自定义函数。value域用来保存符号的值,func域指向用抽象语法树表达的该函数的用户代码,而sym域指向任意多个虚拟参数的链表,这些参数也是符号。函数newsymlist和symlistfree创建和释放符号。

下面抽象语法树的声明:

struct ast *newast(int nodetype, struct ast *l, struct ast *r);

struct ast *newcmp(int cmptype, struct ast *l, struct ast *r);

struct ast *newfunc(int functype, struct ast *l);

struct ast *newcall(struct symbol *s, struct ast *l);

struct ast *newref(struct symbol *s);

struct ast *newasgn(struct symbol *s, struct ast *v);

struct ast *newnum(double d);

struct ast *newflow(int nodetype, struct ast *cond, struct ast *tl, struct ast *tr);

开始

建立符号表

建立固定大小

的符号表

声明符号表

声明词法分

析器接口

声明抽象语法树

结束

图3-4 声明文件流程图

开始

识别运算符号

处理浮点数

单一字符操作符

比较操作符

关键字

内置函数

名字

结束

图3-5 词法分析程序流程图

这一部分主要是进行语法和语义分析。语法分析器的设计,其中在语法分析器的最后提供了小部分错误恢复机制,这让我们有可能在错误发生时把语法分析器恢复到可以继续工作的状态;在在代码的一开始%union定义了很多种符号值,符号值可以是符号表中特定用户符号、符号列表、比较子类型和函数记号的指针。FUNC表示内置函数,它的值确定了具体的某个函数,另外6个保留字,从IF到Let。记号CMP是6种比较操作符之一,它的值确定了具体的操作符。优先级声明列表从新的CMP和=操作符开始,%start声明定义了顶层规则。

接下的部分区分了stmt和exp,语句是一个控制流或者是一个表达式。每当规则匹配到一条语句时,他将调用相应的程序去创建合适的抽象语法树。且list的定义是右递归的。新的CMP规则处理6种比较操作符,它使用CMP的值来判断当前的操作符,还有一条赋值规则来创建赋值节点。

这一部分的程序流程图如下图所示:

开始

定义符号值

声明记号

规定计算语法

表达式的语法

顶层规划

结束

图3-6 语法部分流程图

在这一部分,用C 语言进行创建抽象语法树和符号列表的过程,代码中对每一个节点进行分配,然后基于节点类型恰当地填充各个域,利用treefree 递归地遍历一棵抽象语法树,同时释放这棵树的所有节点。计算器的核心是函数eval ,他计算语法分析器中构造的抽象语法树。最后还要加一个辅助函数,正如《flex 与bison 》中所讲的一样,例程treefree 的扩展版本会递归的遍历一颗抽象语法树并释放这棵树的所有节点。本计算器的核心例程是eval ,它用来计算分析器中构造的抽象语法树。我们采用深度优先遍历算法来计算表达式的值;

double

eval(struct ast *a)

{

double v;

if(!a) {

yyerror("internal error, null eval");

return 0.0;

}

switch(a->nodetype) {

/* constant */

case 'K': v = ((struct numval *)a)->number; break;

/* name reference */

case 'N': v = ((struct symref *)a)->s->value; break;

/* assignment */

case '=': v = ((struct symasgn *)a)->s->value =

eval(((struct symasgn *)a)->v); break;

/* expressions */ If 语句

==语句块语句块

a 10 hong\n Printf piyo\n

Printf

图3-7 语法分析树图

例如:分析 fred = 14 + 23 - 11 + 7 statement

Name

fred =+expression

expression Number

7

expression -Number

11

expression +Number

23

Number

14

图3-8 抽象语法树

3.4 系统分析与测试

3.4.1 测试用例设计

(1)简单的计算器,只能进行简单的四则运算,如(1+2)-(2*6)、1+2-3*2/5;

C:\GnuWin32\bin>fb3-1.tab.exe

> |-1

= 1

> |123

= 123

> (1+2)-(2*6)

= -9

> 1+2-3*2/5

= 1.8

>

(2)使用内置函数sqrt(n)、 exp(n) ,log(n)

C:\GnuWin32\bin>fb3-2.tab.exe

> sqrt(10)

= 3.162

> exp(2)

= 7.389

> log(7.389)

= 2

(3)定义函数sq(n)、avg(a, b),用于计算平方根

C:\GnuWin32\bin>fb3-2.tab.exe

> let sq(n)=e=1; while |((t=n/e)-e)>.001 do e=avg(e,t);;

Defined sq

> let avg(a,b)=(a+b)/2;

Defined avg

> sq(10)

= 3.162

> sq(10)-sqrt(10)

= 0.000178

(4)第二次的改进的计算器,可以进行自定义函数的运算,而且语法更加贴近C语言;

定义函数sq(n)、avg(a, b),用于计算平方根

C:\GnuWin32\bin>fb3-2.tab.exe

> let avg(a,b){(a+b)/2;}

Defined avg

> let sq(n){e=1; while (|((t=n/e)-e)>.001) do {e=avg(e,t);}}

Defined sq

> sq(10);

= 3.162

> sq(10)-sqrt(10);

= 0.000178

定义函数max(a,b) ,用于求a,b的最大值

C:\GnuWin32\bin>fb3-2.tab.exe

> let max(a,b) { if(a>b) then a; else b; }

Defined max

> max(4,5);

= 5

> max(1,5);

= 5

> max(9,5);

= 9

定义函数max3(a,b,c) ,用于求a,b,c的最大值

> let max3(a,b,c) { if(a>b) then { if(a>c) then a; else c; } else { if(b>c) then

b; else c; } }

Defined max3

> max3(3,4,5);

= 5

> max3(3,9,5);

= 9

> max3(10,9,5);

= 10

4.2 测试结果

1.执行计算任务

定义函数sq(n)、avg(a, b),用于计算平方根

2.执行计算任务:

增加新的内置函数pow(a,n)计算一个数a的n次方

3.执行计算任务:

定义函数max(a,b) ,用于求a,b的最大值

3.执行计算任务:

定义函数max3(a,b,c) ,用于求a,b,c的最大值

结论

本文工作和成果

使用flex和bison开发了一个具有全部功能的桌面计算器,能够支持变量,过程,循环和条件表达式,使它成为一个虽然短小但是具有现实意义的编译器。本次实验我实现了一个基本计算器的功能,可以进行基本的四则运算,在一开始不会添加自定义函数的操作,在老师和同学的帮助下,实现了自定义函数的功能,使其语法规则变得比较简单明了。

系统不足与展望

本系统的不足是计算器的内置函数中只有简单的四则运算,没有其他类似于三角函数计算的函数,希望通过之后的进一步学习,可以实现这一功能。

习题07_Shell编程

习题07_Shell编程 一、单选 1. 下面哪个命令是用来定义shell的全局变量( D )。 A. exportfs B. alias C. exports D. export 2.在Shell脚本中,用来读取文件内各个域的内容并将其赋值Shell变量的命令是(D )。 A. fold B. join C. tr D. read 3. 当字符串用双引号(’’)括起来时,SHELL将(C )。 A. 解释引号内的特殊字符 B. 执行引号中的命令 C. 不解释引号内的特殊字符 D. 结束进程 4. 以下哪个环境变量表示当前路径( B )。 A. PATH B. PWD C. HOME D. ROOT 5. shell不仅是(用户命令的解释器),它同时也是一种功能强大的编程语言,(bash )是Linux的缺省shell。 6. 编写的Shell程序运行前必须赋予该脚本文件(执行)权限。 7. 对于Shell脚本程序,若输入参数数量多于9个,则程序遍历每个参数可通过使用(shift )命令实现。 8. 为脚本程序指定执行权的命令及参数是( chmod a+x filename )。 9. 在shell编程时,使用方括号表示测试条件的规则是:方括号两边必有(空格)。 10. 输入了Shell命令的部分字符后按( tab )键可补全其余部分。 11.改变命令提示符的环境变量是(PS1 )。 11. grep -E '[Hh]enr(y|ietta)' file的功能是:(在文件File中查找Henry、henry、Henrietta或henrietta)。 12. 如下为命令终端下的一个截图: 则,以下两句的执行结果是:(the home path is $HOME )。 path=‘the home path is $HOME’ echo $path 13. 以下为程序名为prog的程序内容。则sh prog a b c d的执行结果为( C )。 set A B C D shift shift echo $1 三、简答 1. 下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。

高级语言程序设计(VB)随堂练习答案DOC

高级语言程序设计(VB)随堂练习答案 第1章概述·1.1程序设计语言 当前页有1题,你已做1题,已提交1题,其中答对1题。 1. https://www.sodocs.net/doc/2914340707.html,是一种( )程序设计语言。 A. 面向事件 B. 面向属性 C. 面向对象 D. 面向过程 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 第1章概述·1.2程序设计 当前页有2题,你已做2题,已提交2题,其中答对2题。 1.把源程序代码翻译为目标程序代码可以使用的翻译方式为( )。 A. 嵌入方式 B. 运行方式 C. 连接方式 D. 解释方式或编译方式 答题: A. B. C. D. (已提交) 参考答案:D 问题解析: 2.编译程序时出现的错误称为( ) 错误。 A. 语法或编译 B. 运行 C. 逻辑 D. 计算 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 第1章概述·1.3建立简单控制台应用程序 当前页有3题,你已做3题,已提交3题,其中答对3题。 1.存储数据不属于数据处理功能。

答题:对. 错. (已提交) 参考答案:× 问题解析: 2.控制台应用程序至少有一个Main过程。 答题:对. 错. (已提交) 参考答案:√ 问题解析: 3.上机时,程序编译和连接成功后,系统自动生成以.exe为扩展名的可执行文件。 答题:对. 错. (已提交) 参考答案:√ 问题解析: 第2章基本数据类型与表达式·2.1基本字符集和词汇集 当前页有3题,你已做3题,已提交3题,其中答对3题。 1.下面选项中()是算术运算符。 A. % B. & C. Mod D. And 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 2.下面不合法的标识符是()。 A. Go_To B. Integer C. 姓名 D. Int1 答题: A. B. C. D. (已提交) 参考答案:B 问题解析: 3.在程序设计语言系统中具有固定语法含义的符号串称为标识符。 答题:对. 错. (已提交) 参考答案:× 问题解析: 第2章基本数据类型与表达式·2.2 基本数据类型

《高级语言程序设计》期末考试试卷

武汉大学计算机学院 2006-2007学年度第2学期2006级 《高级语言程序设计》期末考试试卷A卷 姓名:学号:专业: 说明:开卷考试,答案请全部写在答题纸上,写在试卷上无效。 一.单项选择题:(选择最合适的答案填空,每小题2分,共16分) ()1、在执行以下程序时,从键盘上输入9,则该程序输出结果是__________。 #include int main( ) { int n; scanf("%d",&n); if(n++<10) printf("%d\n",n); else printf("%d\n",n--); return 0; } A、8 B、9 C、10 D、11 ()2、表达式0156637&~0777的结果是____________。 A、0156000 B、156000 C、0637 D、637 ()3、假设有如下定义:int m=1,n=1; 则执行表达式(m=’5’<’3’)&&(n=’7’>’9’)后,m和n的值分别是_____________________。 A、1和1 B、1和0 C、0和1 D、0和0 ()4、表达式-11%3+7/2的结果是____________。 A、5.5 B、5 C、1.5 D、1 ()5、设有如下宏定义: #define BOOK(x) 8-x 则执行赋值语句v=BOOK(2)*BOOK(4); /*v为int型变量*/ 后,变量v的值为。 A、-12 B、0 C、24 D、44 ()6、设有如下定义: int a[6][4]; int (*p)[4]; p=a; 则与表达式*p+3等价的选项是_________。 A、a[0][3] B、&a[0][3] C、a[3][0] D、&a[3][0] ()7、假设有以下定义: static char *a=”h\te\nY\0W\0o\b”;

interp__linux命令中文解释.html

器。还有,没有通过它可以引用在应用中建立的第一个解释器的全局名字。这两种限制的目的都是为了安全。 INTERP 命令 COMMAND COMMAND COMMAND 使用 interp interp interp 命令建立、删除、和操纵从解释器,并在解释器之间共享或转换通道。依赖于 option 参 数,它可以有下列一些形式: interp interp alias alias alias srcPath srcCmd 返回一个 Tcl 列表,它的元素是与叫做 srcCmd 的别名有关的 targetCmd 和 arg s(在建立别名时指定所有这些值;在从解释器中实际的源命令如果被重命名的话可能与 srcCmd 不同)。 interp interp alias alias alias srcPath srcCmd {}{}{} 删除在从解释器中用 srcPath 标识的给 srcCmd 的别名。srcCmd 引用在其下建立别名的名字;如果 源命令已经被重命名,则删除重命名后的命令。 interp interp alias alias alias srcPath srcCmd targetPath targetCmd ?arg arg ...? 这个命令在一个从解释器和其他解释器之间建立一个别名(关于在一个从解释器和它的主解释器之间建立别名请参见下面的 alias alias alias 从命令)。在这个命令中,两个从解释器可以在调用这个命令的解释器底下的解释器层次中的任何位置。SrcPath 和 srcCmd 标识这个别名的来源。SrcPath 是一个 Tcl 列表,它的元素选择一个特定的解释器。例如,“a b ”标识一个解释器 b b ,它是解释器 a a 的一个从解释器,a 解释器是调用(命令)的解释器的一个从解释器。一个空列表指定调用这个命令的解释器。srcCmd 给出一个新命令的名字,将在源解释器中建立它。TargetPath 和 targetCmd 指定一个目标解释器和命令,和 arg 参数,如果有的话,给 targetCmd 指定增补的参数,它们在 srcCmd 调用中指定的所有参数的前面。TargetCmd 在这个调用的时候可以被取消定义(undefine)了,或者它已经存在了;它不由这个命令来建立。别名安排在源解释器中调用给定源命令的时候在目标解释器中调用给定目标命令。详情参见下面的 ALIAS INVOCATION (别名调用)章节。 interp interp aliases aliases aliases ?path ? 这个命令返回给在用 path 表示的解释器中定义的别名的所有源命令的名字一个 Tcl 列表。 interp interp create create create ?--safe safe? ?------? ?path ? 建立用 path 标识的一个从解释器和叫做从命令(slave command )的一个新命令。从命令的名字是 path 的最后一个成员。在其中建立新的从解释器和从命令的解释器由从 path 中去除最后一个成员所获得的路径来标识。例如,如果 path 是 a b c a b c 则一个新的从解释器和叫做 c c 的从命令建立在用路径 a b a b 标识的从解释器中。可以使用从命令先下面描述的那样操纵新解释器。如果省略了 path , Tcl 建立 interp interp x 形式的一个唯一的名字,这里的 x 是一个整数,并用于解释器和从命令。如果指定了 --safe 开关(或者主解释器是一个安全解释器),新的从解释器将建立成功能有限的一个安全解释器;否则从解释器将包含 Tcl 内置命令和变量的全集。使用 ------ 开关来标记开关的结束;如果路径 是象 --safe safe 这样的一个特殊的值的时候需要这个开关。这个命令的结果是新解释器的名字。一个从解释器的名字在它的主解释器的所有从解释器中必须是唯一的;如果在这个主解释器中用给定名字(标识)的一个从解释器已经存在则发生一个错误。 interp interp delete delete delete ?path ...? 删除用可选的 path 参数给出的零个或多个解释器,并且对于每个解释器,它还删除它的所有从解释器。这个命令还删除给每个被删除的解释器的从命令。对于每个 path 参数,如果叫这个名字的解释器不存在,这个名字将引发一个错误。 interp interp eval eval eval path arg ?arg ...? 这个命令用与 concat concat 命令相同的方式串联所有的 arg 参数,接着在用 path 标识的解释器中把结果字符串作为一个 Tcl 脚本来求值。把这个求值的结果(如果发生错误的话,包括象 errorInfo errorInfo 和 errorCode errorCode 变量这样的错误信息)返回给调用(命令)的解释器。 interp exists path 如果在这个主解释器中存在用 path 指定的从解释器则返回 11,否则返回 00。如果省略了 path ,使用调用(命令)的解释器。 interp expose path hiddenName ?exposedCmdName ? 在用 path 表示(denote)的解释器中,使隐藏的命令 hiddenName 暴露(expose),最终把它带回在一个新的exposedCmdName 名字之下(目前只接受没有任何:: 的一个全局名字空间名字)。如果有目标名字的一个暴露的命令已经存在,这个命令失败。隐藏命令的详情参见下面的HIDDEN COMMANDS (隐藏命令)章节。 interp interp hide hide hide path exposedCmdName ?hiddenCmdName ? 在用 path 表示(denote)的解释器中,使暴露的命令 exposedCmdName 隐藏,并把它重命名成隐藏命令 hiddenCmdName ,如果未给出 hiddenCmdName 则保持相同的名字。如果有目标名字的一个隐藏的命令已经存在,这个命令失败。目前 exposedCmdName 和 hiddenCmdName 二者不能不能包含名字空间限

《高级语言程序设计》复习题及答案

一、选择题 1.以下叙述正确的是( ): A)在C程序中,main函数必须位于程序的最前面 B) C程序的每行只能写一条语句 C) C语言使用库函数实现输入输出操作 D)注释中的拼写错误会影响编译结果 2、以下说法中正确的是() A) C语言程序总是从第一个的函数开始执行 B) C语言程序总是从main()函数开始执行 C)在C语言程序中,要调用的函数必须在main()函数中定义 D)C语言程序中的main()函数必须放在程序的开始部分 3、下列选项种说法正确的是( ) A)函数由声明部分和执行部分两部分组成 B)语言中main函数一定在程序的开始部分 C)C语言程序总是从第一个定义的函数开始执行 D)C程序的每行中只能写一条语句 4、设有说明:int a;float b; char c; double d; 则表达式1.3*a+2*b*c+d*(int) 2.6 值的类型为( )。 A)doubleB) char C) floatD) int 5、C语言的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( ) A)必须为字母 B)必须为下划线 C)必须为字母或下划线 D)可以是字母、数字和下划线中任一种字符 6、以下不正确的C语言标识符是( )。 A) ABC B) abc C)a_bc D) void 7、下列运算符中优先级最高的是( ) A)< B)+ C)&& D)!= 8、以下选项中属于C语言中合法关键字的是( ) A)Float B)abc C)int D)CASE 9、若x、i、j和k都是int型变量,计算下面表达式后,x的值为( ) x=(i=4,j=16,k=32) A)4 B)16 C)32 D)52 10、在C语言中,要求数据必须是整型的运算符是( ) A)/ B)+ + C)!=D) % 11、若整型变量x的值为8,则下列表达式中值为1的表达式是 A)x+=x-=x B) x%=x-1 C) x%=x%=3 D) x/=x+x 12、若w=1,x=2,y=3,z=4,则条件表达式“w > x? w : y< z ? y : z”的值是( ) A)4 B)3 C)2 D)1 13、有以下程序,程序运行后的输出结果是。 main() {inti=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k); }

《高级语言程序设计》答案

1. 输入两个整数,要求用两个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。#include int main() { int i,j,t; int max(int,int); int min(int,int); scanf("%d%d",&i,&j); if(i int main() { int max4(int,int,int,int); //对max4的函数声明 int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); //输入4个数 printf("max=%d\n",max4(a,b,c,d));//调用4个数中的最大者 return 0; } int max4(int a,int b,int c,int d) //定义max4函数 { int max2(int,int); //对max2的函数声明 return max2(max2(max2(a,b),c),d); //调用max2把作为函数值带回main函数} int max2(int a,int b) { return(a>b?a:b); //返回条件表达式的值,即a和b中的大者 } 3. 用递归调用的方法求5!。 #include int main() { int fac(int); int n; scanf("%d",&n);

高级语言程序设计期末考试试卷及答案(-E卷)

高级语言程序设计期末考试试卷及答案( E卷)2005-2006学年上学期考试科目: 考试类型:(闭卷)考试时间:120分钟 考试须知: 1.答案必须写在“答题卡”上,写在试卷上不得分。 2.必须在答题卡上正确填写班级、学号、姓名等内容。 一、选择题(共20小题,每小题1分) 1. 下列C常量中不合法的是( ) A.'\500' B.0500 C.'500' D."500" 2. C语言中,若对函数类型未加显示说明,则函数的隐含类型为()类型 A.void B.int C.空D.char 3. C语言程序的三种基本结构是() A. 嵌套结构、递归结构、顺序结构 B.递归结构、循环结构、转移结构 C. 顺序结构、选择结构、循环结构 D.循环结构、转移结构、顺序结构 4. 一个可执行C程序的开始执行点是() A.名为main()的函数B.包含文件的第一函数 C.程序中的第一个语句D.程序中的第一个函数 5. 下面程序段的执行结果是() int a=5, b=4, c=3; if(a>b>c) printf("a>b>c"); else printf("no"); A.a>b>c B.no C.编译错误D.运行错误

6. 合法的数组定义是( ) A .int a[] = “string ” B .int a[5] = {0,1,2,3,4,5} C .char a[] = {0,1,2,3,4,5} D .char s = “string ” 7. 在C 语言中,提供的合法关键字是( ) A .printf B .cher C .case D .Else 8. 在C 语言中,合法的字符常量是( ) A .’\081’ B .’\0’ C .’ab ’ D .”a ” 9. putchar 函数可以向终端输出一个( )。 A)字符串 B)实型变量值 C)整型变量表达式 D)字符或字符型变量 10. 在C 语言中,一个char 变量占( )字节。 A .1 B .2 C .4 D .8 11. 调用scanf(“%d,%d ”,&a,&b);时,正确的键盘输入是( ) A .12,23 B . a=12,b=23 C .12:23 D . 12 23 12. 若有int s[4] = {1,2,3,4};,则s[s[0]+ s[3]-s[2]] 的值是( ) A . 1 B . 2 C . 3 D . 4 13. 在C 语言中,一般1个float 类型变量占4个字节,则设float x[2][4];假设数组 x 开始于内存1000单元,则x[1][2]的存储始于( ) A.1004 B.1012 C.1020 D.1024 14. 下面对C 语言运算符的优先级叙述正确的是( )。 A . !(非) > 关系运算符 >算术运算符 > &&(与) > ||(或) > 赋值运算符 B . !(非) > 算术运算符 > 关系运算符 > &&(与) > ||(或) > 赋值运算符 C . 算术运算符 > 关系运算符 > !(非) > &&(与) > ||(或) > 赋值运算符 D . 算术运算符 >!(非) >关系运算符 > &&(与) > ||(或) > 赋值运算符 15. 若有代数式bc y x 32,则正确的C 语言表达式是( ) A . x^2*y/3*b*c B .x*x/b/c*y/3 C . x*x*y/3*b*c D .x^2*y/3/b/c

最全批处理命令学习资料【完美版】

一:批处理文件 批处理文件是扩展名为·bat或·cmd的文本文件,包含一条或多条命令,由DOS或Windows系统内嵌的命令解释器来解释运行。 批处理的本质,是一堆DOS命令按一定顺序排列而形成的集合。 二:常用命令: 1.echo 和 @: @ #关闭单行回显 echo off #从下一行开始关闭回显 @echooff #从本行开始关闭回显,一般批处理第一行都是这个echo on #从下一行开始打开回显 echo #显示当前是echo off 状态还是 echo on 状态echo. #输出一个”回车换行”,空白行 #(同echo, echo; echo+ echo[ echo]echo /echo") 2.errorlevel echo???%errorlevel% 每个命令运行结束,可以用这个命令行格式查看返回码 默认值为0,一般命令执行出错会设 errorlevel 为1 目录操作类命令: 3.dir?显示磁盘目录命令 dir #显示当前目录中的文件和子目录 dir /a #显示当前目录中的文件和子目录,包括隐藏文件和系统文件 dirc:/a:d #显示 C 盘当前目录中的目录 dir c: /a:-d #显示 C 盘根目录中的文件 dir c:" /b/p #/b只显示文件名,/p分页显示 dir c:" /b/p#/w不显示详细信息 dir *.exe /s #显示当前目录和子目录里所有的.exe文件 4.以树形显示当前路径文件夹结构 tree /f #显示每个文件夹中文件的名字。 5.md 建立子目录 md d:"a"b"c#如果 d:"a 不存在,将会自动创建中级目录 #如果命令扩展名被停用,则需要键入mkdir "a" b"c 6.cd?改变当前目录(进入) cd \#进入根目录 cd#显示当前目录 cd /d d:\sdk #可以同时更改盘符和目录 cd .. #返回上一级目录

基于FlexBison的高级解释器设计及实现

课程设计3 基于Flex/Bison的高级解释器设计及实现 3.1 需求分析 3.1.1 问题定义 1.使用flex和bison开发了一个具有全部功能的桌面计算器,能够支持变量,过程, 循环和条件表达式,使它成为一个虽然短小但是具有现实意义的编译器。 2.重点学习抽象语法树的用法,它具有强大而简单的数据结构来表示分析。 3.1.2 功能描述 1.计算器具体需要实现的功能: a)变量命名; b)实现赋值功能; c)实现比较表达式(大于、小于、等于等等) d)实现if/then/else和do/while的流程控制; e)用户可以自定义函数; f) 简单的错误恢复机制。 2. 编写 Flex/Bison源文件,实现C 语言的语法分析功能,最后上机调试。 3. 要求编写一个测试程序: 首先自定义两个函数sq和avg,sq函数使用Newton方法来迭代计算平方根;avg函数计算两个数值的平均值。 利用定义好的函数进行计算,得到计算结果并显示出来。 4.根据习题1的要求,修改fb3-2相关代码; 实现实现以下自定义函数,并保存为fb3-3。 函数示例: let sq(n){e=1; while (|((t=n/e)-e)>.001) do {e=avg(e,t);}} let avg(a,b){(a+b)/2;} let max(a,b) { if(a>b) then a; else b; } let max3(a,b,c) { if(a>b) then { if(a>c) then a; else c; }

else { if(b>c) then b; else c; } } 3.1.3 开发环境及工具介绍 1、Window环境下载Visual Studio之后,利用其命令提示窗口进行操作。下载并安装Flex。 2、vs2010的编译器cl.exe。 3、flex:词法分析器 Flex是用来生成程序的工具,他们所生成的程序能够处理结构化输入,最初的Flex是用来生成编译器的,但是后来他们被证明在其他领域也非常有效。Flex是一个SourceForge项目。其依赖于GNU m4宏处理器。Linux和BSD都应该有m4,对于Windos用户来说,Flex被包含在Cygein Linux模拟环境中。 什么是FLEX?它是一个自动化工具,可以按照定义好的规则自动生成一个C 函数yylex(),也成为扫描器(Scanner)。这个C函数把文本串作为输入,按照定义好的规则分析文本串中的字符,找到符合规则的一些字符序列后,就执行在规则中定义好的动作(Action)。例如在规则中可以这样定义:如果遇到一个换行字符\n,那么就把行计数器的值加一。Flex文件就是一个文本文件,内容包括定义好的一系列词法规则。 4、bison:语法分析器 GNU bison 是属于 GNU 项目的一个语法分析器生成器。Bison 把一个关于“向前查看从左到右最右”(LALR) 上下文无关文法的描述转化成可以分析该文法的 C 或 C++ 程序。它也可以为二义文法生成“通用的从左到右最右”(GLR)语法分析器。 Bison是一种通用目的的分析器生成器。它将LALR(1)上下文无关文法的描述转化成分析该文法的C程序。一旦你精通Bison,你可以用它生成从简单的桌面计算器到复杂的程序设计语言等等许多语言的分析器。 Bison 基本上与 Yacc 兼容,并且在 Yacc 之上进行了改进。它经常和Flex (一个自动的词法分析器生成器)一起使用。 此软件的源代码是可自由获得的,在 GPL 下发布。

2020年10月全国高级语言程序设计(一)自考试题及答案解析.docx

??????????????????????精品自学考料推荐?????????????????? 全国 2018 年 10 月高等教育自学考试 高级语言程序设计(一)试题 课程代码: 00342 一、单项选择题(本大题共20 小题,每小题 1 分,共 20 分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括 号内。错选、多选或未选均无分。 1.下列不正确的转义字符是() . A. ′ ′ B. ′ ″ C. ′ \086′ D. ′ \0′ 2.下列运算符中,优先级最高的是() A. [] B.++ C.% D.&& 是 C 语言保留字的是 () 3.下列标识符中,不. A. char B. while C. min D. default 4.下列数据中,不.是 C 语言常量的是 () A. ′ \n′ B. ″ a″ C. e-2 D. 012 5.若定义了 int a; char b; float c ;,则表达式a*b-c 的类型是 () A. float B. int C. char D. double 6.若定义了 int a, x,y;,则下列语句中不.正确的是 () A. x=3 ,y=5 ; B. ++x ; C. x=y+=x*30 ; D. a=y+x=30 ; 7.调用函数时,若实参是一个数组名,则向函数对应的形参传送的是() A. 数组的长度 B.数组的首地址 C. 数组第一个元素的值 D. 整个数组元素的值 8.在 C 语言中,函数返回值的类型是由() A. 定义的函数类型决定 B.return 语句中表达式的类型决定 C.调用该函数的主调函数类型决定 D. 调用该函数时系统状态决定 9.若定义了 int b [][ 3]={ 1,2, 3,4, 5, 6, 7};,则 b 数组第一维的长度是 () A. 2 B. 3 C. 4 D.无确定值 1

暨南大学 2008高级语言程序设计试卷及答案

暨 南 大 学 考 试 试 卷 一、单项选择题(共20小题,每小题2分,共40分) 1、以下叙述中正确的是___________(C ) A 、C 语言程序总是从第一个的函数开始执行 B 、在 C 语言程序中,要调用的函数必须在main ()函数中定义 C 、C 语言程序总是从main ()函数开始执行 D 、C 语言程序中的main ()函数必须放在程序的开始部分 2、以下值不等于3的表达式是_____________(D ) A 、'D'-'A' B 、'6'-'3' C 、'\011' D 、3+'\0' 3. 能正确表达字母c 为大写字母的C 语言表达式是__________(D ) A )c>=’A’ and c<=’Z’ B )c>=’A’ || c<=’Z’ C )c>=’A’ or c<=’Z’ D )c>=’A’ && c<=’Z’ 4. 设变量a 是整型,f 是实型,i 是双精度型,则表达式10+'a'+i*f 值的数据类型为_____(C ) A )int B )float C )double D )不确定 5. 有函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));,此语句的实参数为________(A )

A、3 B、4 C、5 D、有语法错误 6. 设有语句int a=5,b; b=a>3&&0, a++; 执行后变量b的值为__________(C) A)5 B)6 C)0 D)1 7. 判断两个字符串s1和s2是否相等,应该使用____________(D) A)if (s1= =s2) B)if (s1=s2) C)if (strcpy(s1, s2)) D)if (strcmp(s1,s2)= =0) 8. 下面程序的执行结果是____________(B) main() { int n=1; n++; printf("%d%d%d",n,n++,――n);} A、2 2 1 B、2 2 2 C、2 3 2 D、2 1 1 9. 循环语句while(!E);中的表达式!E等价于________(C) A)E!=0 B)E!=1 C)E==0 D)E==1 10. 设有数组定义: char array []="China"; 则数组array所占的存储空间为___________(C)A)4个字节B)5个字节C)6个字节D)7个字节 11. 下列关于C语言的函数参数说法不正确的是__________(B) A)实参可以是常量,变量或表达式B)形参可以使常量,变量或表达式 C)在函数定义时必须指定形参的类型D)形参与实参的类型应相同或赋值兼容 12. 下列程序执行后的输出结果是__________(A) void func(int *a,int b[]) { b[0]=*a+6; } main() { int a,b[5]; a=0; b[0]=3; func(&a,b); printf("%d\n", b[0]);} A、6 B、7 C、8 D、9 13. 若有语句:int s[3][3],(*p)[3];p=s; 则对s数组元素的引用形式正确的是__________(C)A)p+1 B)*(p+1) C)p[1][2] D)*(p+1)+2 14. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是________(B) A、地址传递 B、单向值传递

server常见命令

实验10 Windows 2003 server常见命令 【实验目的】 1.通过本实验,学生可以使用Windows 2003提供的命令实现网络故障的检测和日常管理。【实验内容】 1.利用Windows 2003提供的命令,进行IP地址配置 2.利用Windows 2003提供的命令,测试网络的连通性 3 利用Windows 2003提供的命令,设置文件夹共享 【实验器材】 1.硬件:服务器1台、工作站2台、交换机1台。 2.软件:windows 2003 server操作系统1套、其它Windows操作系统1套。 【预备知识】 在Windows 2003 server的网络环境下,出现网络故障时,我们通常要通过命令来进行故障检查,下面就介绍几个常见的命令。 1.CMD 说明:打开一个新的命令解释器。 执行方法:在点“开始”→“运行”,在命令行中输入“CMD”。 2.Hostname 说明:显示当前计算机的名称。 语法:hostname 3.Ipconfig 说明:显示所有的TCP/IP配置值,如本机IP地址、默认网关、子网掩码、DNS服务器等。 语法: Ipconfig [/all | /renew | /reelease] /All完整显示TCP/IP配置值 /Release释放DHCP配置参数 /Renew重建DHCP配置参数 4.Nbtstat 说明:显示协议统计和当前使用的NBT的TCP/IP连接,用此命令可以查看指定计算机的MAC

地址。 语法: nbtstat [-a 计算机名] [ -A 计算机的IP地址] 例如,命令: nbtstat –A 192.168.0.1 显示局域网内远端IP地址为192.168.0.1的计算机的网络信息,如MAC地址。 5.Net 说明:这条命令允许用户通过命令提示符对网络、用户、组和服务的很多方面进行监控、启动、停止和更改。如可以在网络中发送消息、查看本机的共享资源的详细资料。 1) Net send :向用户或计算机发送消息。 语法: Net send <计算机名/用户名>消息内容 2) Net share:创建/删除/显示共享 语法: Net share [共享名/d ] /[共享名=共享文件夹路径] 例如,命令: Net share mysharefile=d:\file 将本机目录“d:\file”设置共享,共享名为mysharefile。 6.Ping 说明:检验TCP/IP连接和显示连接统计。用此命令可以检测与目标计算机的TCP/IP的连通性,也可以在知道目标计算机的名称或域名的情况下,来查看其IP地址。 语法: Ping [-t ] [-a] 目标计算机名或IP地址。 -t Ping直到中断 -a 解析地址到计算机名。 7.Tracert 说明:通过TCP/IP跟踪目的地的路由。 语法: Tracert [-d] 目标计算机名 -d 不解析地址到计算机名。

高级语言程序设计期末试卷

2017年秋季《高级语言程序设计》期末试卷 批次专业:2017年春季-电气工程及其自动化(专升本)课程:高级语 言程序设计(专升本) 1. ( 单选题 ) 能将高级语言编写的源程序转换为目标程序的是 _____________ 。(本题2.0分) A、链接程序 B、解释程序 C、编译程序 D、编辑程序 学生答案:C 标准答案:C 解析: 得分:2 2. ( 单选题 ) C语言程序编译时,程序中的注释部分()。(本题 2.0分) A、参加编译,并会出现在目标程序中 B、参加编译,但不会出现在目标程序中 C、不参加编译,但会出现在目标程序中 D、不参加编译,也不会出现在目标程序中 学生答案:D

标准答案:D 解析: 得分:2 3. ( 单选题 ) C 语言中的标识符只能由字母、数字和下划线三种字符组成 , 且第一个字符( )(本题2.0分) A、 必须为下划线 B、 可以是字母、数字和下划线中的任意一种 C、 必须为字母或下划线 D、 必须为字母 学生答案:C 标准答案:C 解析: 得分:2 4. ( 单选题 ) 一个 C 程序的执行是从( )(本题2.0分) A、 本程序的main函数开始,到main函数结束 B、 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C、 本程序的main函数开始,到本程序文件的最后一个函数结束 D、 本程序文件的第一个函数开始,到本程序main函数结束 学生答案:C 标准答案:C 解析: 得分:2

5. ( 单选题 ) C 语言提供的合法关键字是( ) (本题2.0分) A、swicth B、chan C、case D、default 学生答案:D 标准答案:D 解析: 得分:2 6. ( 单选题 ) C语言程序的基本单位是()(本题2.0分) A、程序行 B、语句 C、函数 D、字符 学生答案:C 标准答案:C 解析: 得分:2 7. ( 单选题 ) 组成C语言程序的是( )。(本题2.0分) A、过程 B、函数

命令行解释器使用命令语法

使用命令语法 语法按必须键入命令及其带有参数的顺序出现。下面的xcopy 命令范例显示各种语法文本格式: xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:mm-dd-yyyy]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:file1[+[file2]][+[file3]] [{/y|/-y}] [/z] 下表说明如何解释不同的文本格式。 格式化图例 格式含义 斜体用户必须提供的信息 粗体用户必须像显示的一样准确键入的元素 省略号(...) 可在命令行中重复多次的参数在括号([]) 之间可选项目 在大括号({}) 之间;将选项用竖线(|) 隔开。例如:{even|odd} 用户必须从中只选择一个选项的选项组 Courier 字体代码或程序输出 使用多个命令和条件处理符号 使用条件处理符号可以从单个命令行或脚本运行多个命令。通过条件处理符号运行多个命令时,条件处理符号右边的命令根据条件处理符号左边的命令结果来发挥作用。例如,只有在前一个命令失败的情况下,才可能需要运行一个新命令。或者,只有在前一个命令成功时才可能需要运行一个新命令。 可以使用下表列出的特殊字符来传递多个命令。 字符语法定义 & [...] command1 & command2 用来分隔一个命令行中的多个命令。Cmd.exe 运行第一个命令,然后运行第二个命令。 && [...] command1 && command2 只有在符号&& 前面的命令成功时,才用于运行该 符号后面的命令。Cmd.exe 运行第一个命令,然后 只有在第一个命令运行成功时才运行第二个命令。 || [...] command1 || command2 只有在符号|| 前面的命令失败时,才用于运行符号|| 后面的命令。Cmd.exe 运行第一个命令,然后只有在第一个命令未能运行成功(接收到大于零的错误代码)时才运行第二个命令。 ( ) [...] (command1 & command2) 用来分组或嵌套多个命令。 ; 或 者, command1 parameter1;parameter2 用来分隔命令参数。 注意 “与”符号(&)、管道符号(|) 以及括号() 是特殊字符,将它们作为参数传递时,必须在其前面加上转义字符(^) 或引号。 如果某个命令成功完成操作,则该命令就返回零(0) 退出代码或不返回任何退出代码。有关退出代码的详细信息,请参阅Microsoft Windows Resource Kit。 嵌套命令行解释器 通过在命令提示符打开Cmd.exe 新的实例,可以在Cmd.exe 内嵌套命令行解释器。默认

高级语言程序设计答案

《高级语言程序设计答案 一、选择题(每题2分,共30分,请将答案写在后面的答题栏...上) 1-5 BDBBB 6-10 BBDCC 11-15 CDBAB 二、填空题(1-3题每空1分,4-8题每空2分,共20分) 1、对象,事件驱动 2、frm ,vbp 3、函数 过程 4、31 5、9 6、countn<5 n mod 3=1 and n mod 5=1 and n mod 7=1 8、7 7、*n s+1/f 三、综合题(每题5分,共25分) 1、 (2*y)/(a*x+b*y)(a*x-c*z) 2、(x+sqr(x^2+1))^(1/3) 3、30 60 4、7 5、1)建立界面。先建立窗体,再利用控件在窗体上创建各种对象。 2)设置属性。设置窗体或控件等对象的属性。 3)编写代码。编写对象的事件代码。 四、程序设计题(8+8+9,共25分) 1:x 的值由文本框输入,计算分段函数的值:y=???????≥<≤<≤<2 ,321,210,10,0x x x x 。 private sub command1_click( ) Dim x% x=text1.text if x>=2 then y=3 elseif x>=1 then y=2 elseif x>=0 then y=1 2:统计100以内被3整除的数比被5整除的数多多少。 Private Sub Command1_Click() Dim i%, s1%, s2% For i = 1 To 100 If i Mod 3 = 0 Then s1 = s1 + 1 If i Mod 5 = 0 Then s2 = s2 + 1 Next i

《高级语言程序设计》期末考试试卷附答案

《高级语言程序设计》期末考试试卷附答案 一、选择题(共20题,每题3分,共60分) 1. 下列四个选项中,均是合法的整型常量的选项是() A.160 –0XFFFF 011 B. -0XCDF 01A 0XE C. -01 986,012 0688 D. -0X48a 2e5 0x 2. 下列四个选项中,均是不合法的浮点数的选项是() A.160.0.12 e3 B. 123 2e4.2 .e5C.18 0.0 123e4 D. e3. 234 1e3 3. 合法的C语言字符常数是() A.'\t' B. "A"C.54 D. A 4. 在C语言中,要求运算数一定是整型的运算符是() A./ B. ++C.!= D. % 5. 字符串常量”mine”的字符个数是() A.4 B. 5C.6 D. 7 6. 以下属于非法的C语言转义字符的是() A.'\b' B. '0xf'C.'\037' D. '\' 7. 若x、y、z均为int型变量,则执行以下语句后的输出是() x=(y=(z=10)+5)-5; printf("x=%d, y=%d, z=%d\n",x,y,z); y=(z=x=0,x+10); printf("x=%d, y=%d, z=%d\n",x,y,z); A. x=10, y=15, z=10 B.x=10, y=10, z=10 x=0, y=10, z=0x=0, y=10, z=0 C.x=10, y=15, z=10 D. x=10, y=10, z=10 x=10, y=10, z=0 x=10, y=10, z=0 8. 在以下一组运算符中,优先级最高的运算符是() A.<= B. =C.% D. && 9. 已知:int x; float y; 所用的scanf调用语句格式为: scanf( “x=%d, y=%f”, &x, &y ); 为了将数据10和66.6分别赋给x和y,正确的输入应当是() A.x=10, y=66.6<回车> B. 10, 66.6<回车> C.10<回车>66.6<回车> D. x=10<回车>y=66.6 <回车> 10. 已有如下定义的输入语句,若要求A1,A2,C1,C2的值分别为10,20,A和B,当从第一列开

相关主题