[2005年什么年]2005年NCRE考前密卷及解析-选择第21-40题

等级考试 2021-02-06 网络整理 可可

【shitiku.jxxyjl.com--等级考试】

21)以下程序的输出结果是________。

main()
{ int a=-l,b=l,k;
if((++a<0)&&!(b--<=0))
printf("%d %d\n",a,b);
else
printf("%d %d\n”,b,a);
}

A)-l l B)0 1
C)1 0 D)0 0

(21)C

知识点:if条件的判断

评析:逻辑运算符的优先次序如下:!(非)→&&(与)→||(或),但本题需特别注意的是短路的概念:对于&&运算符,其两边表达式的值只要有一边为假,则整个与运算表达式的值即为假,系统在执行时,先运算&&左边的表达式,若为假,则系统不会再判断&&运算符右边的表达式了,直接运用短路原理得整个与运算表达式的值为0。由于++a是先运算后使用,b--是先使用后运算。所以本题在执行++a后,a值为0,不满足条件,所以a为l,根据短路原理,b仍为0,接下去执行else语句,输出l 0。

(22)以下选项中,能定义s为合法的结构体变量的是________。

A) typedef struct abc
{ double a;
char b[10];
}s;

B ) struct
{ double a;
char b[10];
}s;

C) struct ABC
{ double a;
char b[10];
}
ABC s;

D ) typedef ABC
{ double a;
char b[10];
}
ABC s:

(22)B

知识点:结构体变量的定义

评析:定义一个结构体类型的变量,可采用三种方法:

①先定义结构体类型,再定义变量名;
②在定义类型的同时定义变量;
③直接定义结构类型变量,即不出现结构体名。
选项B符合第三种定义方法。

(23)请读程序:

#include<stdio.h>
#include<string.h>
main()
{
char*sl="AbCdEf",*s2="aB";
s1++;s2++;
printf("%d\n",strcmp(s1,s2));
}

上面程序的输出结果是_______。

A)正数 B)负数 C)零 D)不确定的值

(23)A

知识点:字符串比较函数strcmp()的应用

评析:strcmp(X1,X2)是串比较函数,当X1>X2时返回值为正数,当X1<X2时返回值为负数,当XI=X2时返回值为零。

本题中“sl”、“s2”分别表示这两个串中第一个字符的地址,s1++和s2++是将指针指向串的第二个字符,则*sl为“bCdEf",,*s2为“B”。而在字符串比较中。大小的确定是由各个字符串相应位置字符的ASCII码值的大小决定的。“B”的ASCII码值为66,”b”的ASCII码值为98,所以sl>s2,返回值为正数。

(24)请读程序:

#include<stdio.h>
func(int a,int b){
int c:
c=a+b:
return C:
}
main(){
int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf("%d\n",r);
}

上面程序的输出结果是________。

A)11 B)20 C)2l D)31

(24)C

知识点:自增、自减运算

评析:函数func()的作用是返回两个形参的和,第一个形参是x、y分别自减和自增后的和,其中(x--,y++,x+y)是一个逗号表达式,它的值应该等于x+y,所以整个表达式(x--,y++,x+y)的值为13,而第二个形参的值为8(根据语法规则,应当先使用,后自增),所以fune()的返回值为13+8=21。

(25)请读程序:

#include<stdio.h>
main()
{
int a,b;
for(a=1,b=l;a<=100;a++){
if(b>=20)break;
if(b%3==1){b+=3;continue;}
b_=5:
}
printf("%d\n",a);
}

上面程序的输出结果是________。

A)7 B)8 C)9 D)10

(25)B

知识点:break语句和continue语句

评析:break语句的作用是用于跳出循环体,继续执行循环体下面的语句;而continue语句的作用是用于跳出本次循环,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。“%”是求余运算符,执行第一次循环时,条件(b%3==1)为真,b=4,继续下一次循环,如此反复,当b=22时,条件(b>=20)为假,跳出循环,此时共循环8次,即a=8。

