2.1 程序设计语言与概述

以下程序设计语言中,( )更适合用来进行动态网页处理。
A. HTML
B. LISP
C. PHP
D. JAVA/C++

正确答案是 C。
解析
HTML:静态网页
LISP:一种基于入演算的函数式编程语言
PHP:混合了C、Java、Perl以及PHP自创的语法。
它可以比CGl或者Perl更快速地执行动态网页。

引用调用方式下进行函数调用,是将( )。
A. 实参的值传递给形参
B. 实参的地址传递给形参
C. 形参的值传递给实参
D. 形参的地址传递给实参

正确答案是 B。
解析
在函数调用时,系统为形参准备空间,并把实参的值赋值到形参空间中,在调用结束后,形参空间将被释放,而实参的值保持不变,这就是传值传递方式。传值传递方式中实参与形参之间的数据传递是单向的,只能由实参传递给形参,因而即使形参的值在函数执行过程中发生了变化,也不会影响到实参值。在C语言中,当参数类型是非指针类型和非数组类型时,均采用传值方式。
传地址方式把实参的地址赋值给形参,这样形参就可以根据地址值访问和更改实参的内容,从而实现双向传递。当参数类型是指针类型或数组类型时,均采用传地址方式。

以下关于程序设计语言的叙述中,错误的是( )。
A. 程序设计语言的基本成分包括数据、运算、控制和传输等
B. 高级程序设计语言不依赖于具体的机器硬件
C. 程序中局部变量的值在运行时不能改变
D. 程序中常量的值在运行时不能改变

正确答案是 C。
解析
本题考查程序语言基础知识。
选项A涉及程序语言的一般概念,程序设计语言的基本成分包括数据、运算、控制和传输等。
选项B考查高级语言和低级语言的概念。对于程序设计语言,高级语言和低级语言是指其相对于运行程序的机器的抽象程度。低级语言在形式上更接近机器指令,汇编语言就是与机器指令一一对应的。高级语言对底层操作进行了抽象和封装,其一条语句对应多条机器指令,使编写程序的过程更符合人类的思维习惯,并且极大简化了人力劳动。高级语言不依赖于具体的机器硬件。
选项C考查局部变量的概念,凡是在函数内部定义的变量都是局部变量(也称作内部变量),包括在函数内部复合语句中定义的变量和函数形参表中说明的形式参数。局部变量只能在函数内部使用,其作用域是从定义位置起至函数体或复合语句体结束为止。局部变量的值通常在其生存期内是变化的。
选项D考查常量的概念,程序中常量的值在运行时是不能改变的。

属于面向对象、解释型程序设计语言的是( )。
A. XML
B. Python
C. Prolog
D. C

正确答案是 B。
解析
C++:是在C语言的基础上发展起来的,主要增加了类的功能,使其成为面向对象的程序设计语言。
Prolog:是以特殊的逻辑推理形式回答用户的查询,它建立在关系理论和一阶谓词理论基础上。经常用于数据库和专家系统。
Python:是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很
轻松地联结在一起。
C语言:编译型语言。

C程序中全局变量的存储空间在( )分配。
A. 代码区
B. 静态数据区
C. 栈区
D. 堆区

正确答案是 B。
解析
全局变量、静态局部变量、静态全局变量都存放在静态数据存储区。
在这里插入图片描述

函数t()、f()的定义如下所示,若调用函数t时传递给x的值为5,并且调用函数f()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(calI by reference)方式,则函数t()的返回值为( )。
在这里插入图片描述

A. 33
B. 22
C. 11
D. 负数

正确答案是 A。
解析
传值调用形参改变不会改变原实参的值,传址调用形参改变会改变原实参的值。
当程序执行到函数t中,调用f(x,a)时,x=5,a=16。当程序在f(x,a)中执行完成之后,对r的值的改变,并不会影响原实参值,但对s的修改会改变调用的原实参值,在f(x,a)中执行完成之后s的值变为38,所以对应原实参值a也变为38,而原实参x的值没有改变,仍然是5。最后返回值是:a-x,即38-5=33。

函数main()、f()的定义如下所示,调用函数f()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式,main函数中“print(x)”执行后输出的值为( )。
在这里插入图片描述

A. 1
B. 6
C. 11
D. 12

