二级C语言选择题专项强化真题试卷13
选择题
1.有以下程序:
#include<stdio.h>
main()
{
int a=1,b=1;
while(a——)
b——;
printf(\\(C)
A. —1 —1
B. 0 0
C. —1 0
D. 1 1
解析:while循环的判定条件为“a——”,即a先作为循环条件判定,然后再自减1。第一次循环判定条件为真,执行完毕后a=0,b=0,第二次循环判定条件为假,循环不成立,所以只执行判定表达式“a——”,所以最终a=—1,b=0,答案选C。
2.有以下程序:
#include<stdio.h>
int f(int x);
main(,)
{
int n=1,m;
m=f(f(f(n)));
printf(\\(C)
A. 4
B. 2
C. 8
D. 1
解析:考查函数的递归调用。m=f(f(f(n)))=f(f(2))=f(4)=8,答案选C。
3.计算机能直接执行的程序是( )。(D)
A. 源程序
B. 目标程序
C. 汇编程序
D. 可执行程序
解析:计算机能直接执行的程序是二进制的可执行程序,扩展名为.exe。所以选择D选项。
4.二叉树的中序序列为BDCA,后序序列为DCBA,则前序序列为( )。(C)
A. DCBA
B. BDCA
C. ABCD
D. BADC
解析:二叉树遍历可以分为3种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。本题中中序序列为BDCA,后序序列为DCBA,可知A为根结点,BDC为左侧结点,C是B右子结点,D是C右子结点,故前序序列为ABCD,C选项正确。
5.有以下程序:
#include<stdio.h>
main( )
{int y=10;
while(y–);
printt(\\(A)
A. y=–1
B. y=0
C. y=1
D. while构成无限循环
解析:y–表示y使用后再自减1。所以最后-次y的值为0,条件不成立但仍要执行自减操作,y的值为-1,跳出循环。打印y的值-1。
6.有以下程序:
#include<stdio.h>
struet ord
{int x,y;}dt[2]={1,2,3,4};
main( )
{
struet ord*p=dt:
printf(\\(C)
A. 3,4
B. 4,1
C. 2,3
D. 1,2
解析:本题考查结构体数组的相关操作,dt为结构体数组,那么指针p指向了结构体数组的一个元素,所以p->x为1,p->y为2,结果为2,3。选项C正确。
7.某循环队列的存储空间为Q(1:m),初始状态为front=rear=m。现经过一系列的入队操作和退队操作后,front=m一1,real=m,则该循环队列中的元素个数为( )。(B)
A. m一1
B. 1
C. m
D. 0
解析:循环队列长度为m,由初始状态为front=rear=m可知此时循环队列为空。入队运算时,首先队尾指针(rear)进1(即rear+1),然后在rear指针指向的位置插入新元素。特别的,当队尾指针:rear=m+1时,置lear=1。退队运算时,排头指针(front)进1(即front+1),然后删除front指针指向的位置上的元素,当排头指针front=m+1时,置front=1。从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素,则该循环队列中的元素个数为m一(m一1)=1。故选择B选项。
8.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是( )。(D)
A. 学生成绩管理系统
B. ERP系统
C. 办公自动化系统
D. LINIX系统
解析:系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件。应用软件是为了应用于特定的领域而开发的软件。D选项属于系统软件,A、B、C选项属于应用软件。故选D选项。
9.有以下程序:
#nclude
main()
{ int y=9;
for(;y>0;y- -)
if(y%3= =0)printf(\\(A)
A. 852
B. 963
C. 741
D. 875421
解析:第一次for循环,y的值为9,y%3的值为0,满足条件打印–y,即先减一后打印,所以打印8;
第二次for循环,y的值为7,y%3的值为1,不执行打印语句;
第三次for循环,y的值为6,y%3的值为0,满足条件打印–y,即先减一后打印,所以打印5;
第四次for循环,y的值为4,不满足if条件,不执行打印语句;
第五次for循环,y的值为3,满足if条件,打印输出2;
第六次for循环,y的值为1,不满足条件,不执行打印语句。
10.以下选项中叙述错误的是( )。(C)
A. C程序函数中定义的自动变量,系统不自动赋确定的初值
B. 在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内
C. C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值
D. C程序函数的形参不可以说明为static型变量
解析:A选项描述正确,自动变量未赋初值,为随机值;B选项描述正确,变量定义除在函数开始位置外,在复合语句开始也可以;C选项描述是错误的,函数内的静态变量,只在第一次调用时候赋值,以后调用保留上次值;D选项描述也正确,形参属于局部变量,占用动态存储区,而static型变量占用静态存储区。因此C选项正确。
11.有如下程序:
#include
main()
{
int a=0,b=1;
if(a++&&b++)
printf(\\(A)
A. FALSE_OUT:a=1,b=1
B. FALSE_OUT:a=0,b=2
C. TRUE_OUT:a=1,b=2
D. TRUE_OUT:a=0,b=1
解析:逻辑与运算符遵循“短路求值”策略,即只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解右操作数。表达式(a++&&b++)中,左操作数a++的值为0,已经可以确定整个逻辑表达式的结果为0,因此右操作数b++不再求解,进入else分支执行
本文档预览:3600字符,共7912字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载