(26)请读程序片段(字符串内没有空格字符):

printf("%d\n",strlen("ATS\n0l2\l\\"));

上面程序片段的输出结果是_______。

A)l1 B)10 C)9 D)8

(26)C

知识点:字符串的长度

评析:这个语句的目的是输出“ATS\n012\1\\”这个串的长度,在串中“\\”代表一个“\”,为了和printf()函数中的转义字符区分开来,在语法上使用了两个反斜杠代替了一个反斜杠,所以它仅仅为一个字符,而”\l”代表数字l,也占一个字符,“\n”是回车换行符,也占一个字符,加上A、T、s、0、1、2,一共是9个字符。

(27)请选出可用作C语言用户标识符的一组标识符_______。

A)Void B)a3_b3 C)For D)2a
define _123 _abc DO
WORD IF case sizeof

(27)B

知识点:C语言的标识符

评析:c语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。
选项A中的void和define都和c语言的关键字重名,不合法;

选项C中的case和c语言的关键字重名,不合法;

选项D中的2a是数字打头而且sizeof和c语言的关键字重名,不合法。

(28)请选出以下程序的输出结果_______。

#include<stdio_h>
sub(int*s,int y)
{ static int t=3;
y=s[t];t--;
}
main()
{ int a[]={1,2,3,4},i,x=0;
for(i=0;i<4;i++){
sub(a,x);printf("%d",x);}
printf("\n");
}

A)1234 B)432l C)0000 D)4444

(28)C

知识点:函数的形参和实参的关系

评析:x作为函数sub()的实参时,函数对x值的改变没有返回主函数,并不能使得x的值变化,所以在打印时,x的值是始终不变的,即为O。

(29)若有以下说明和语句,请选出哪个是对c数组元素的正确引用_______。

int c[4][5],(*cp)[5];
cp=c;
A)cp+l B)*(cp+3) C)*(cp+1)+3 D)*(*cp+2)

(29)D

知识点:数组元素的引用

评析:cp=c这个语句是将数组第0行的地址赋给了cp。cp+l使指针指向二维数组c的第一行;*(cp+3)是数组c的第三行的第0列的地址值;+(cp+1)+3是数组c的第一行第三列的地址值。

(30)设有以下语句

char a=3,b=6,c;
c=a^b<<2:
则c的二进制值是_______。

A)00011011 B)00010100 C)000ll 100 D)00011000

(30)A

知识点:位运算

评析: “<<”是c语言中规定的左移运算符,例如,a=a<<2,这个语句即是将a的二进制数左移两位,左移一位相当于该数乘以2,左移两位相当于该数乘以2的2次方;,^是异或运算符,所以,c的二进制值应为0001101l。

(31)设有

static char str[]="Beijing";

则执行

printf("%d\n",strlen(strcpy(str, "China")));

后的输出结果为_______。

A)5 B)7 C)12 D)14

(31)A

知识点:字符串的长度

评析:在执行printf()函数前,数组str的长度是7,但是当使用strcpy()函数将新的值赋给str后,strlen()函数返回的应当是现在的str字符串的字符个数,即是5。

(32)以下程序的输出结果是_______。

#include<stdio.h>
main()
{ int i;
for(i=1;i<5;i++){
if(i%2)printf("*");
else continue;
printf("#");
}
print"$\n");
}

A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$

(32)C

知识点:if语句的判断

评析:当i不可以整除2时打印”*”,然后打印“#”,不能整除2则执行continue,跳过printf(“#”);语句,结束本次循环,返回到循环的起始点。当循环结束后,打印“$”。

(33)有以下程序

#include<stdio.h>
main()
{ int c;
while((c=getchar())!=‘\n’){
switch(C-‘2’){
case O:case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default:putchar(c十2);break;}
}
}

