《2022年程序设计语言基本概念与试题.docx》由会员分享,可在线阅读,更多相关《2022年程序设计语言基本概念与试题.docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆程序设计语言基本概念与试题一、基本概念在运算机中, 程序设计语言可划分为低级语言和高级语言两大类,与高级语言相比,用低级语言开发的程序,其运行效率高,但开发效率低;与程序设计相关的基本概念如下;(1)低级语言:又称面对机器语言,它是特定的运算机系统所固有的语言;(2)汇编语言:是机器语言的一种提升,它使用了一些助记符来表示机器指令中的操作码 和操作数;但它仍旧是一种和运算机机器语言特别接近的语言,使用起来仍旧不太便利;(3)高级语言:与人们的自然语言比较接近,使用起来很便利,也极大的提高了程序设计 效率;(4)编译程序
2、:也称编译器,将源程序翻译成目标语言程序,然后在运算机上运行目标程 序;虽然执行效率高,但编写出来的程序可读性很差,且难以修改和保护;(5)说明程序:也称说明器,它或者直接说明执行源程序,或者将源程序翻译成某种中间 代码后再加以执行;(6)程序设计语言:程序设计语言的定义都涉及语法、语义和语用等方面;(7)语法是指由程序语言的基本符号组成程序中的各个语法成分(包括程序) 的一组规章,其中由基本字符构成的符号(单词) 书写规章称为词法规章,由符号构成语法成分的规章称为语法规章;(8)语义是程序语言中按语法规章构成的各个语法成分的含义,分为静态语义和动态语义;(9)语用表示了构成语言的各个记号和使
3、用者的关系,涉及符号的来源、使用和影响;(10 )语境是指懂得和实现程序设计语言的环境,包括编译环境和运行环境;二、程序设计语言的分类 1命令式程序设计语言 命令式程序设计语言是基于动作的语言,在这种语言中,运算被看成是动作的序列;结构化程序设计语言属于命令式语言类,其结构特性主要有:一是用自顶向下逐步精化的方法编程,二是依据模块组装的方法编程,三是程序只包含次序、判定(分支)及循环结构,而且每种构造只答应单入口和单出口;2面对对象程序设计语言C 语言 、PASCAl 等都是典型的结构化程序设计语言;名师归纳总结 - - - - - - -第 1 页,共 12 页精选学习资料 - - - -
4、- - - - - 学而不思就惘,思而不学就殆面对对象的程序设计在很大程度上应归功于从模拟领域进展起来的Simula ,Simula 提出了类和对象的概念;C+ 、Java 和 smalltalk 是面对对象程序设计语言的代表;3函数式程序设计语言函数式程序设计语言是一类以 -演算为基础的语言,其概念来自于 Lisp ,一个在 1958 年为了 人工智能 应用而设计的语言;函数是一种对应规章(映射) ,它使定义域中每个元素和值域中唯独的元素对应;函数定义 1:Squarex:=x x 函数定义 2:Plustwox:= PlusonePlusonex 函数定义 3:factn:=if n =0
5、 then 1 else n factn-1 4规律型程序设计语言规律型程序设计语言是一类以形式规律为基础的语言,其代表是建立在关系理论和一阶谓词理论基础上的 Prolog (Programming in Logic);Prolog 程序是一系列事实、数据对象或事实间的详细关系和规章的集合;通过查询操作把事实和规章输入 数据库 ;用户通过输入查询来执行程序;在 Prolog 中,关键操作是模式匹配,通过匹配一组变量与一个预先定义的模式并将该组变量赋给该模式来完成操作;三、程序设计语言的基本成分1数据成分数据成分指的是一种程序语言的数据类型;(1)常量和变量依据程序运行时数据的值能否转变,将数据
6、分为常量和变量;变量具有左值和右值,在程序运行过程中其右值可以转变;常量只有右值,在程序运行过程中不能转变;(2)全局变量和局部变量依据数据的作用域范畴,可分为全局变量和局部变量;系统为全局变量安排的储备空间在程序运行的过程中一般是不转变的,而为局部变量安排的储备单元是动态转变的;(3)数据类型依据数据组织形式不同可将数据分为基本类型、用户定义类型、构造类型和其他类型;名师归纳总结 基本类型:整型(int)、字符型( char )、实型( float 、double )和布尔类型(bool );第 2 页,共 12 页特别类型:空类型(void );- - - - - - -精选学习资料 -
7、- - - - - - - - 学而不思就惘,思而不学就殆用户定义类型:枚举类型(enum );构造类型:数组、结构、联合;指针类型: type * ;抽象数据类型:类类型;2运算成分程序语言的运算成分指明答应使用的运算符号及运算规章;可分成算术运算、关系运算和规律运算,有些语言如3掌握成分 掌握成分指明语言答应表述的掌握结构;(1)次序结构大多数高级程序语言的基本运算 C(C+ )仍供应位运算;次序结构用来表示一个运算操作序列,从第一个操作开头,按次序依次执行后续的操作,直到最终一个操作,如图 2-1 所示;( 2)挑选结构挑选结构供应了在两种或多种分支中挑选其中一个的规律,如图 2-2 所
8、示;图 2-1 次序结构示意图名师归纳总结 - - - - - - -第 3 页,共 12 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆图 2-2 挑选结构示意图(3)循环结构 循环结构描述了重复运算的过程,通常由三部分组成:初始化、循环体和循环条件;主要有两种形式: while 型循环结构和do-while 型循环结构,如图2-3 所示;(4)C(C+ )语言供应的掌握语句 复合语句复合语句用于描述次序掌握结构;复合语句是一个整体,要么全部执行, 要么一条语句也不执行; if 语句和 switch 语句 if 语句实现的是双分支的挑选结构,其一般形式为:名师
9、归纳总结 1.if (表达式)第 4 页,共 12 页2.语句 1;- - - - - - -精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆3. else 4. 语句 2;需要留意的是 if 和 else 的匹配关系;switch 语句描述了多分支的挑选结构,其一般形式为:1. switch (表达式) 2. case 常量表达式 1:语句 1;3. case 常量表达式 2:语句 2;4.5. 常量表达式n:语句 n;6.case 7.default:语句 n+1; 8.9. 循环语句主要指 while 语句、 do-while 语句和 for 语句; whil
10、e 语句描述了先判定条件再执行循环体的掌握结构,其一般形式为:1. while (条件表达式)2. 3.4. 循环体语句;5.6. do-while 语句描述了先执行循环再判定条件的掌握结构,其一般格式是:1. do 2.3. 循环体语句;4. while (条件表达式);for 语句的基本格式是:1. for (表达式 1;表达式 2;表达式 3;)循环体语句;可用 while 语句等价地表示为:名师归纳总结 1.表达式 1;第 5 页,共 12 页2.while (表达式 2) 3.循环体语句;4.表达式 3;5. - - - - - - -精选学习资料 - - - - - - - - -
11、 学而不思就惘,思而不学就殆4函数函数是程序模块的主要成分,它是一段具有独立功能的程序;函数的使用涉及三个概念:函数定义、函数声明和函数调用;函数定义函数定义包括两部分:函数首部和函数体;函数定义描述了函数做什么和怎么做;其一般格式是:1. 返回值类型函数名(形参表)2. 3. 函数体;4. 5.函数声明函数应当先声明后引用;假如程序中对一个函数的调用在该函数的定义之前进行,就应当在调用前对被调用函数进行声明;函数原型用于声明函数;函数声明的一般形式为:1. 返回值类型函数名(形参表);函数调用当在一个函数(称为主调函数)中需要使用另一个函数(称为被调函数)实现的功能时,便以名字进行调用,称为
12、函数调用;函数调用的一般形式为:1. 函数名(实参表);四、值调用和引用调用在 C 程序的执行过程中,通过函数调用实现了函数定义时描述的功能;函数体中如调用自己,就称为递归调用;C 和 C+ 通过传值方式将实参传递给形参;调用函数和被调用函数之间交换信息的方法主要有两种:一种是由被调函数把返回值返回给主调函数, 另一种是通过参数带回信息;函数调用时实参加形参间交换信息的方法有值调用 和引用调用两种;(1)传值调用( Call by Value )如实现函数调用时实参向形式参数传递相应类型的值(副本),就称为是传值调用;C 语言采纳的是传值调用的方式;传值调用最显著的特点是被调用的函数内部对形参
13、的修改名师归纳总结 不影响实参的值; 传值调用的参数传递和被调用函数内对参数的使用主要按下述原就:函数第 6 页,共 12 页定义时形参被当作局部变量看待,在函数被调用时为形参安排储备单元;调用函数前, 第一- - - - - - -精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆运算实参的值, 调用时将实参的值放入形参的储备单元;据进行直接拜访;被调用函数内部对形参单元中的数(2)引用调用( Call by Reference)引用是 C+ 中增加的数据类型,当形式参数为引用类型时,形参名实际上是实参的别名,数所作的拜访和转变;函数中对形参的拜访和修改实际上就是针
14、对相应实际参实际上, 引用调用是将实参的地址传递给形参,使得形参的地址就是对应实参的地址;引用调用的参数传递和被调用函数内对参数的使用主要按下述原就处理:函数定义时形参被当作局部变量看待, 在函数被调用时为形参安排储备单元;调用时将实参的地址放入形参的储备 单元;被调用函数内部对形参单元中的数据(地址)进行间接拜访;怎么考【试题 2-1 】20XX 年 11 月真题 20 20 );如 C 程序的表达式中引用了未赋初值的变量,就(20 )A. 编译时肯定会报告错误信息,该程序不能答应 B. 可以通过编译并运行,但运行时肯定会报告反常 C. 可以通过编译,但链接时肯定会报告错误而不能运行 D.
15、可以通过编译并运行,但运行结果不肯定是期望的结果 分析:全局变量和静态局部变量在定义时假如没有初始化,编译时会自动初始化为 0;而普通的局部变量,假如没有初始化,就其值是一个随机数;在C 程序表达式中,只要引用的变量定义了,就可以通过编译并运行,但运行结果不肯定是期望的结果;【答案:d】【试题 2-2 】20XX 年 11 月真题 49 、50 函数 t、f 的定义如下所示,其中,a 是整型全局变量;设调用函数 t 前 a 的值为 5,就在函数中以传值调用(call by value )方式调用函数 f 时,输出为( 49);在函数 t 中以引用调用( call by reference)方式
16、调用函数时,输出为(50);(49 )A. 12 B. 16 C. 20 D. 24 名师归纳总结 - - - - - - -第 7 页,共 12 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆(50 )A. 12 B. 16 C. 20 D. 24 分析: 此题主要考查函数调用时参数的传递方式;假如采纳传值方式调用,就形参值的变化不会影响实参;而采纳引用方式调用,就形参值的变化直接反映到实参;此题中假如在函数 t 中采纳传值方式调用函数 f,a 的值传给形参 r,在函数 f 中, a 的值变为 6, r 的值为 10 并返回赋给变量 x,由于 a 是全局变量,
17、退出函数 f 后 a 的值依旧为 6,所以函数 t 的输出结果为 16 ;假如函数 t 采纳传值方式调用函数 f,就形参 r 就是对实参 a的引用,对 r 的修改就是对 a 的修改,在执行 a=r+1 时, a 和 r 的值都变为 6,执行 r=r*2 ,a 和 r 的值都变为 12 ,并将 r 的值返回给 x,因此函数 t 的输出结果为 24 ;【答案:( 49 )B (50)D】【试题 2-3 】20XX 年 11 月真题 57在 KMP 模式匹配 算法 中,需要求解模式串 p 的 next 函数值,其定义如下(其中,j 为模式串字符的序号);对于模式串“ abaabaca”,其 next
18、 函数值序列为(57 );(57 )A. 01111111 B. 01122341 C. 01234567 D. 01122334 分析:模式串 “ abaabaca”的 next 函数值序列如下;当 j=1 时, next1=0 ;当 j=2 时, k 不存在, next2=1 ;当 j=3 时,不存在满意条件的 k,next3=1 ;当 j=4 时, p1=p3=a ,存在 k=2 ,使得 p1 p2 Lpk .1= pj.k +1 pj.k +2 L pj.1 ,故 next4=2 ;当 j=5 时,存在 k=2 ,使得 p1 p2 Lpk .1= pj.k +1 pj.k +2 L p
19、j.1 ,即 p1=p4=a ,故 next5=2 ;当 j=6 时,存在 k=3 ,使得 p1p2 = p4p5,故 next6=3 ;当 j=7 时,存在k=4 ,使得 p1p2 p3 = p4p5 p6 ,故 next7=4 ;当 j=8 时,不存在满意条件的 k 值,故next8=1 ;【答案: B】名师归纳总结 【试题2-4 】20XX 年 5 月真题22第 8 页,共 12 页- - - - - - -精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆如一种程序设计语言规定其程序中的数据必需具有类型,就有利于(22 );在翻译程序的过程中为数据合理安排储备
20、单元对参加表达式运算的数据对象进行检查定义和应用动态 数据结构规定数据对象的取值范畴及能够进行的运算对数据进行强制类型转换(22 )ABCD数据类型不仅可用于分析: 数据是程序操作的对象,类型说明数据占用的内存和存放形式;在基础机器中完成对值得布局,仍可以用于检查表达式中对运算的应用是否正确;【答案:B】【试题 2-5 】20XX 年 5 月真题 48以下关于高级程序设计语言翻译的表达中,正确选项(48 );(48 )A可以先进行语法分析,再进行词法分析B在语法分析阶段可以发觉程序中的全部错误C语义分析阶段的工作与目标机器的体系结构亲密相关D目标代码生成阶段的工作与目标机器的体系结构亲密相关分
21、析: 对于高级程序设计语言,编译程序会把编写的源程序翻译成与之等价的目标程序;编译程序的工作过程分为:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成; 语法分析要在词法分析的基础上,依据语言的语法规章将单词符号序列分解成各类语法单位;可见,要先进行词法分析,然后进行语法分析,应选项 A 错误;在语法分析阶段能发觉语法错误,但不能发觉语义错误,因此选项B 错误;语义分析阶段主要检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用,可见, 语义分析阶段工作与与目标机器的体系结构关联不大,选项C 错误;目标代码生成阶段的任务是把中间代码变化成特定机器上的肯定指令
22、代码、可重定位的指令代码或汇编指令代码,这个阶段的工作与详细的机器亲密相关;【答案:D】【试题 2-6 】20XX 年 5 月真题 50传值与传地址是函数调用经常采纳的信息传递方式,(50 );(50 )A在传值方式下,是将形参的值传给实参名师归纳总结 - - - - - - -第 9 页,共 12 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆B在传值方式下,形参可以是任意形式的表达式C在传地址方式下,是将实参的地址传给形参D在传地址方式下,实参可以是任意形式的表达式分析:在传值方式下,是将实参的值传给形参, 形参不能向实际参数传递信息;实参可以是表达式或常量
23、,也可以是变量或数组元素;在传地址方式下, 是将实参的地址传给形参,实参和形参都指向同一个对象,被调用函数中对形式参数的修改实际上就是对实际参数的修改,可以实现数据的双向传递;实参必需是变量地址、数组名,不能是表达式或常量;形参就是形式参数,用一个变量来代表,不能是表达式;【答案:C】【试题 2-7 】20XX 年 11 月真题 50以下关于汇编语言的表达中,错误选项(50 );(50 )A汇编语言源程序中的指令语句将被翻译成机器代码B汇编程序先将源程序中的伪指令翻译成机器代码,然后再翻译指令语句C汇编程序以汇编语言源程序为输入,以机器语言表示的目标程序为输出D汇编语言的指令语句必需具有操作码
24、字段,可以没有操作数字段分析:汇编程序的功能是将会变语言所编写的源程序翻译成机器指令程序;汇编语言源程序语句可分为指令语句、伪指令语句和宏指令语句;指令语句汇编后产生相应的机器代码;伪指令语句指示汇编程序在汇编源程序时完成某些操作,【试题2-8 】20XX 年 11 月真题64汇编后不产生气器代码; 【答案: B】下面 C 程序段中 count+ 语句执行的次数为(64 );forint i=1;i=11;i*=2 forint j=1;j11 ,不满意循环条件,循环终止;可以运算 count+ 语句执行的次数为: 1+2+4+8=15 【答案: A】名师归纳总结 - - - - - - -第
25、 10 页,共 12 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆【试题2-9 】20XX 年 5 月真题33程序的三种基本掌握结构是(33);(33 )A过程、子程序分程序 B次序、挑选和重复C递归、堆栈和队列 D调用、返回和跳转分析:程序的三种基本掌握结构是次序结构、挑选结构和重复结构;【答案:B】【试题 2-10 】20XX 年 5 月真题 20函数调用时,基本的参数传递方式有传值与传地址两种,(20 );(20 )A在传值方式下,形参将值传给实参B在传值方式下,实参不能是数组元素C在传地址方式下,形参和实参间可以实现数据的双向传递D在传地址方式下,实参
26、可以是任意的变量和表达式分 析:第一看 A 选项,传值方式下,对应的实参和形参是两个独立的实体,占用不同的内存单元,调用函数时,系统把实参值复制一份给形参,便断开二者的联系,形参值的转变对实参无影响;因此,“传值 ”是单向的,只能由实参传递给形参;B 选项,形参为传值方式下的简洁变量,实参可以是与其同类型的常量、变量、数组元素或表达式;C 选项,在传址方式下,函数调用时,系统将实参的地址传递给形参,即这时参数传递的不是数据本身,而是数据在内存中的地址;所以在函数被调用中,任何对形参的拜访,都被认为是对形参的间接拜访;实参加形参占用相同的储备单元,传递方式是双向的,形参值的改变将影响实参值;故
27、C 选项正确;D 选项,形参为传址方式时,实参假如为常量或表达式,就传址无效, 相当于传值方式; 【答案: C】【试题 2-11 】20XX 年 5 月真题 22下面关于程序语言的表达,错误选项(22 );(22 )A脚本语言属于动态语言,其程序结构可以在运行中转变B脚本语言一般通过脚本引擎说明执行,不产生独立储存的目标程序名师归纳总结 CPHP 、JavaScript属于静态语言,其全部成分可在编译时确定第 11 页,共 12 页- - - - - - -精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆DC 语言属于静态语言,其全部成分可在编译时确定分 析:脚本语
28、言,又叫动态语言,是一种编程语言掌握软件的应用程序;脚本语言与编程语言有许多相像地方,其函数与编程语言比较类似 别是编程语言的语法和规章更为严格和复杂一些;,也涉及到变量,它与编程语言最大的区 脚本语言一般都有相应的脚本引擎来说明执行,一般需要说明器才能运行;Python 、JavaScript 、ASP 、PHP 、PERL 、Nuva 都是脚本语言;另外,脚本语言是一种说明性的语言 ,它不像 CC+ 等可以编译成二进制代码,以可执行文件的形式存在;【答案:C】【试题 2-12 】20XX 年 12 月真题 21程序设计语言一般都供应多种循环语句,例照实现先判定循环条件再执行循环体的 whi
29、le 语句和先执行循环体再判定循环条件的 体的条件下,(21)是正确的;do-while 语句;关于这两种循环语句,在不转变循环(21 )Awhile 语句的功能可由 do-while 语句实现Bdo-while 语句的功能可由 while 语句实现C如已知循环体的次数,就只能使用 while 语句D循环条件相同时,do-while 语句的执行效率更高分 析: do-while 语句的循环体至少执行一次,即执行 1次,而 while 语句的循环体可以不执行,也可以执行 n 次,因此 do-while 语句的功能可由 while 语句实现;【答案:B】【试题 2-13 】20XX 年 5 月真题 22以下表达中错误选项(22 );(22 )A面对对象程序设计语言可支持过程化的程序设计B给定算法的时间复杂性与实现该算法所采纳的程序设计语言无关C与汇编语言相比,采纳脚本语言编程可获得更高的运行效率D面对对象程序设计语言不支持对一个对象的成员变量进行直接拜访分 析:此题考查基本概念问题;C 选项明显是错误的,脚本语言与汇编语言不是一个意义名师归纳总结 层面上的语言, 而且汇编语言是接近运算机硬件的语言,运行效率是特别高的; 【答案: C】第 12 页,共 12 页- - - - - - -