二级C语言选择题专项强化真题试卷37
选择题
1.数据库设计中反映用户对数据要求的模式是( )。(C)
A. 内模式
B. 概念模式
C. 外模式
D. 设计模式
解析:数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户的公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,因此选择C。内模式又称物理模式,它给出了数据库物理存储结构与物理存取的方法。
2.设有定义:double x=2.12;,以下选项中不能完整输出变量x值的语句是( )。(A)
A. printf(\\
B. printf(\\
C. printf(\\
D. printf(\\
解析:本题考查printf函数的格式输出,“格式控制字符串”部分为“%f”表示按照浮点型输出,选项B正确;加入长度格式符1即“%1”表示按照双精度浮点型输出,选项C正确;若要控制输出精度,则需以“.”开头,后跟十进制整数,如“%.2f”或“%0.2f”,选项D正确;控制输出宽度则是用整数表示,如“%5f”。选项A中“%5.0f”表示输出宽度为5,右对齐,小数点后保留位数为0,所以结果输出为2,不能完整输出x,答案选A。
3.下列叙述中正确的是( )。(D)
A. 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B. 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C. 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D. 循环队列中元素的个数是由队头指针和队尾指针共同决定的
解析:循环队列有队头和队尾两个指针,但是循环队列仍是线性结构,因此A错误;在循环队列中需要队头与队尾两个指针来共同反映队列中元素的动态变化情况,因此B与C错误,故本题答案为D。
4.以下定义语句中正确的是( )。(B)
A. int a=b=0;
B. char A=65+1,b=’b’;
C. float a=1,*b=&a,*c=&b;
D. double a=0.0;b=1.1;
解析:定义变量时不能连等,所以A错误;C选项中,b是指针,c定义为指向指针的指针才可以接受&b,所以C错误;D选项,b=1.1前没有类型名,所以错误。
5.以下叙述正确的是( )。
D
解析:二维数组在初始化时,可以省略第1维,但是不可以省略第2维,可以为部分数组元素初始化。A选项、B选项和C选项内的初始化都没有错误。故D选项正确。
6.有以下程序:
#include
main()
{ int i,k=0,a[10];
for(i_0;i<10;i++)a[i]=i;
for(i=0;i<4;i++)k+=a[i] +i;
printf(\\(D)
A. 10
B. 16
C. 6
D. 12
解析:第一个for循环的作用是对数组a赋初值,数组a中各元素值依次为0一9,第二个for循环是计算数组前4项的a[i]+i之和。0+0,1+1,2+2,3+3,经计算的结果为12,因此答案为D选项。
7.函数fgetc的功能是从指定文件中读入一个字符,以下与其功能完全相同的函数是( )。(D)
A. fread
B. fscanf
C. fgets
D. getc
解析:flgets读取一个长度为(n一1)的字符串;fread按照指定的长度读取数据项;对应二进制的打开方式;fscanf按指定格式读,对应文本打开方式;gete从指定的文件读入一个字符,即从fp所指向的文件中读入一个字符赋给ch。因此答案为D选项。
8.在医院,每个医生只属于某一个诊疗科,医生同一天可为多位患者看病,而一名患者可在多个科室治疗。则实体医生和患者之间的联系是( )。(A)
A. 多对多
B. 多对一
C. 一对多
D. 一对一
解析:一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。医生可为多位患者看病,患者也可以找多位医生看病,实体医生与患者联系是多对多,A选项正确。
9.有以下程序:
#include<stdio.h>
main( )
{
int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t;
for(i=0;i<3;i++)
for(k=i+l;k<4;k++)
if(a[i][i]<a[k][k])
{t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;}
for(i=0;i<4;i++)
printf(\\(C)
A. 1,1,2,6,
B. 6,2,1,1,
C. 6,4,3,2,
D. 2,3,4,6,
解析:首先对二维数组进行赋值操作,a[0][0]、a[0][1]、…、a[3][2]、a[3][3]的值为1、4、…、6、1。通过for嵌套循环语句和if条件语句,对二维数组对角线元素进行由大到小的排序操作,程序最后通过for语句输出二维数组第l行的4个元素。因此C选项正确。
10.在一个C源程序文件中所定义的全局变量,其作用域为( )。(A)
A. 由具体定义位置和extern说明来决定范围
B. 所在程序的全部范围
C. 所在函数的全部范围
D. 所在文件的全部范围
解析:全局变量的作用域是从声明处到文件的结束。所以选择A)。
11.若有定义:char c;int d;程序运行时输入:c=1,d=2,能把字符1输入给变量c、整数2输入给变量d的输入语句是( )。(D)
A. scanf(\\
B. seanf(\\
C. seanf(\\
D. seanf(\\
解析:scanf()函数中,%d对应的参数是整数型地址,%c对应参数为char型地址,因此A、C选项错误;如果输入地址有多个,应该用逗号隔开,因此B选项错误,故答案为D选项。
12.设a、b、c是已定义的整型变量且已正确赋初值,以下赋值语句中,错误的是( )。(A)
A. a=(b=3)=1;
B. a=(b:0)+c+0;
C. a=b=c+0;
D. a=O+(b=c=0);
解析:C语言中赋值运算符具有右结合性,且括号内的表达式优先级最高,所以选项A中首先运算b=3,将3赋给b,表达式的值为3,然后再将l赋给3,这种逻辑是错误的,3是常量,不能被赋值,本题答案为A。
13.以下是正确C语言标识符的是( )。(A)
A. _8_
B. ^8^
C. ~8~
D. -8-
解析:合法C语言的标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须是字母或下划线,选项A正确;^符号不合法,选项B错误;~符号不合法,选项C错误;一符号不合法,选项D错误;本题答案为A。
14.有以下程序
#in
本文档预览:3600字符,共7032字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载