正确答案是 D。
解析
本题考查传址与传值的相关知识,传值调用中,形参取的是实参的值,形参的改变不会导致调用点所传的实参的值发生改变;而引用(传址)调用中,形参取的是实参的地址,即相当于实参存储单元的地址引用,因此其值的改变同时就改变了实参的值。
可以使用手动执行程序的方式来进行。在主函数中,调用f(5,×)之后:
f(0函数中的x=5,a=1。
x=2*x+1,则x=11。
a=a+x,则a=12。由于a是以传址的方式传入的参数,所以主函数中的x与其值相同,也为12。打印结果应为12。

常用的函数参数传递方式有传值与传引用两种,( )。
A. 在传值方式下,形参与实参之间互相传值
B. 在传值方式下,实参不能是变量
C. 在传引用方式下,修改形参实质上改变了实参的值
D. 在传引用方式下,实参可以是任意的变量和表达式

正确答案是 C。
解析
本题考查程序语言基础知识。
函数调用时基本的参数传递方式有传值与传地址两种,在传值方式下是将实参的值传递给形参,因此实参可以是表达式(或常量),也可以是变量(或数组元素),这种信息传递是单方向的,形参不能再将值传回给实参。在传址方式下,需要将实参的地址传递给形参,因此,实参必须是变量(数组名或数组元
素),不能是表达式(或常量)。这种方式下,被调用函数中对形式参数的修改实际上就是对实际参数的修改,因此客观上可以实现数据的双向传递。
传值调用最显著的特征就是被调用的函数内部对形参的修改不影响实参的值。引用调用是将实参的地址传递给形参,使得形参的地址就是实参的地址。

运行下面的C程序代码段,会出现()错误。
int k=0;
for(;k<100;);
{k++;}
A. 变量未定义
B. 静态语义
C. 语法
D. 动态语义

正确答案是 D。
解析
在本题中,需仔细阅读代码,for语句后有“;”号,说明该循环语句的语句体为空,因此k在循环过程中没有进行自增操作,此时,整个代码会不停的进行空操作,进入死循环,而此时的死循环属于动态语义错误。

在高级语言源程序中,常需要用户定义的标识符为程序中的对象命名,常见的命名对象有( )。
①关键字(或保留字)②变量③函数④数据类型⑤注释
A. ①②③
B. ②③④
C. ①③⑤
D. ②④⑤

正确答案是 B。
解析
关键字和注释不能作为标识符给对象命名。
在高级程序语言中,程序员可以定义变量名、函数名,也可以自定义数据类型,比如以类似于[typedef原数据类型新数据类型]格式,定义新的数据类型名。

函数main()、f()的定义如下所示,调用函数f()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式,main()函数中“print(x)”执行后输出的值为( )。
在这里插入图片描述
A. 11
B. 40
C. 45
D. 70

正确答案是 B。
解析
当值传递的时候,将原来的参数复制了一份,但是引用传递的时候是将变量本身传了出去,因此,a代表的其实就是x本身,f函数里面的x是另一个变量,只有a的变化才能导致main函数里面的x值的变化。

更适合用来开发操作系统的编程语言是( )。
A. C/C++
B. Java
C. Python
D. JavaScript

正确答案是 A。
解析
现行操作系统均由C/C++开发。

以下关于程序设计语言的叙述中,不正确的是( )。
A. 脚本语言中不使用变量和函数
B. 标记语言常用于描述格式化和链接
C. 脚本语言采用解释方式实现
D. 编译型语言的执行效率更高

正确答案是 A。
解析
脚本语言中使用变量和函数来完成程序。

将高级语言源程序通过编译或解释方式进行翻译时,可以先生成与源程序等价的某种中间代码。以下关于中间代码的叙述中,正确的是( )。
A. 中间代码常采用符号表来表示
B. 后缀式和三地址码是常用的中间代码
C. 对中间代码进行优化要依据运行程序的机器特性
D. 中间代码不能跨平台

正确答案是 B。
解析
后缀式和三地址码是常用的中间代码,CD与具体的机器无关。

函数main()、f()的定义如下所示。调用函数f()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式,则函数main()执行后输出的值为( )。
在这里插入图片描述
A. 10
B. 19
C. 20
D. 29

正确答案是 D。
解析
传值调用中,形参取的是实参的值,形参的改变不会导致调用点所传的实参的值发生改变;而引用(传址)调用中,形参取的是实参的地址,即相当于实参存储单元的地址引用,因此其值的改变同时就改变了实参的值。
x=2*10-1=19;a是引用传递,所以a=a+x=10+19=29,结果为29。

( )是一种函数式编程语言。
A. Lisp
B. Prolog
C. Python
D. Java/C++

正确答案是 A。
解析
本题考查程序语言分类知识。LISP是一种通用高级计算机程序语言,长期以来垄断人工智能领域的应用。LISP作为因应人工智能而设计的语言,是第一个声明式系内函数式程序设计语言,有别于命令式系内过程式的C、Fortran和面向对象的Java、C++等结构化程序设计语言。
prolog(Programming in logic)是一种面向演绎推理的逻辑型程序设计语言。
python语言属于解释型的脚本语言,同时也是一种面向对象的动态类型语言。

函数foo()、hoo()定义如下,调用函数hoo()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式。设有函数调用foo(5),那么“print(x)”执行后输出的值为( )。
A. 24
B. 25
C. 30
D. 36

正确答案是 A。
解析
本题考查的是函数调用过程(值调用与引用调用相关知识)。
根据题干描述的调用过程,hoo()第一个参数是传值调用,第二个参数是引用调用,因此,在hoo()中对a的修改最终会影响到原foo()函数中传递的参数x,也就是最终x打印的值。
根据hoo()函数过程,x初始传参为原args=5,此时x=x-1=4(注意这里的x是局部变量,只在hoo()使用),a初始传参为原x=6,此时a=ax=64=24,最终全局变量×值为24。(注意这里的原x是全局变量,在hoo()参数中可以理解为别名为a,现x是局部变量,也就是之前求取的4)。
本题选择A选项。

在Python语言中,( )是一种不可变的、有序的序列结构,其中元素可以重复。
A. tuple(元组)
B. dict(字典)
C. list(列表)
D. set(集合)

正确答案是 A。
解析
本题考查的是Pythson数据类型相关内容。
不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组)。
可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)。
tuple(元组)类似于list列表,元组用()标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
dict(字典)是除列表以外python之中最灵活的内置数据结构类型;列表是有序的对象集合,字典是无序的对象集合;字典用"{}标识;字典由索引(key)和它对应的值value组成。
list(列表)可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套或者叫多维列表,可以用来表示多维数组)。列表用[]标识,是python 最通用的复合数据类型。
set(集合)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员;基本功能是进行成员关系测试和删除重复元素;可以使用大括号{}或者set()函数创建集合。

