c语言计算机二级题库
(请在【答题】菜单上选择【选择题】命令,启动选择题测试程序,一、选择题(请在【答题】菜单上选择【选择题】命令,启动选择题测试程序,一、选择题
按照题目上的内容进行答题。作答选择题时键盘被封锁,使用键盘无效,考生须使用鼠标答题。选择题部分只能进入一次,退出后不能再次进入。选择题部分不单独计时。)
1、设有定义:double  x=2.12;,以下不能完整输出变量x值的语句是(  )。
A. printf("x=%5.0f\n",x);
B. printf("x=%f\n",x);
C. printf("x=%lf\n",x);
D. printf("x=%0.5f\n",x);
【答案】
A
【解析】
printf函数控制字符%f输出float类型,%lf输出double类型。格式控制%m.nf,表示数据输出总的宽度为m位,其中小数部分占n位。当数据的小数位多于指定宽度n时,截去右边多余的小数,并对截去的第一位小数做四舍五入处理;而当数据的小数位少于指定宽度n时,在小数的右边补零;当m小于有效位数时,整数部分输出所有有效数字并且自动对齐,小数部分按照n 指定位数输出。A项按照float格式输出数据,宽度为5位,保留小数0位,输出为2,不能完整输出x。B项按照float格式输出数据,输出为2.120000。C项按照double格式输出数据,输出为2.120000。D项按照float格式输出数据,保留小数位数为5,输出为2.12000。答案选择A选项。
2、以下叙述中正确的是(  )。
A.不同函数的形式参数不能使用相同名称的标识符
B.用户自己定义的函数只能调用库函数
C.实用的C语言源程序总是由一个或多个函数组成
D.在C语言的函数内部,可以定义局部嵌套函数
【答案】
C
【解析】
一个C程序可以有一个或多个程序文件,所以也可以有一个或多个函数,选项C正确;除了main函数不能被其他函数调用之外,用户自定义函数可以调用其他任意函数,包括库函数和用户自定义函数,选项B错误;函数是一个独立的模块,不同函数之间的定义相互没有影响,所以标识符可以相同,选项A错误;函数体内部只可以调用但是不可以定义其他函数,选项D错误;答案选择C选项。
3、设有定义:double  x=2.12;,以下不能完整输出变量x值的语句是(  )。
A. printf("x=%5.0f\n",x);
B. printf("x=%f\n",x);
C. printf("x=%lf\n",x);
D. printf("x=%0.5f\n",x);
【答案】
A
【解析】
printf函数控制字符%f输出float类型,%lf输出double类型。格式控制%m.nf,表示数据输出总的宽度为m位,其中小数部分占n位。当数据的小数位多于指定宽度n时,截去右边多余的小数,并对截去的第一位小数做四舍五入处理;而当数据的小数位少于指定宽度n时,在小数的右边补零;当m小于有效位数时,整数部分输出所有有效数字并且自动对齐,小数部分按照n 指定位数输出。A项按照float格式输出数据,宽度为5位,保留小数0位,输出为2,不能完整输出x。B项按照float格式输出数据,输出为2.120000。C项按照double格式输出数据,输出为2.120000。D项按照float格式输出数据,保留小数位数为5,输出为2.12000。答案选择A选项。
4、一名工作人员可以使用多台计算机,而一台计算机可被多名工作人员使用,则实体工作人员与实体计算机之间的联系是(  )。
A.一对一
B.一对多
C.多对多
D.多对一
【答案】
C
【解析】
一名工作人员可以操作多台计算机,而一台计算机又可以被多名工作人员使用,所以两个实体之间是多对多的关系,答案选择C选项。
5、若有C语言表达式 2+3*4+7/3,以下选项中叙述正确的执行顺序是(  )。
A.先执行3*4得12,再执行2+12得14,再执行7/3得2,最后执行14+2得16
B.先执行3*4得12,再执行7/3得2.5,最后执行2+12+2.5得16.5
C.先执行7/3得2,再执行3*4得12,再执行12+2得14,最后执行2+14得16
D.先执行2+3得5,再执行5*4得20,再执行20+7得27,最后执行27/3得9
【答案】
A
【解析】
C语言表达式的的执行顺序是从左向右,在表达式求值时,按照运算符的优先级别从高到低执行,答案选择A选项。
6、以下叙述中正确的是(  )。
A.数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
B.一条语句只能定义一个数组
C.每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
D.在引用数组元素时,下标表达式可以使用浮点数
【答案】
C
【解析】
A项错误,方括号中应当是整型常量表达式,可以使用表达式,只要计算结果是整型常量即可;B项错误,可以使用逗号隔开,来定义多个数组;D项错误,引用数组时,下标必须是自然数,还应保证下标不越界。C项正确,数组内部的变量都是同一类型,在内存中是连续存储的。答案选择C选项。
7、有以下程序
#include <stdio.h>
main()
{
 int i,j = 0;
 char a[] = "How are you", b[10] = {0};
 for (i=0; a[i]; i++)
  if (a[i] == ' ')
   b[j++] = a[i+1];
 printf("%s\n",b);
}
程序运行后的输出结果是(  )。
A. ay
B. Howareyou
C. we
D. Hay
【答案】
A
【解析】
本题的功能是:一旦出现空格,即把空格后面的字符输出。答案选择A选项。
8、以下叙述中正确的是(  )。
A.分支结构是根据算术表达式的结果来判断流程走向的
B.在C语言中,逻辑真值和假值分别对应1和0
C.对于浮点变量x和y,表达式:x==y 是非法的,会出编译错误
D.关系运算符两边的运算对象可以是C语言中任意合法的表达式
【答案】
D
【解析】
C语言中,运算符两侧的运算对象可以任意合法的表达式,选项D正确;非0和0分别对应逻辑真值和假值,选项B错;关系运算符“==”两侧的运算对象只要为合法的表达式就可以编译通过,选项C错;分支结构是根据if或者else if后面的圆括号内的表达式(不仅仅是算术表达式,还有赋值表达式、逗号表达式、关系表达式、逻辑表达式等)的值来判定流程走向的,选项A 错误;答案选择D选项。
9、以下叙述中正确的是(  )。
A.在C语言中,预处理命令行都以“#”开头
B.预处理命令行必须位于C源程序的起始位置
C. #include <stdio.h>必须放在C程序的开头
D. C语言的预处理不能实现宏定义和条件编译的功能
【答案】
A
【解析】
“编译预处理”就是在C编译程序对C源程序进行编译前,由编译预处理程序对这些编译预处理命令行进行处理的过程。A项正确,在C语言中,凡是以“#”号开头的行,都称为“编译预处理”命令行。B项错误,预处理命令行可以出现在程序的任何一行的开始部位,其作用一直持续到源文件的末尾;C项错误,#include <stdio.h>可以出现在程序的任意一行的开始部位;D项错误,预处理可以实现宏定义、条件编译和文件包含。答案选择A选项。
10、有如下程序
#include <stdio.h>
main()
{
 if('\0'== 0)putchar('X');
 if('0'== 0)putchar('Y');
 if('a'>'b')putchar('Z');
 printf("\n");
}
程序运行后的输出结果是(  )。
A. YZ
B. XYZ
C. X
D. Y
【答案】
C
【解析】
考查ASCII字符,字符'\0'、'0'、'a'、'b'的ASCII码值分别为0、48、97、98。putchar函数是向标准输出设备上输出一个字符。程序执行过程为:判断'\0'==0成立,输出X;判断'0'==0不成立,不输出;判断'a'>'b'不成立,不输出。答案选择C选项。11、字符数组a和b中存储了两个字符串,判断字符串a和b是否相等,应当使用的是(  )。
A. if(strcmp(a,b)==0)
B. if(strcpy(a,b))
C. if(a==b)
D. if(a=b)
【答案】
A
C语言中,判断字符串是否相等,使用字符串比较函数strcmp(),不能使用相等操作符“==”。strcmp(s1,s2)函数比较s1和s2所指字符串的大小时,若串s1>串s2,函数值大于0(正数);若串s1=串s2,函数值等于0;若串s1<串s2,函数值小于
0(负数)。答案选择A选项。
12、在源程序的开始处加上“#include <stdio.h>”进行文件引用的原因,以下叙述正确的是(  )。
A. stdio.件中包含标准输入输出函数的函数说明,通过引用此文件以便能正确使用printf、scanf等函数
B.将stdio.h中标准输入输出函数链接到编译生成的可执行文件中,以便能正确运行
C.将stdio.h中标准输入输出函数的源程序插入到引用处,以便进行编译链接
D.将stdio.h中标准输入输出函数的二进制代码插入到引用处,以便进行编译链接
【答案】
A
【解析】
“stdio.h”文件中包含标准输入输出函数的函数说明,预处理指令#include<stdio.h>是指程序可以在该文件中到
printf,scanf等函数,答案选择A选项。
13、以下fun函数的功能是将形参s所指字符串内容颠倒过来
void fun(char *s)
{
 int i,j,k;
 for(i=0,j=strlen(s) __________ ;i<j;i++,j--)
 {
  k=s[i];
  s[i]=s[j];
  s[j]=k;
 }
}
在横线处应填入的内容是(  )。
A. +1
B. -1
C. +0
D. ,k=0
【答案】
B
【解析】
strlen(s)函数的功能是计算s指向字符串的实际长度(不包含结束标志),由于数组的起始下标为0,所以字符串最后一个字符的下标为strlen(s)-1,所以填入的内容为-1,答案选择B选项。
14、设有定义:char p[]={'1','2','3'},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是(  )。
A. sizeof(*q)
B. sizeof(char)
C. sizeof(p)
D. sizeof(p[0])
关于printf函数正确的是
【答案】
C
【解析】
p是char类型数组,sizeof(p)计算的是数组p中所有元素所占用的字节数,而不是char型数据所占字节数。答案选择C选项。15、读取二进制文件的函数调用形式为“fread(buffer,size,count,fp);”,其中buffer代表的是(  )。
A.一个内存块的首地址,代表读入数据存放的地址
B.一个整型变量,代表待读取的数据的字节数
C.一个文件指针,指向待读取的文件
D.一个内存块的字节数
A
【解析】
“fread(void*buffer,size t_size,size t_count,FILE*stream);”功能是从一个文件流中读数据,读取count个元素,每个元素占size 个字节,如果调用成功返回count,出错或读到文件末尾时返回的记录数小于count,也可能返回0。buffer:用于接收数据的内存地址,大小至少是size*count个字节;size:单个元素的大小,单位是字节;count:元素的个数,每个元素占size个字节;stream:输入流。答案选择A选项。
16、在数据库中,数据模型包括数据结构、数据操作和(  )。
A.数据约束
B.数据类型
C.关系运算
D.查询
【答案】
A
【解析】
在数据库系统中的数据模型有三个要素:数据结构、数据操作和数据的约束条件。答案选择A选项。
17、有以下程序
#include <stdio.h>
int fun(int n)
{
 int a;
 if(n==1) return 1;
 a = n+fun(n-1);
 return (a);
}
main()
{
 printf("%d\n", fun(5));
}
程序的输出结果是(  )。
A. 10
B. 14
C. 15
D. 9
【答案】
C
【解析】
考查递归函数。函数fun()的功能是计算1到n之间的数字之和,所以计算结果为15,答案选择C选项。
18、下列叙述中正确的是(  )。
A.有一个以上根结点的数据结构不一定是非线性结构
B.只有一个根结点的数据结构不一定是线性结构
C.循环链表是非线性结构
D.双向链表是非线性结构
【答案】
B
【解析】
线性结构应满足:①有且只有一个根结点;②每个结点最多有一个前件,也最多有一个后件。有一个以上根结点的数据结构一定是非线性结构,所以A错误。树只有一个根结点,但是树是非线性结构,B项正确。循环链表和双向链表都是线性结构。答案选择B选项。
19、有以下程序
#include <stdio.h>
typedef struct {int b, p;} A;