国家二级(C语言)机试模拟试卷477
选择题
1.若运行时给变量x输入12,则以下程序的运行结果是( )。
main()
{ int x,y;
scanf(’’%d’’,&x);
y=x>127x+10:x-12;
printff(’’%d\n’’,y);
}(A)
A. 0
B. 22
C. 12
D. 10
解析:本题考查三目条件运算符“?:”。表达式“x>127x+10:x-12”即,如果x>12成立,则x+10的值即为此表达式的值,否则x.12即为此表达式的值。因为x=12,所以x>12不成立,所以执行“y=x-12=0”。
2.有以下函数定义:
int fun(double a,double b)
{return a*b;}
若以下选项中所用变量都已正确定义并赋值,错误的函数调用是( )。
C
解析:本题考查函数调用时的参数传递。选项C)中第一个参数的表达式不正确,因此不能得到正确的结果。
3.以下叙述中正确的是( )。(A)
A. 在C语言中,预处理命令行都以\\
B. 预处理命令行必须位于C源程序的起始位置
C. #include 必须放在C程序的开头
D. C语言的预处理不能实现宏定义和条件编译的功能
解析:C语言中,凡是以\\
4.读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中buffer代表的是( )。(D)
A. 一个内存块的字节数
B. 一个整型变量,代表待读取的数据的字节数
C. 一个文件指针,指向待渎取的文件
D. 一个内存块的首地址,代表读人数据存放的地址
解析:fread(void*buffer,size_t size,siZe_t count,FILE*stream);功能是从一个义文件流中读数据,读取count个元素,每个元素size字节,如果调用成功返回count。buffer:用于接收数据的内存地址,大小至少是size*count字节;size:单个元素的大小,单位是字节;count:元素的个数,每个元素是size字节;stream:输入流。
5.有以下程序
#include
main()
{FILE*fp;int i=20,j=30,k,n;
fp=fopen(\\(A)
A. 20 30
B. 20 50
C. 30 50
D. 30 20
解析:分析程序段,首先以只写方式打开文件,利用fprintf函数将i和j的值写入到文件d1.dat中,然后关闭文件;再以只读方式打开文件,利用格式化输入函数fscanf将文件中的数据赋值给k和n,最后输出k和n的值,分别是20和30。
6.面向对象方法中,继承是指( )。(D)
A. 一组对象所具有的相似性质
B. 一个对象具有另一个对象的性质
C. 各对象之间的共同性质
D. 类之间共享属性和操作的机制
解析:继承是面向对象方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。在广义上来说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,因而说继承是指类之间共享属性和操作的机制。
7.将E—R图转换到关系模式时,实体与联系都可以表示成( )。(B)
A. 属性
B. 关系
C. 记录
D. 码
解析:E-R图由实体、实体的属性和实体之间的联系3个要素组成,关系模型的逻辑结构是一组关系模式的集合,将E-R图转换为关系模型:将实体、实体的属性和实体之间的联系转化为关系模式。如下表所示。
8.C语言主要是借助以下( )功能来实现程序模块化的。(A)
A. 定义函数
B. 定义常量和外部变量
C. 三种基本结构语句
D. 丰富的数据类型
解析:C程序的模块化主要通过函数来实现。C语言允许对函数单独进行编译,从而可以实现模块化。
9.下列程序的运行结果是( )。
#include<stdio.h>
void sub(int*s,int*y)
{ static int m=4;
*y=s[0];
m++:
}
void main()
{ int a[]={1,2,3,4,5},k;
int x;
printf(’’\n’’);
for(k=0;k<=4;k++)
{ sub(a,&x);
printf(’’%d,’’,x);
}
}(A)
A. 1,1,1,1,1,
B. 1,2,3,4,5,
C. 0,0,0,0,0,
D. 4,4,4,4,4,
解析:本题中sub(int*s,int*y)函数的参数是两个指针型变量,在函数体内将数组s的第一个元素赋给y。主程序内,首先定义了一维数组并赋初值,然后通过for循环,5次调用sub(a,&x)函数,每一次调用都是将数组a的第一个元素1赋给x,并输出。
10.下列叙述中错误的是( )。(C)
A. C语句必须以分号结束
B. 复合语句在语法上被看作一条语句
C. 空语句出现在任何位置都不会影响程序运行
D. 赋值表达式末尾加分号就构成赋值语句
解析:C语言规定每条语句和数据定义的最后必须有一个分号,分号是C语句的必要组成部分。复合语句也称为“语句块”,其形式如下:{语句|;语句2;……语句n;},即用一对大括号把若干语句括起来构成一个语句组。一个复合语句在语法上视为一条语句,在一对花括号内的语句数量不限。一个赋值表达式的最后加一个分号就成为一条语句,即赋值语句。空语句是只有一个分号的语句,它什么也不做,程序设计中有时需要加一个空语句来表示存在一条语句,但随意加分号会导致逻辑上的错误,而且这种错误十分隐蔽,编辑器也不会提示逻辑错误,需要慎用。
11.字符数组a和b中存储了两个字符串,判断字符串a和b是否相等,应当使用的是( )。(A)
A. if(strcmp(a,b)==0)
B. if(strcpy(a,b))
C. if(a==b)
D. if(a=b)
解析:C语言中,判断字符串是否相等,使用字符串比较函数strcmp(),不能使用相等操作符“==”。strcmp(s1,s2)函数比较s1和s2所指字符串的大小时,若串s1>串s2,函数值大于0(正数);若串s1=串s2,函数值等于0;若串s1<串s2,函数值小于0(负数)。
12.C语言中允许用外部说明来指定变量、函数和其他标识符的特征,这里所说的外部指的是 ( )。(D)
A. 冠以关键字extern
B. 位
本文档预览:3600字符,共15854字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载