当函数调用执行时,在栈顶创建且用来支持被调用函数执行的一段存储空间称为活动记录或栈帧,栈帧中不包括( )。
A. 形参变量
B. 全局变量
C. 返回地址
D. 局部变量

正确答案是 B。
解析
栈帧是虚拟机栈的一个单位,是运行时数据区。
包含局部变量、返回地址、形参变量、动态数据等。

在Python3中,( )不是合法的异常处理结构。
A. try…except…
B. try…except…finally
C. try…catch…
D. raise

正确答案是 C。
解析
Java中处理异常使用try-catch,Python使用try-except。

在Python3中,表达式list(range(11))[10:0:-2]的值为( )。
A. [10,8,6,4,2,0]
B. [10,8,6,4,2]
C. [0,2,4,6,8,10]
D. [0,2,4,6,8]

正确答案是 B。
解析
range(11)产生0-10共11个数据。
[10:0:-2]表示从下标为10遍历到下标为0,递减是2。
但是不包含下标为0的数据,也就是1 0 8 6 4 2。

在Python3中,执行语句x=input(),如果从键盘输入123并按回车键,则x的值为( )。
A. 123
B. 1,2,3
C. 1 2 3
D. ‘123’

正确答案是 D。
解析
本题考查程序设计语言基础中的Python数据项及语法基础。

某Python程序中定义了X=[1,2],那么X*2的值为( )。
A. [1, 2,1, 2]
B. [1, 1, 2, 2]
C. [2,4]
D. 出错

