二级C语言选择题专项强化真题试卷2
选择题
1.面向对象方法中,继承是指( )。(D)
A. 一组对象所具有的相似性质
B. 一个对象具有另一个对象的性质
C. 各对象之间的共同性质
D. 类之间共享属性和操作的机制
解析:继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,因此继承是指类之间共享属性和操作的机制,选项D正确。
2.以下叙述中正确的是( )。(A)
A. 在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上
B. 在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔
C. 在printf函数中,各个输出项只能是变量
D. 使用printf函数无法输出百分号%
解析:scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,所以A选项正确。scanf()的格式控制串可以使用其他非空自字符,如逗号,但在输入时必须输入这些字符以保证匹配,所以B选项错误。printf函数可以输出常量,也可以输出变量,所以C选项错误。printf函数可以通过printf(“%%”)来输出百分号%,所以D选项错误。
3.有以下程序:
#include<stdio.h>
main()
{
int i,j=0;
char a口=\\(A)
A. ay
B. How are you
C. we
D. Hay
解析:本题的功能是:一旦出现空格,即把空格后面的字符输出。主要依据if(a[i]==’’)b[j++]=a[i+1];,即把数组a中空格后的字符存放到数组b中。
4.以下关于宏的叙述错误的是( )。(C)
A. 宏替换不具有计算功能
B. 宏是一种预处理指令
C. 宏名必须用大写字母构成
D. 宏替换不占用运行时间
解析:宏名习惯采用大写字母,以便与一般变量区别,但是并没有规定一定要用大写字母。
5.设有某函数的说明为:
int*func(int a[10],int n);
则下列叙述中,正确的是( )。(B)
A. 形参a对应的实参只能是数组名
B. 说明中的a[10]写成a[]或*a,效果完全一样
C. func的函数体中不能对a进行移动指针(如a++)的操作
D. 只有指向10个整数内存单元的指针,才能作为实参传给a
解析:考查数组名作为函数参数。数组名作为函数参数时,只传递数组的首地址而不检查形参数组的长度,所以形参表中可以不给出形参数组的长度,形参数组和实参数组长度也可以不同,选项D错;a[10]、a[]、*a做形参都是接受实参数组首地址,效果一样,B正确。传递给形参的实参可以是数组名,还可以是指向该数组的指针变量,选项A错。数组名可以看做一个指针常量,对其进行自加自减运算相当于指针变量的自加自减,选项C错。答案选B。
6.层次型、网状型和关系型数据库划分原则是( )。(D)
A. 记录长度
B. 文件的大小
C. 联系的复杂程度
D. 数据之间的联系方式
解析:层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。
7.设有定义:int a=0,b=1;,以下表达式中,会产生“短路”现象,致使变量b的值不变的是( )。(A)
A. a++&&b++
B. a++||++b
C. ++a&&b++
D. +a ||++b
解析:运算符“++”放在变量前面时,表示将变量加1后再参与其他操作。a++&&b++时,由于a值是0,直接判定与运算结果为0,忽视b++的值,因此b值不发生改变,故答案为A选项。
8.有如下程序段:
for(i=0;i<10;i++)
if(i>5)break;
则循环结束后i的值为( )。(D)
A. 10
B. 5
C. 9
D. 6
解析:if(i>5)break;语句执行时先判断i的值,如果i的值大于5,执行break语句,结束循环程序,这里i=6,循环结束。因此答案为D选项。
9.有以下程序
#include
main()
{
char ch=’B’:
while(ch<’E’)
{
printf(\\(A)
A. 123
B. ABC
C. abc
D. 012
解析:当满足ch<’E’,输出ch-’A’,即字符在ASCII码相减进行输出,%d表示输出十进制整数。循环开始ch=’B’,print(“%d”,ch-’A’)=1,以此类推答案为A选项。
10.关于函数返回值,以下叙述正确的是( )。(A)
A. 函数可以返回整个结构体,即使结构体中有数组
B. 函数只能返回基本数据类型的数值或指针
C. 函数不可以返回一个数组
D. 函数不能没有返回值
解析:函数返回值可以为整型、实型、字符型、指针和结构类型,也可以没有返回值,因此A选项正确,可以返回数组指针,因此可知B、C、D选项错误。故答案为A选项。
11.有以下程序:
#include
int fun(int*b,int n)
{ int i,r=1;
for(i=0;i<=n;i++)r=r*b[i];
return r;
}
main()
{ int x,a[]={2,3,4,5,6,7,8,9};
x=fun(a,3);
printf(\\(C)
A. 24
B. 720
C. 120
D. 6
解析:函数fun()求数组指定返回的元素的积。函数fun(a,3)求的是数组a[0]一a[3]的积。因此结果为2*3*4*5=120,故答案为C选项。
12.设有以下程序段:
struct book
{ float price;
char language;
char titleE20];
}rec,*ptr;
ptr=&rec;
要求输入字符串给结构体变量rec的title成员,错误的输入语句是( )。(A)
A. scanf(\\
B. scanf(\\
C. scanf(\\
D. scanf(\\
解析:符号“一>”是指针特用的符号,“.”用于指定元素的成员。ptr是指针,只能用符号“一>”,因此选项A错误。*p是指定元素(tee)可以使用“.”运算,因此选项D正确。选项B,rec.title代
本文档预览:3600字符,共8114字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载