国家二级(C语言)机试模拟试卷438
选择题
1.在数据流图中,带有箭头的线段表示的是( )。(B )
A. 控制流
B. 数据流
C. 模块调用
D. 事件驱动
解析:数据流图中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一般在旁边标注数据流名。
2.定义如下变量和数组:
int i,x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是( )。
for(i=0;i<3;i++)printf(\\(C )
A. 159
B. 147
C. 357
D. 369
解析:本题主要考查二维数组的使用。题中利用for循环来输出x数组中的指定元素:
①当i=0时,输出x[0][2]=3;
②当i=1时,输出x[1][1]=5;
③当i=2时,输出x[2][0]=7。
3.下面结构体的定义语句中,错误的是( )。
A
解析:A选项stllJct ord{int x;int y;int z;}struct ord a;错误,不能在定义结构体的同时,又用结构体类型名定义变量。应该写成B选项或者D选项的格式。
4.在下述程序中,判断i>j共执行的次数是( )。
main()
{int i=0,j=10,k=2,s=0;
for(;;)
{i+=k;
if(i>j){printf(\\(D)
A. 4
B. 7
C. 5
D. 6
解析:分析程序,i+=k;使得i的值每次增加2然后再和i进行比较看i>j是否成立,i的变化过程为:i=2,i=4,i=6,i=8,i=10,i=12,此时i>j成立,所以判断i>j共执行的次数为6次。
5.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是( )。(B)
A. 12345ABCDE
B. EDCBA54321
C. ABCDE12345
D. 54321EDCBA
解析:栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择B。
6.数据库系统的三级模式不包括( )。(D)
A. 概念模式
B. 内模式
C. 外模式
D. 数据模式
解析:数据库系统的三级模式是概念模式、外模式和内模式,所以选择D。
7.若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )。(C)
A. scanf(\\
B. scanf(\\
C. scanf(\\
D. scanf(\\
解析:程序语句int a,b,c,*p=&c;定义了3个整型变量a,b,c和一个整型指针变量p,并且把变量c的地址赋给p。scanf函数的一般形式为“scanf(\\
8.在数据管理技术发展的三个阶段中,数据共享最好的是( )。(C)
A. 人工管理阶段
B. 文件系统阶段
C. 数据库系统阶段
D. 三个阶段相同
解析:数据库系统阶段实现了数据共享,具有数据的集成性,这使得数据可被多个应用所共享,还可以极大地减少数据冗余性。A项,在人工管理阶段,数据不保存,没有对数据进行管理的软件,数据不能共享;B项,文件系统阶段是数据库系统发展的初级阶段,它提供了简单的数据共享与数据管理能力,但是这种能力十分有限。从人工管理阶段到文件系统阶段再到数据库系统阶段,对数据共享的能力在不断增强。
9.若有定义语句:int x=10; ,则表达式x-=x+x的值为( )。(C)
A. 0
B. -20
C. -10
D. 10
解析:算术运算符+的优先级高于-= ,且-=的结合方向为自右向左,所以表达式x-=x+x可以表示成x=x-(x+x)=10-(10+10)=-10,选择C。
10.C源程序中不能表示的数制是( )。(D)
A. 十六进制
B. 八进制
C. 十进制
D. 二进制
解析:在C语言中整型常量可以用十进制、八进制和十六进制等形式表示,但不包括二进制,所以选择D。
11.有以下程序段:
#include <stdio.h>
int j; float y; char name[50];
scanf(\\(A)
A. 566.0
B. 55566
C. 7777
D. 566777
解析:它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。其中的格式命令可以说明最大域宽。 在百分号(%)与格式码之间的整数用于限制从对应域读入的最大字符数。所以j的值为55,y的值为566.0,字符数组name为7777abc。
12.已知char**s,下面正确的语句是( )。(C)
A. s=\\
B. *s=\\
C. **s=\\
D. *s=’A’;
解析:“s”是代表数组首地址的地址常量,不是变量,“=”左边不能出现常量,因此s=\\
13.以下可以正确且安全的用作用户标识符的一组选项是( )。(A)
A. _32int,long64
B. Switch,unsigned
C. Abc,getch
D. 3break,enter
解析:C语言中,合法的标识符是由字母、数字和下划线组成,并且第一个字符必须是字母或下划线,选项D中的3break错误;用户标识符不能是C语言中的关键字或函数,选项B中的unsigned是关键字,不是合法的用户标识符;选项C中的getch是库函数名,不是合法的用户标识符;C语言区分字母大小写,选项B中的Switch是合法的用户标识符;选项A中的两个标识符都是合法的用户标识符,所以本题答案为A。
14.已知下列函数定义:
fun(int *b,int c,int n,int data)
{ int k;
for(k=0;k<m*n;k++)
{*b=data;
b++;}
}
则调用此函数的正确写法是(假设变量a的说
明为int a[50])( )。(D)
A. fun(*a,4,5,1);
B. fun(&a,4,5,1);
C. fun((int*)a,4,5,1);
D. fun(a,4,5,1);
解析:本题考查函数调用时的参数传递。fun函数的调用形式为“fun(int *b,int m,int n,int data)”,而调用数组时,用数组名表示一个指向数组第一个元素的指针,因此调用时的形式为:fun(a,4,5,1)。
15.以下程序段的输出结果是( )。
#include<stdio.h>
main()
本文档预览:3600字符,共14500字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载