从第一列开始输入以下数据,↙代表一个回车符。
2473↙

程序的输出结果是_______。

A)668977 B)668966 C)66778777 D)6688766

(33)A

知识点:switch()语句

评析:getchar()函数是从键盘接受一个字符输入;当用户键入的字符不是回车符时,会进入一个多分支选择语句,根据表达式c-‘2’的值进行分支选择:putchar()是在屏幕上打印一个字符,最后的结果应当为668977。

(34)以下程序的输出结果是________。

main()
{ int w=5;fun(w);printf("\n");}
fun(int k)
{ if(k>O) fun(k_1);
printf("%d",k);
}

A)5 4 3 2 l B)0 1 2 3 4 5
C)1 2 3 4 5 D)5 4 3 2 1 0

(34)B

知识点:函数的递归调用

评析:函数的递归调用就是在调用一个函数的过程中又出现直接或间接地调用该函数本身。fun函数共被调用6次,即fun(5)、fun(4)、fun(3)、fun(2)、fun(1)、fun(O)。其中fun(5)是main函数调用的,其余是在fun函数中调用的。

(35)若fp是指向某文件的指针,且已读到此文件的末尾,则函数feof(f1))的返回值是_________ 。

A)EOF B)0 C)非零值 D)NULL

(35)C

知识点:文件结束符的返回值

评析:函数feof是用来判断文件是否已读到末尾,如果己读到末尾则返回非零值,否则返回O。

(36)算法的时间复杂度是指_______。

A)执行算法程序所需要的时间
B)算法程序的长度
C)算法执行过程中所需要的基本运算次数
D)算法程序中的指令条数

(36)C

知识点:算法复杂度的概念和意义(时问复杂度与空间复杂度)

评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。为了能够比较客观地反映出一个算法的效率,在度量一个算法的工作量时,不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。为此,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。

(37)下列叙述中正确的是_______。

A)线性表是线性结构 B)栈与队列是非线性结构
C)线性链表是非线性结构 D)二叉树是线性结构

(37)A

知识点:线性结构与非线性结构的概念

评析:根据数据结构中各数据元素之间相关联关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件: (1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。

(38)下面关于完全二叉树的叙述中,错误的是_______。

A)除了最后一层外,每一层上的结点数均达到最大值
B)可能缺少若干个左右叶子结点
C)完全二叉树一般不是满二叉树
D)具有结点的完全二叉树的深度为[log2n]+l

(38)B

知识点:二叉树的定义及其存储结构

评析:这里考察完全二又树与满二叉树的定义及二叉树的性质。满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点(叶子结点)的二叉树。因此选项A是正确的,而选项B是错误的。由定义可知,满二叉树肯定是完全二又树,而完全二又树一般不是满二叉树,因此选项c是正确的叙述。选项D即二又树性质(5),也是正确的。

(39)结构化程序设计主要强调的是_______。

A)程序的规模 B)程序的易读性
C)程序的执行效率 D)程序的可移植性

(39)B

知识点:结构化程序设计

评析:结构化程序设计主要强调的足结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试.以保证程序的正确性。

(40)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是_______。

A)概要设计 B)详细设计 C)可行性分析 D)需求分析

(40)D

知识点:软件工程基本概念,软件生命周期概念,软件工具与软件开发环境

评析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。软件生命周期的主要活动阶段为:

① 可行性研究和计划制定。确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可行方案,制定完成开发任务的实施计划。

②需求分析。对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。

③软件设计。系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。

④软件实现。把软件设计转换成计算机可以接受的程序代码。即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。

⑤软件测试。在设计测试用例的基础上,检验软件的各个组成部分。编写测试分析报告。

⑥运行和维护。将已交付的软件投入运行,并存运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。


本文来源:https://shitiku.jxxyjl.com/dengjikaoshi/1613.html

Copyright @ 2011- 考试题库网 All Rights Reserved. 版权所有

免责声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。

 站长统计