二级C语言选择题专项强化真题试卷32
选择题
1.在关系模型中,每一个二维表称为一个( )。(A)
A. 关系
B. 属性
C. 元组
D. 主码(键)
解析:关系模型采用二维表来表示,一个二维表表示一个关系。
2.下列定义变量的语句中错误的是( )。(D)
A. int_int;
B. double int_;
C. char For;
D. float US$;
解析:C语言规定,变量命名必须符合标识符的命名规则。D选项中包含了非法字符“$”,所以错误。标识只符由字母、数字或下划线组成,且第一个字符必须是大小写英文字母或者下划线,而不能是数字。大写字符与小写字符被认为是两个不同的字符,所以For不是关键字for。
3.有以下程序:
#include
main()
{ int a=1,b=1;
for(;a–;)
b–;
printf(\\(A)
A. -1.0
B. 0,0
C. -1,-1
D. 1,1
解析:题干中语句for(;a–;)的执行过程是:先判断表达式a–是否为0,因为运算符“–”在变量的后面,表示先进行其他操作,再让变量a减1,即判断a!=0成立,则进入循环,然后a减1。起始a=1不等于0。满足条件进人for循环,然后a自减1为0,b自减1为0,继续循环;再跳回for语句时,a!=0不成立,不会进入循环,但是a也要自减1为-1,循环结束。因此,最后输出a=-1,b=0。故答案为A选项。
4.有以下程序:
#include
main()
{
int a=0,b=1;
if(++a==b++)
printf(\\(C)
A. 1a=0,b=1
B. 0a=1,b=2
C. 1a=1,b=2
D. 0a=0,b=2
解析:运算符“++”放在变量后面时,表示先执行其他操作,再将变量加1;运算符“++”放在变量前面时,表示将变量加1后再参与其他操作。因此if(++a==b++)为真,输出1,再输出a,b,故程序运行后的结果是:1a=1,b=2。因此答案为C选项。
5.有以下程序:
#include
#define N 4
void fun(int a[][N])
{
int i;
for(i=0;i<N;i++)
a[0][i]+=a[N-1][N-1-i];
}
main()
{ int x[N][N]={{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}},i;
fun(x);
for(i=0;i<N;i++)printf(\\(C)
A. 4,7,10,13,
B. 1,6,11,16,
C. 17,6,11,16,
D. 5,13,21,29,
解析:N=4,for(i=0,i<N,i++)printf(x[i][j]);此语句输出x[0][0],x[1][1],x[2][2],x[3][3],其中只有x[0][0]的值在fun()函数中发生改变。在fun()函数中,当i=0时,x[0][0]=x[0][0]+x[3][3]=17,程序运行后的输出结果是:17,6,11,16。因此答案为C选项。
6.设有宏定义:
#define IsDIV(k,n)((k%n==1)?1:0)
且变量m已正确定义并赋值,则宏调用:
IsDIV(m,5)&&IsDIV(m,7)
为真时所要表达的是( )。(B)
A. 判断m是否能被5和7整除
B. 判断m被5和7整除是否都余1
C. 判断m被5或者7整除是否余1
D. 判断m是否能被5或者7整除
解析:本题考查逻辑运算符的相关概念,逻辑与若要为真,那么两边都要为真,即m都能被5和7整除都余1,所以选项B正确。
7.函数fgetc的功能是从指定文件中读入一个字符,以下与其功能完全相同的函数是( )。(D)
A. fread
B. fscanf
C. fgets
D. getc
解析:flgets读取一个长度为(n一1)的字符串;fread按照指定的长度读取数据项;对应二进制的打开方式;fscanf按指定格式读,对应文本打开方式;gete从指定的文件读入一个字符,即从fp所指向的文件中读入一个字符赋给ch。因此答案为D选项。
8.下列关于二叉树的叙述中,正确的是( )。(B)
A. 叶子结点总是比度为2的结点少一个
B. 叶子结点总是比度为2的结点多一个
C. 叶子结点数是度为2的结点数的两倍
D. 度为2的结点数是度为1的结点数的两倍
解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个。所以选择B。
9.下列关于数据库设计的叙述中,正确的是( )。(A)
A. 在需求分析阶段建立数据字典
B. 在概念设计阶段建立数据字典
C. 在逻辑设计阶段建立数据字典
D. 在物理设计阶段建立数据字典
解析:数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。
10.有以下程序
#include
main()
{
int i,k;
int array[4][2]={{1,0},{0},{2,9},{3}};
for(i=0;i<2;i++)
for(k=0;k<3;k++)
{
pfinff(\\(A)
A. 1,0,2,0,0,9,
B. 1,2,4,9,6,0,
C. 2,9,0,0,1,4,
D. 1,2,0,1,4,1,
解析:本题定义一个4行2列数组,其中赋值6个数,其余自动为0,根据for循环,第一次输出第一列前三行数,分别是1,0,2;第二次输出第二列前三行数,分别是0,0,9,因此答案为A选项。
11.有以下程序:
#include
main()
{ FILE*fp;
int i,a[6]={1,2,3,4,5,6},k;
fp=fopen(\\(A)
A. 6,5,4,3,2,1,
B. 1,2,3,4,5,6,
C. 1,1,1,1,1,1
D. 6,6,6,6,6,6,
解析:fopen(\\
12.已知字符‘A’的ASCII代码值是65,字符变量c1的值是‘A’,c2的值是‘D’。则执行语句printf(\\(D)
A. 65,68
B. A,68
C. A,B
D. 65.66
解析:打印时以%d整型格式打印输出,所以字符标量c1的值打印出来就是65,从c2-2的值打印出来就是68-2,即66。所以选择D。<
本文档预览:3600字符,共7982字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载