国家二级C语言机试(选择题)模拟试卷285
选择题
1.以下选项中,不合法的C语言用户标识符是(B)
A. AaBc
B. a-b
C. a_b
D. _1
解析:在C语言中的用户标识符只能由字母,数字和下划母组成,并且第一个字符必须是字母或下划线,在选项A中出现了非法的字符–。
2.以下选项中表示一个合法的常量是(说明:符号□表示空格)(D)
A. 123E0.2
B. 2.7eC. 0999
D. 0Xab
解析:本题考查C语言中的常量。选项A字母E后面必须是整型数,浮点数错误:选项B字母e后面没有整型数:选项C以0开始表示8进制数,8进制数没有9:选项D是一个正确的16进制常数。
3.数据库设计过程不包括( )。(D)
A. 概念设计
B. 逻辑设计
C. 物理设计
D. 算法设计
解析:数据库设计过程主要包括需求分析、概念结构设计、逻辑结构分析、数据库物理设计、数据库实施、数据库运行和维护阶段。答案为D选项。
4.数据流图中带有箭头的线段表示的是(D)
A. 控制流
B. 事件驱动
C. 模块调用
D. 数据流
解析:数据流图是从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。其中带箭头的线段表示数据流。沿箭头方向传递数据的通道,一般在旁边标注数据流名。
5.若有定义语句:int year=2009,*p=&year;,以下不能使变量year中的值增至2010的语句是( )。(B)
A. (*p)++;
B. *p++;
C. ++(*p);
D. *p+=1;
解析:由于自加运算符++的运算级别高于间接运算*的运算级别,所以B选项的表达式*p++不能使变量year中的值增至2010,因此选择B选项。
6.下列描述中正确的是(D)
A. 程序就是软件
B. 软件开发不受计算机系统的限制
C. 软件既是逻辑实体,又是物理实体
D. 软件是程序、数据与相关文档的集合
解析:计算机软件与硬件是计算机系统中相互依存的两部分。计算机软件是包括程序、数据及相关文档的完整集合。软件由两部分组成: 一部分是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。软件具有以下六个特点:①软件是一种逻辑实体,而不是物理实体,具有抽象性。②软件的生产与硬件不同,它没有明显的制作过程。③软件在运行、使用期间不存在磨损、老化问题。④软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移值的问题。⑤软件复杂性高,成本昂贵。⑥软件的开发涉及诸多社会因素。
7.执行以下程序段后,w的值为( )。
int w=’A’,x=14,y=15;
w=((x‖y)&(w<’a’));(C)
A. 一1
B. 2
C. 1
D. 0
解析:本题考查表达式和逻辑运算。x和y分别为14和15,因此(x‖y)的值是真。w的值为A,其ASCⅡ值为65,a的ASCⅡ值为97,因此(w<’a’)的值为真。表达式w=((x‖y)&(w<’a’))的前后两个值均为真,整个表达式的值为真。
8.由以下while构成的循环,循环体执行的次数是int k=0;while(k=1)k++;(C)
A. 一次也不执行
B. 执行一次
C. 无限次
D. 有语法错,不能执行
解析:循环条件表达式为赋值表达式k=1,因此循环执行无限次。
9.以下叙述中正确的是(B)
A. C语言程序总是从最前面的函数开始执行
B. C语言程序总是从main函数开始执行
C. C语言程序中main函数必须放在程序的开始位置
D. C语言程序所调用的函数必须放在main函数的前面
解析:C语言中一个源程序都有一个且只能有一个main函数,即主函数;C语言规定必须用main作为主函数名。其后的一对圆括号中可以是空的,但不能省略。程序中的main()是主函数的起始行,也是C程序执行的起始行。每一个程序都必须有一个且只能有一个主函数。一个C程序总是从主函数开始执行,到main函数体执行完后结束,而不论main函数在整个程序中的位置如何。而调用函数的定义位置和调用没有直接关系。
10.若有定义语句int a[2][3],*p[3];,则以下语句中正确的是( )。(C)
A. p=a;
B. p[0]=a;
C. p[0]=&a[1][2];
D. p[1]=&a;
解析:A选项错误,因为p是指向一个指针数组,作为数组名,不能指向别的地方。B选项错误,因为p[0]是一个int指针,也就是int*;而a是一个指向指针的指针int**。C选项正确,因为p[0]是一个int*,a[1][2]是int,&a[1][2]是int*,类型吻合。D选项错误,因为a作为数组名,不能取地址,即使能取,p[1]是int*,&a是int***,类型不对。
11.有以下程序:
#include<stdio.h>
void f(int*p,int*q);
main()
{
int m=1,n=2,*r=&m;
f(r,&n);
printf(’’%d,%d’’,m,n);
}
void f(int *p,int*q)
{
p=p+1:
*q=*q+1:
}
程序的运行结果是( )。(B)
A. 2,3
B. 1,3
C. 1,4
D. 1,2
解析:在f(int*p,int*q)函数中,执行p=p+1是将p所对应的地址加1,而*q=*q+1是将q所指向n的地址所对应的值加1,所以m的值所对应的值没有变,而n的值则为3了,因此B选项正确。
12.若有定义int w[3][5];,则以下不能正确表示该数组元素的表达式是( )。(D)
A. *(&w[0][0]+1)
B. *(**+3)
C. *(*(w+1))
D. *(w+1)[4]
解析:A选项中*(&w[0][0]+1)表示w[0][1];B选项中*(*w+3)表示w[0][3];C选项中*(*(w+1))表示w[1][0];而D选项中*(w+1)[4]的正确写法是(*w+1)[4],表示w[1][4],因此选择D选项。
13.有以下程序
#include
#define N 3
void fun(int a[][N],int b[])
{ int i,j;
for(i=0;i<N;i++)
{b[i]=a[i][0];
本文档预览:3600字符,共7827字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载