一、选择题
1. 关于地址和指针,以下说法正确的是( )。
A. 通过强制类型转换可以将一种类型的指针变量赋值给另一种类型的指针变量
B. 可以取一个常数的地址赋值给同类型的指针变量
C. 可以取一个表达式的地址赋值给同类型的指针变量
D. 可以取一个指针变量的地址赋值给基类型相同的指针变量
答:A
【解析】常数的地址存储在内存的常量区,常量区存储的都是常量,值都是不可修改的,所以直接取常量的 地址赋给指针变量没有任何意义,C 语言也不允许这样做,编译会出错,B 选项错误;表达式的值存储在临时变 量中,内存中存在专门用来存储临时变量的区域,对这块地址进行操作也是没有意义的,C 语言不允许这样做,编译会出错,C 选项错误;可以取一个指针变量的地址,但是指针变量的地址属于指针,只能赋值给指针类型的指针变量,D 选项错误。故答案为A 选项。
2. 有以下函数:
该函数的功能是( )。
A. 计算字符串的长度
B. 计算字符串所占字节数
C. 将字符串逆序存放
D. 实现字符串的复制
答:D
while 循环语句中,【解析】实现功能是把q 指针指向地址单元的值赋给P 指针指向的地址中,
且每次完成赋值后,移动指针,进行下一次赋值,直到q 指针指向字符串结束符时,退出while 循环,功能为把q 指向的字符串复制到p 指向的地址中。
3. 表达式的值是( )。
答:B
【解析】
小数部分被省略,
4. 有以下程序
: 需要注意的是,两个整数相除仍然得到整数,
程序的运行情况是( )。
A. 形成无限循环
B. 输出6
C. 输出5
D. 输出4
答:A
【解析】本题执行过程为:i=l,k=0, i<6成立,执行for 循环:
退出switch
, 成立,执行for 循环:,匹配easel ,k=l, break 匹配case2,k=2,执行continue ,由于其只用于循环结构,退出switch , 且不执行此次for 循环以后的语句,i=2不变,i<6成立,执行下一次for 循环,以后的循环情况完全一致,i=2不会改变,形成无限循环。故A 项正确。
5. 有以下程序:
程序运行后的输出结果是( )。
A.y=0
B.y=-l
C.y=l
D.while 构成无限循环
答:B
【解析】当y=0时,不符合while 循环条件,经过y--值变为-1。
6. 以下选项中叙述正确的是( )
A.C 程序中的语句要经过编译才能转换成二进制机器指令
B. 算法需要包含所有三种基本结构
C. 有些算法不能用三种基本结构来表达
D. 简单算法的操作步骤不能超过20步
答:A
【解析】编译就是把高级语言变成计算机可以识别的二进制语言,不经过编译的源程序是不
能运行的,A 选项正确。算法不一定要包含所有三种基本结构,也可以只包含一种或两种,B 选项错误。结构化程序主要由3种 基本控制结构组成,循环结构、选择结构、顺序结构,它们组成的算法结构可以解决任何复杂的问题,C 项错误。算法的复杂程序不是由操作步骤多少决定的,而是按时间复杂度与空间复杂度来衡量,D 选项错误。
7. 有如下程序:
程序运行后的输出结果是( )。
A.8, 0
B.4, 0
C.4, 1
D.8, 1
答:A 【解析】右移运算符,按位右移运算规则是将一个操作数先转换成二进制数,然后将二
后,a=000l0=2, b=2%2=0, 输出a ,b 为8,0,故A 项正确。 进制数各位右移若干位,移出的低位舍弃,并在高位补位。若为无符号数,右移时左边高位移入0。a=8=01000, 执行
8. 有如下程序:
程序运行后的输出结果是( )。
A.A45D78
B.ABC678
C.34CD78
D.34AB78
答:A
【解析】本题执行过程为:if 条件不成立执行else 函数体,i%3=l, if 输出字符A ; i=l,