正确答案是 A。
解析
本题考查的是Python基础语法。
X=[1,2]表示List结构,*2表示重复2次,运算结果为[1,2,1,2]。

用pip安装numpy模块的命令为( )。
A. pip numpy
B. pip install numpy
C. install numpy
D. import num

正确答案是 B。
解析
本题考查的是命令相关内容。
只有B选项符合命令中安装模块的语法,本题选择B选项。

以下Python语言的模块中,( )不支持深度学习模型。
A. TensorFlow
B. Matplotlib
C. PyTorch
D. Keras

正确答案是 B。
解析
本题考查python语言的语法相关。
A选项TensorFlow:Tensorflow拥有多层级结构,可部署于各类服务器、PC终端和网页并支持GPU和TPU高性能数值计算,被广泛应用于谷歌内部的产品开发和各领域的科学研究,支持Python语言深度学习。
B选项Matplotlib:Matplotlib是一个Python 的2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形,不支持深度学习。答案选B。
C选项PyTorch:PyTorch是一个针对深度学习,并且使用GPU和CPU来优化的tensor library(张量库)是由Torch7团队开发,是一个以Python优先的深度学习框架,不仅能实现强大的GPU加速,同时还支持动态的神经网络。
D选项Keras:Keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化。
综上所述,本题选B。

在Python语言中,( )是一种可变的、有序的序列结构,其中元素可以重复。
A. 元组(tuple)
B. 字符串(str)
C. 列表(list)
D. 集合(set)

正确答案是 C。
解析
本题考查的是Python数据类型相关内容。
不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组)。
可变数据(3个):List(列表)、Dictionary(字
典)、Set(集合)。
A、tuple(元组)类似于list列表,元组用()标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
B、dict(字典)是除列表以外python之中最灵活的内置数据结构类型;列表是有序的对象集合,字典是无序的对象集合;字典用"“{"标识;字典由索引(key)和它对应的值value组成。
C、list(列表)可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套或者叫多维列表,可以用来表示多维数组)。列表用[]标识,是python最通用的复合数据类型。本题描述的可变、有序、可重复的数据类型应该是C选项列表。
D、set(集合)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员;基本功能是进行成员关系测试和删除重复元素;可以使用大括号{}或者set()函数创建集合。
综上所述,本题选C。

Python 语言的特点不包括( )。
A. 跨平台、开源
B. 编译型
C. 支持面向对象程序设计
D. 动态编程

正确答案是 B。
解析
本题考查python相关问题。
python语义的特点:
跨平台、开源、简单易学、面向对象、可移植性、解释性、开源、高级语言、可扩展性、丰富的库、动态编程等等。
综上所述B选项错误,python不是编译型语言,而是解释型语言。

函数foo、hoo的含义如下所示,函数调用hoo(a,x)的两个参数分别采用引用调用(call by reference)和值调用(call by value)方式传递,则函数调用foo(5)的输出结果为( )。
在这里插入图片描述

A. 2,5
B. 2, 15
C. 13, 5
D. 13, 15

正确答案是 C。
解析
本题考查的是函数调用的传参方式。
根据题干给出的信息,foo(5),在该函数中,初始情况x=5, a=2。
调用hoo(a,x)函数,此时a=2传给hoo函数中的x,并且由于是引用方式,此时x在hoo函数内的修改会影响原a的值(注意区别,hoo函数的x与foo函数的x是不同的局部变量)。同时x=5传给hoo函数中的y,并且是值调用方式,此时y在hoo函数内的修改是不会影响原x的值。
接着分析hoo()函数,x的初始值为2,y的初始值为5。
执行y=y+10=15,执行x=y-×=15-2=13,此时×的值会传回原foo函数的a,即a=x=13。
返回foo函数进行分析,输出的a和x,取值分别为修改后的13和原数值5。
本题选择C选项。

函数f和g的定义如下图所示。执行函数f时若采用引用(call by reference) 方式调用函数g(a),则函数f的返回值为( )。
A. 14
B. 18
C. 24
D. 28
在这里插入图片描述

正确答案是 D。
解析
本题采用引用调用,会改变实参的值。
对于实参a,传递给g(a)之后,在g (a)函数,表现为形参X。
根据g(x) 代码:m=5*2=10,x=10-1=9,返回值x+m=19;返回f ()代码,此时a(即g(x)中的x)的值已经改变,为9;c等于g (a)的返回值,也就是19。
最终可得f ()的返回值a+c=28。

