国家二级C语言机试(选择题)模拟试卷283
选择题
1.运行下面程序时,从键盘输入字母A,则输出结果是( )。
#include
main()
{char ch;
ch=getchar();
switch(ch)
{ case’A’:printf(\\(C)
A. AAAA
B. AAAA
BBBB
C. AAAA
BBBB
CCCC
D. AAAA
CCCC
解析:本题考查“switch”语句。因为“ch=A”,所以第一个switch语句,执行“case‘A’”后面的语句,输出AAAA,没有遇到break语句,所以接着再执行“case ‘B’”和default,分别输出BBBB和CCCC。
2.一棵二叉树共有31个节点,其中8个是叶子节点,则度为1的节点数为( )。(A)
A. 16
B. 10
C. 6
D. 4
解析:根据二叉树的性质,在任意二叉树中,度为0的节点(叶子节点)总是比度为2的节点多一个。故此度为Ⅰ的节点个数=总节点数一叶子节点数一度为2的节点数:31—8—7=16。
3.负责数据库中查询操作的数据库语言是( )。(C)
A. 数据定义语言
B. 数据管理语言
C. 数据操纵语言
D. 数据控制语言
解析:数据定义语言,负责数据的模式定义与数据的物理存取构建;数据操纵语言,负责数据的操纵,包括查询及增、删、改等操作;数据控制语言,负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。
4.下列叙述中错误的是( )。(B)
A. C程序可以由多个程序文件组成
B. 一个C语言程序只能实现一种算法
C. C程序可以由一个或多个函数组成
D. 一个C函数可以单独作为一个C程序文件存在
解析:在一个C语言程序中可以进行多种算法的实现,对算法的个数没有规定,所以B选项错误。
5.C语言中char类型数据占字节数为(C)
A. 2
B. 3
C. 1
D. 4
解析:C语言中char类型数据占字节数为1。
6.负责数据库中查询操作的数据库语言是( )。(C)
A. 数据定义语言
B. 数据管理语言
C. 数据操纵语言
D. 数据控制语言
解析:负责数据库中查询操作的数据库语言是数据操纵语言。
7.以下能正确定义字符串的语句是( )。
B
解析:C语言中,字符串是用一对双引号括起来的字符序列,并用字符型数组来存放,故C选项和D选项不属于字符串,A选项定义的是一个字符变量str,却用来存放字符串,显然也不正确,因此B选项正确。
8.执行以下程序段后,w的值为
int w=’A’,x=14,y=15;
w=((x‖y)&(w<’a’));(C)
A. -1
B. NULL
C. 1
D. 0
解析:本题考查表达式和逻辑运算。x和y分别为14和15,因此(x‖y)的值是真。w的值为’A’,其ASCII值为65,’a’的ASCII值为97,因此(w<’a’)的值为真。表达式w=((x‖y)&(w<’a’))的前后两个值均为真,整个表达式的值为真(1)。
9.结构化程序设计原则强调的是(A)
A. 自顶向下
B. 可封装性
C. 可复用性
D. 可恢复性
解析:结构化程序设计原则是:自顶向下,程序设计时,应先考虑总体,后考虑细节;逐步细化,对复杂问题,应设计一些子目标作为过渡,逐步细化;模块化,一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块;结构化编码,所谓编码就是把已经设计好的算法用计算机语言表示,即根据已经细化的算法正确写出计算机程序。
10.设有两行定义语句:
int scanf;
float case;
则以下叙述正确的是( )。(A)
A. 第2行语句不合法
B. 两行定义语句都合法
C. 第1行语句不合法
D. 两行定义语句都不合法
解析:本题考查用户标识符,用户自己定义的标识符不能与关键字相同,并且尽量避免和预定义标识符相同。本题中scanf为预定义标识符,可以作为用户标识符;case为关键字,不能作为用户标识符,故而答案选A。
11.一个教师讲授多门课程,一门课程由多个教师讲授。则实体教师和课程间的联系是(D)
A. 1:1联系
B. 1:m联系
C. m:1联系
D. m:n联系
解析:一个教师可讲授多门课程,一门课程可由多个教师讲授,则实体教师和课程的联系是多对多的联系。
12.有以下程序:
#include<stdio.h>
#include<string.h>
main( )
{char str[][20]={\\(A)
A. 10.One*Dream!
B. 9,One*Dream!
C. 9.One*Worid
D. 10,One*World
解析:p是指向二维字符数组第二行One*Dream!的数组指针,所以长度是10,打印输出的也是该字符串。
13.有以下定义语句,编译时会出现编译错误的是( )。(A)
A. char a=\\
B. char a=’\\
’;
C. char a=’a’;
D. char a=’\\\\x2d’;
解析:由两个双引号\\
14.有以下程序
#include
void fun(char *c,int d)
{ *c=*c+1;
d=d+1;
printf(\\(A)
A. b,B,b,A
B. b,B,B,A
C. a,B,B,a
D. a,B,a,B
解析:本题重点考察函数的调用,首先要了解字母对应的ASCII 码。例如 A为65,a为97 。即字母+1则可得到下一个字母。其次是函数形参和实参的问题,运行过程如下:在fun(&b,a)中,*c = ’a’, d=65。*c+1=’b’, d+1=66,printf(\\
15.以下叙述中正确的是(D)
A. 函数的类型不能是指针类型
B. 函数的形参类型不能是指针类型
C. 基类型不同的指针变量可以相互混用
D. 设有指针变量为double*p,则p+1将指针P移动8个字节
解析:在对指针进行加、减算术运算时,数字1表示1个存储单元的长度,而double类型数据在内存中占8个字节,因此移动一次移动8个字节。其他三个都不正确。
16.有以下程序
#include
main(){int x=1,y=0,a=0,b=0;
switch(x){case 1:switch(y)<
本文档预览:3600字符,共6954字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载