执行以下Python语句之后,列表y为( )。
x=[1,2,3]
y=x+[4,5,6]
A. 出错
B. [1,2,3,4,5,6]
C. [5,7,9]
D. [1,2,3,[4,5,6]]

正确答案是 B。
解析
本题考查python语言基础。
在python语言中,+属于拼接,对于y=[1,2,3]+ [4,5,6]
两者的拼接情况为一个列表[1,2,3,4,5,6]。

以下关于通过解释器运行程序的叙述中,错误的是( )。
A. 可以由解释器直接分析并执行高级语言源程序代码
B. 与直接运行编译后的机器码相比,通过解释器运行程序的速度更慢
C. 解释器运行程序比运行编译和链接方式产生的机器代码效率更高
D. 可以先将高级语言程序转换为字节码,再由解释器运行字节码

正确答案是 C。
解析
本题考查解释器程序。
解释器是一种计算机程序,它可以直接读取、分析并执行以高级编程语言(如Python、Ruby、JavaScript等)编写的源代码,而无需预先将其转换为机器代码。
编译型语言(如C、C++、Java等)的源代码首先会被编译成机器代码(或字节码),然后这些代码可以直接在硬件上执行。而解释型语言(如Python、Ruby等)的源代码则需要解释器一行一行地读取、分析和执行,这通常会比直接执行机器代码慢。
有些解释型语言(如Java)采用了一种中间步骤,即将源代码编译成字节码(bytecode),然后由解释器(或称为虚拟机)在运行时解释执行这些字节码。这种方式结合了编译型语言和解释型语言的特点,既可以在一定程度上提高执行效率,又保留了跨平台的能力。

算术表达式b* (a+c) - d的后缀式是( )(+、一、*表示算术的加、减、乘运算,运算符的优先级和结合性遵循惯例)。
A. ba+cd*-
B. bacd+*-
C. ba*c+d*-
D. bac + *d-

正确答案是 D。
解析
本题考查程序设计语言后缀式。
后缀式(逆波兰式)根据左右根的顺序遍历,依次是bac+*d-,答案选D。

在程序的执行过程中,系统用( )实现嵌套调用(递归调用)函数的正确返回。
A. 队列
B. 优先队列
C. 栈
D. 散列表

正确答案是 C。
解析
本题考查递归调用相关知识。
在递归调用中,需要在前期存储某些数据,并在后面又以存储的逆序恢复这些数据,以提供之后使用的需求,因此,需要用到栈来实现递归。简单的说,就是在前行阶段,对于每一层递归,函数的局部变量、参数值以及返回地址都被压入栈中。在退回阶段,位于栈顶的局部变量、参数值和返回地址被弹出,用于返回调用层次中执行代码的其余部分,也就是恢复了调用的状态。本题选择C选项。

通用的高级程序设计语言一般都会提供描述数据、运算、控制和数据传输的语言成分,其中,控制包括顺序、( )和循环结构。
A. 选择
B. 递归
C. 递推
D. 函数

正确答案是 A。
解析
本题考查程序语言基础知识。
程序设计语言的基本成分包括数据、运算、控制和传输等。
程序设计语言的控制成分包括顺序、选择和循环3种结构。
所以本题选择A选项。
B项递归和C项递推属于算法。
D项函数是一个固定的一个程序段,或称其为一个子程序。

函数f、g的定义如下,执行表达式“y=f(2)”的运算时,函数调用g(la)分别采用引用调用(call by reference)方式和值调用(call by value)方式,则该表达式求值结束后y的值分别为( )。
在这里插入图片描述

A. 9、6
B. 20、6
C. 20、9
D. 30、9

正确答案是 B。
解析
本题考查的是程序设计语言基础-传值与传址
y=f(2) x=2;la=x+1=3;引用调用g(int x)x=3;33+1=10;
由于是引用调用,结果会影响la的值,la=10;10
2=20 Y=f(2)x=2;la=x+1=3;传值调用g(intx)x=3;33+1=10;由于是传值调用,结果不影响la的值,la=3;32=6

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yoyo勰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值