2016年计算机二级《C语言》精选练习题及答案(3)
- 格式:doc
- 大小:152.00 KB
- 文档页数:6
全国计算机等级考试二级笔试卷基础知识和C语言程序设计(考试时间120分钟,满分100分)2016年4月6日一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分)下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 一个完整的计算机系统包括A) 主机、键盘与显示器B) 计算机与外部设备C) 硬件系统与软件系统D) 系统软件与应用软件(2) 十六进制数1000转换成十进制数是A) 4096 B) 1024 C) 2048 D) 8192(3) 十进制数269转换成十六进制数是A) 10E B) 10D C) 10C D) 10B(4) 如果用八位二进制补码表示带符号的定点整数,则能表示的十进制数的范围是A) -127到+127 B) -128到+128 C) -127到+128 D) -128到+127(5) 下列设备中,既可作为输入设备又可作为输出设备的是A) 鼠标器B) 打印机C) 键盘D) 磁盘驱动器(6) 下列各叙述中,正确的是A) 正数十进制原码的补码是原码本身B) 所有的十进制小数都能准确地转换为有限位二进制小数C) 汉字的计算机内码就是国标码D) 存储器具有记忆能力,其中的信息任何时候都不会丢失(7) 在下列操作中,能导致DOS系统重新启动但不进行系统自检的是A) 加电开机B) 按<Ctrl>+<Break>C) 按<Ctrl>+<Alt>+<Del> D) 按RESET按钮(8) 如果给定一个带有通配符的文件名F*.?,则在下列各文件中,它能代表的文件名是A) FA.EXE B) F.C C) EF.C D) (9) DOS系统启动后,下列文件中常驻内存的是A) *.COM B) C) AUTOEXEC.BAT D) (10) 设A盘的目录结构为(画方框的为目录)如果当前盘为C盘,A盘的当前目录为\D2,则下列对A盘上文件QR.C的指定中,合法的是A) \D2\D4\QR.C B) D4\QR.C C) A:D4\QR.C D) A:D2\D4\QR.C(11) 为了要将A盘当前目录(不是根目录)中所有扩展名为.C的文件同名复制到A盘的目录\USER中,正确的命令是A) COPY A:*.C USER\*.C B) COPY A:*.C A:\USERC) COPY A:*.C A:USER\ D) COPY A:*.C A:USER\*.C(12) 为了在屏幕上一次显示当前盘当前目录下的所有扩展名为.TXT的文件内容,下列命令中正确的是A) TYPE *.TXT B) TYPE *.TXT CONC) COPY *.TXT>CON D) COPY *.TXT CON(13) 设当前盘为A盘,为了将当前盘当前目录下的文件AB1.TXT连接在C盘根目录下的文件XYZ.TXT的后面,正确的命令是A) COPY C:\XYZ.TXT+AB1.TXT B) COPY AB1.TXT>>C:\XYZ.TXTC) TYPE AB1.TXT>C:\XYZ.TXT D) COPY AB1.TXT+C:\XYZ.TXT>C:\XYZ.TXT(14) 设A盘为启动盘,其目录结构为(画方框的为目录)其中文件AUTOEXEC.BA T的内容为MD \XYZCD \DOS\USER则由A盘启动成功后,A盘的当前目录是A) \DOS\USER B) \XYZ C) \ D)\DOS(15) 下列DOS命令中为内部命令的是A) COMP B) PATH C) PRINT D) FORMAT(16) 设当前盘为C盘,所用的所有软盘已格式化且容量相同,则下列DOS命令中错误的是A) DISKCOPY A: C: B) DISKCOPY A: A: C) COPY A:*.* D) COPY A:*.* C:(17) 下列DOS命令中,有错误的是A) TYPE AAB.FOR>PRN B) TYPE ?AB.FORC) COPY *.C PRN D) COPY CON PRN(18) 设当前盘为C盘,在当前目录下有全部的DOS系统文件与批处理命令文件AB.BAT,且该批处理命令文件的内容为FORMAT A:/4MD \XYZCD \XYZRD \XYZMD \XYZ如果在1.2软盘驱动器A中插入一张360K容量的软盘片,执行批自理命令文件AB.BAT后,结果A盘的目录结构是A) 根目录B) 根目录----子目录XYZ----子目录XYZC) 根目录─┬─子目录XYZ└─子目录XYZD) 根目录----子目录XYZ(19) 下列带有通配符的文件名,能代表文件ABC.FOR的是A) *BC.? B) A?.* C) ?BC.* D) ?.?(20) 设当前盘为C盘,且C盘上含有子目录\DOS,A盘为只有根目录的启动盘(根目录下只有三个DOS系统文件与扩展名为. C的文件)。
2016计算机二级c考试答案解析一、选择题1. 在C语言中,以下哪个选项是正确的数据类型?A. intB. floatC. doubleD. char答案:ABCD解析:在C语言中,int、float、double和char都是合法的数据类型,分别表示整型、浮点型、双精度浮点型和字符型。
2. 下列哪个选项是C语言中合法的变量名?A. 2variableB. _variableC. variable2D. variable-variable答案:B C解析:在C语言中,变量名必须以字母或下划线开头,不能以数字开头。
因此,_variable和variable2是合法的变量名,而2variable和variable-variable不是。
3. 在C语言中,以下哪个选项是正确的数组声明?A. int array[10];B. int array[];C. int array[5] = {1, 2, 3, 4, 5};D. int array[10] = {1, 2, 3};答案:AC解析:在C语言中,数组可以预先声明大小,如int array[10];也可以在声明时初始化,如int array[5] = {1, 2, 3, 4, 5};。
但是,如果数组的大小在声明时没有指定,那么在初始化时必须指定,如int array[] = {1, 2, 3};是不合法的。
二、填空题1. 在C语言中,使用________关键字可以定义一个函数。
答案:void解析:在C语言中,使用void关键字可以定义一个不返回任何值的函数。
2. 若有以下代码片段:```cint a = 5;int b = a++;```则变量b的值为________。
答案:5解析:在C语言中,后置增量运算符(a++)会先返回变量的当前值,然后再将变量的值增加1。
因此,变量b的值将是a的初始值5。
三、编程题1. 编写一个C语言程序,计算并输出以下数列的前10项之和:1,1/2, 1/3, 1/4, ...答案:```c#include <stdio.h>int main() {double sum = 0.0;for (int i = 1; i <= 10; i++) {sum += 1.0 / i;}printf("The sum of the first 10 terms is: %f\n", sum);return 0;}```解析:该程序使用一个for循环来计算数列的前10项之和。
2016年c语言二级试题及答案2016年C语言二级试题及答案一、选择题1. 下列关于C语言的描述中,错误的是()。
A. C语言是一种高级语言B. C语言可以直接在操作系统上运行C. C语言具有结构化的特点D. C语言具有丰富的库函数答案:B2. 在C语言中,用于定义整型变量的关键字是()。
A. intB. floatC. charD. double答案:A3. 下列选项中,不是C语言标准库函数的是()。
A. printf()B. scanf()C. strcpy()D. strcat()答案:C二、填空题1. 在C语言中,一个整型变量占用的字节数是()。
答案:42. C语言中,用于定义字符常量的是()。
答案:单引号3. C语言中,用于定义浮点型变量的关键字是()。
答案:float三、简答题1. 请简述C语言中数组的定义方式。
答案:C语言中数组的定义方式是通过指定数组的类型、名称和大小来定义的。
例如,定义一个整型数组可以写作:`int array[10];`,其中`int`是数组的类型,`array`是数组的名称,`10`是数组的大小。
2. 请说明C语言中指针和数组的关系。
答案:在C语言中,指针和数组有密切的关系。
指针可以用于访问数组元素,数组名在大多数情况下可以作为指向数组第一个元素的指针使用。
例如,如果有一个数组`int arr[10];`,那么`arr`可以作为指向`arr[0]`的指针。
四、编程题1. 编写一个C语言程序,实现计算两个整数的和。
答案:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个整数的和是:%d\n", sum); return 0;}```2. 编写一个C语言程序,实现字符串的反转。
全国计算机等级考试二级C语言程序设计真题精选3一、单项选择题1.下列关于C语言文件的叙述中正确的是()。
A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件√D.文件由字符序列组成,其类型只能是文本文件解析:C语言将文件看作是一个字符(字节)的序列,即由一个一个字符(字节)数据顺序组成。
根据数据的组成形式,可将文件分为两种:①ASCII文件,又称文本(text)文件,它的每一个字节可放一个ASCII码,代表一个字符;②二进制文件,是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。
所以C文件就是一个字节流或一个二进制流。
2.有以下程序:#includ<stdio.h>main()inm=1,n=2,*p=&m,*q=&n,*r; r=p,p=q;q=r; printf("%d,%d,%d,%",m,n,*p,*q);}程序运行后的输出结果是()。
A.1,2,1,2B.1,2.2,1 √C.2,1,2,1D.2,1.1,2解析:本题定义了两个整型变量,然后用两个指针分别指向这两个整型变量,接着对指针进行交换,那么原来指向第一个整数的指针将指向第二个整数,原来指向第二个整数的指针将指向第一个整数。
3.有以下程序:#includ<stdio.h>#include<string.h>strucAina;chab[10];doublc;};strucf (struct);main()struca={1001,"ZhangDa",1098.0}; a=f(a);printf ("%d,%s,%6.1",a.a,a.b,a.c);}strucf(struct)t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;returt;}程序运行后的输出结果是()。
2016年03月全国计算机等级考试二级《C语言》真题(总分100, 考试时间90分钟)一、选择题1. 有以下定义:struct data{ int i;char c;double d;}x;以下叙述中错误的是______。
A x的内存地址与x. i的内存地址相同B struct data是一个类型名C 初始化时,可以对x的所有成员同时赋初值D 成员i、c和d占用的是同一个存储空间答案:D[解析] 变量i、c、d是结构体变量x中三个不同的成员,占用不同的存储空间。
2. 以下函数的功能是:计算a的n次方作为函数值返回。
double fun(double a,int n){ int i;double s=1.0;for(i=1;i<=n;i++)s=______;return s;}为实现上述功能,函数中下划线处应填入的是______。
A s*iB s*aC s+i*iD s+a*a答案:B[解析] s为a的(i-1)次方的结果,所以令s=s*a即可得到a的i次方。
3. 有以下程序:#include<stdio.h>#include<string.h>main( ){ char str[ ]={"Hello,Beijing"};printf("%d,%d\n",strlen(str),sizeof(str));}程序的运行结果是______。
A 13,13B 13,14C 13,15D 14,15答案:B[解析] strlen返回字符串的长度,不包含字符串末尾的结束字符"\0",结果为13;sizeof返回字符串所占存储空间的大小,由于字符串最后要加上一个"\0",所以结果为13+1=14。
4. 若有说明:typedef struct{int a;char c;}w;,则以下叙述正确的是______。
A 编译后系统为w分配5个字节B 编译后系统为w分配6个字节答案:D[解析] w是一个自定义类型,不是变量,故编译后系统不为w分配存储空间。
计算机二级《C语言》测试题(附答案)2016计算机二级《C语言》测试题(附答案)单项选择题1[单选题]以下叙述中错误的是A.可以通过typedef增加新的类型B.可以用typedef将已存在的类型用一个新的名字来代表C.用typedef定义新的类型名后,原有类型名仍有效D.用typedef可以为各种类型起别名,但不能为变量起别名参考答案:A参考解析:关键字typedef的作用只是将C语言中的已有的数据类型作了置换,并不是增加新的类型,所以A错误。
2[单选题]以下叙述中正确的是A.两个字符串可以用关系运算符进行大小比较B.函数调用strlen(s);会返回字符串S实际占用内存的大小(以字节为单位)C.C语言本身没有提供对字符串进行整体操作的运算符D.当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和参考答案:C参考解析:本题考查字符串处理函数strien、strcat、strcmp。
B 选项中strlen返回的是字符串s实际占用内存大小加上结尾符,A选项中不能用关系运算符进行大小比较,可以使用strcmp。
D选项当使用连接函数strcat时,内存空间会减少一个字符位置。
3[单选题]一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是()。
A.一对一B.一对多C.多对多D.多对一参考答案:C参考解析:因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的关系。
4[单选题]对于while(!E)s;,若要执行循环体s,则E的取值应为:A.E等于1B.E不等于0C.E不等于1D.E等于0参考答案:D参考解析:while语句的一般形式为:while(表达式)语句;其中表达式是循环条件,语句为循环体。
while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。
该题中如要执行语句s,则!E应为真,因此E应等于0,D选项正确。
计算机二级《C语言》练习题及答案2016计算机二级《C语言》练习题及答案2016年3月计算机考试即将在3月26日-29日进行,为了帮助大家顺利通过2016年计算机二级考试,下面店铺为大家带来2016计算机二级《C语言》练习题及答案,供大家参考学习,预祝考生备考成功!1[单选题] 有以下程序:程序运行后的输出结果是( )。
A.10,One*Dream!B.9,One*Dream!C.9,One*WorldD.10,One*World参考答案:A参考解析:P是指向二维字符数组第二行One+Dream!的数组指针,所以长度是l0,打印输出的也是该字符串。
2[简答题]编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代)。
程序运行后,若输入精度0.0005,则程序应输出为3.14…。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:参考解析:【参考答案】【考点分析】本题考查:迭代法求给定多项式的值。
迭代算法是让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。
需要注意变量的数据类型以及赋初值操作。
【解题思路】首先应该定义double类型变量,并且赋初值,用来存放多项式的某一项和最后的总和。
从第二项开始以后的每一项都是其前面一项乘以n/(2*n+1),程序中用sl来表示每一项,s表示求和后的结果。
需注意sl和s的初值都为1.0,因为循环变量从第二项开始累加。
3[单选题] 软件设计中模块划分应遵循的准则是( )。
A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合参考答案:B参考解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。
模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。
2016年3月份全国计算机等级考试二级C语言题库(全)一、选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为A)PAD图B)N-S图C)结构图D)数据流图(2)结构化程序设计主要强调的是A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性(3)为了使模块尽可能独立,要求A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(4)需求分析阶段的任务是确定A)软件开发方法B)软件开发工具C)软件开发费用D)软件系统功能(5)算法的有穷性是指A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是A)快速排序B)冒泡排序C)直接插入排序D)堆排序(7)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2 D) 任意顺序(8)将E-R图转换到关系模式时,实体与联系都可以表示成A)属性B)关系C)键D)域(9)有三个关系R、S和T如下:RB C Da 0 k1b 1 n1SB C Df 3 h2a 0 k1n 2 x1TB C Da 0 k1由关系R和S通过运算得到关系T,则所使用的运算为A)并B)自然连接C)笛卡尔积D)交(10)下列有关数据库的描述,正确的是A)数据处理是将信息转化为数据的过程B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变C)关系中的每一列称为元组,一个元组就是一个字段D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字(11)以下叙述中正确的是A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要有输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出(12)下列可用于C语言用户标识符的一组是A)void, define, WORD B)a3_3,_123,Car C)For, -abc, IF CaseD)2a, DO, sizeof(13)以下选项中可作为C语言合法常量的是A)-80 B)-080 C)-8e1.0 D)-80.0e(14)若有语句:char *line[5];,以下叙述中正确的是A) 定义line是一个数组,每个数组元素是一个基类型为char为指针变量B) 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C) 定义line是一个指针数组,语句中的*号称为间址运算符D) 定义line是一个指向字符型函数的指针(15)以下定义语句中正确的是A)int a=b=0; B)char A=65+1,b=′b′; C)float a=1,*b=&a,*c=&b;.1;(16)有以下程序段char ch; int k;ch=′a′;k=12;printf("%c,%d,",ch,ch,k); printf("k=%d \n",k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=12(17)有以下程序main(){ int i,s=1;for (i=1;i<50;i++)if(!(i%5)&&!(i%3)) s+=i;printf("%d\n",s);}A)409 B)277 C)1 D)91 (18)当变量c的值不为2、4、6时,值也为"真"的表达式是A)(c==2)||(c==4)||(c==6)B)(c>=2&& c<=6)||(c!=3)||(c!=5)C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&& c<=6)&&(c%2!=1)(19)若变量已正确定义,有以下程序段int a=3,b=5,c=7;if(a>b) a=b; c=a;if(c!=a) c=b;printf("%d,%d,%d\n",a,b,c);其输出结果是A)程序段有语法错B)3,5,3 C)3,5,5 D)3,5,7(20)有以下程序#include <stdio.h>main(){ int x=1,y=0,a=0,b=0;switch(x){ case 1:switch(y){ case 0:a++; break;case 1:b++; break;}case 2:a++; b++; break;case 3:a++; b++;}printf("a=%d,b=%d\n",a,b);}A)a=1,b=0 B)a=2,b=2 C)a=1,b=1 D)a=2,b=1(21)下列程序的输出结果是#include "stdio.h"main(){ int i,a=0,b=0;for(i=1;i<10;i++){ if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b); }A)a=4,b=4 B)a=4,b=5 C)a=5,b=4 D)a=5,b=5(22)已知#int t=0;while (t=1){...}则以下叙述正确的是A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对(23)下面程序的输出结果是main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}A)3 B)4 C)1 D)2(24)以下错误的定义语句是A)int x[][3]={{0},{1},{1,2,3}}; B)int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};C)int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; D)int x[][3]={1,2,3,4}; (25)有以下程序void ss(char *s,char t){ while(*s){ if(*s==t)*s=t-′a′+′A′;s++; } }main(){ char str1[100]="abcddfefdbd",c=′d′;ss(str1,c); printf("%s\n",str1);}程序运行后的输出结果是A)ABCDDEFEDBD B)abcDDfefDbD C)abcAAfefAbA D)Abcddfefdbd(26)有如下程序main(){ char ch[2][5]={"6937","8254"},*p[2];int i,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>′\0′;j+=2)s=10*s+p[i][j]-′0′;printf("%d\n",s);}该程序的输出结果是A)69825 B)63825 C)6385 D)693825(27)有定义语句:char s[10];,若要从终端给s输入5个字符,错误的输入语句是A)gets(&s[0]); B)scanf("%s",s+1); C)gets(s); D)scanf("%s",s[1]); (28)以下叙述中错误的是A)在程序中凡是以"#"开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#define MAX 是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的(29)设有以下说明语句typedef struct{ int n;char ch[8];} PER;则下面叙述中正确的是A)PER 是结构体变量名B)PER是结构体类型名C)typedef struct 是结构体类型D)struct 是结构体类型名(30)以下叙述中错误的是A)gets函数用于从终端读入字符串B)getchar函数用于从磁盘文件读入字符C)fputs函数用于把字符串输出到文件D)fwrite函数用于以二进制形式输出数据到文件(31)以下能正确定义一维数组的选项是A)int a[5]={0,1,2,3,4,5}; B)char a[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′}; C)char a={′A′,′B′,′C′}; D)int a[5]="0123";(32)有以下程序#include<string.h>main(){ char p[]={′a′, ′b′, ′c′},q[10]={ ′a′, ′b′, ′c′};printf("%d%d\n",strlen(p),strlen(q));}以下叙述中正确的是A) 在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3B) 由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3C) 由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3D) 由于p和q数组中都没有字符串结束符,故长度都不能确定(33)有以下程序#include <stdio.h>#include <string.h>t i,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])) {t=s[i];s[i]:s[j];s[j]=t;}}main()fun(ss,5); printf("%s,%s\n",ss[0],ss[4]);}程序的运行结果是A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc(34)有以下程序#include <stdio.h>int f(int x){ int y;if(x==0||x==1) return(3);-f(x-2);return y;}main(){ int z;z=f(3); printf("%d\n",z);}程序的运行结果是A)0 B)9 C)6 D)8(35)下面程序段的运行结果是char str[]="ABC",*p=str;printf("%d\n",*(p+3));A)67 B)0 C)字符′C′的地址D)字符′C′(36)若有以下定义:struct link{ int data;struct link *next;} a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:指针p指向变量a,q指向变量c。
2016计算机二级考试c语言真题及答案一、选择题(每题1分,共20分)1. 下列关于C语言的叙述中,正确的是()。
A. C语言的源程序文件名的后缀是.cB. C语言的源程序文件名的后缀是.cppC. C语言的源程序文件名的后缀是.javaD. C语言的源程序文件名的后缀是.py答案:A2. 在C语言中,以下哪个关键字用于定义函数?()A. structB. functionC. defineD. void答案:D3. 若有以下定义:```cint a = 10, b = 20, c = 30;```则执行以下语句后,变量c的值是多少?()```cc = a > b ? a : b;```A. 10B. 20C. 30D. 40答案:B4. 在C语言中,以下哪个运算符用于取模运算?()A. %B. /C. *D. -答案:A5. 下列关于C语言中数组的叙述,不正确的是()。
A. 数组名代表数组的首地址B. 数组名是一个常量C. 数组名可以被赋值D. 数组名可以作为函数参数答案:C6. 在C语言中,以下哪个函数用于计算字符串的长度?()A. strlen()B. strcpy()C. strcat()D. strcmp()答案:A7. 在C语言中,以下哪个关键字用于定义指针?()A. pointerB. ptrC. int*D. *答案:D8. 在C语言中,以下哪个函数用于打开文件?()A. fopen()B. fclose()C. fgetc()D. fwrite()答案:A9. 在C语言中,以下哪个函数用于将字符串复制到字符数组中?()A. strcpy()B. strncpy()C. strcat()D. strcmp()答案:A10. 在C语言中,以下哪个函数用于将格式化的数据写入文件?()A. printf()B. fprintf()C. scanf()D. fscanf()答案:B11. 在C语言中,以下哪个函数用于计算两个浮点数之间的差的绝对值?()A. fabs()B. floor()C. ceil()D. fmod()答案:A12. 在C语言中,以下哪个关键字用于定义结构体?()A. structB. unionC. enumD. typedef答案:A13. 在C语言中,以下哪个函数用于将整数转换为字符串?()A. atoi()B. itoa()C. sprintf()D. sscanf()答案:B14. 在C语言中,以下哪个函数用于获取当前时间?()A. time()B. localtime()C. mktime()D. gmtime()答案:A15. 在C语言中,以下哪个函数用于将字符串转换为浮点数?()A. atof()B. atoi()C. atol()D. atoll()答案:A16. 在C语言中,以下哪个关键字用于定义枚举类型?()A. enumB. unionC. structD. typedef答案:A17. 在C语言中,以下哪个函数用于获取字符串中的子字符串?()A. strncpy()B. strncat()C. strstr()D. strtok()答案:C18. 在C语言中,以下哪个函数用于计算两个整数之间的差的绝对值?()A. fabs()B. floor()C. abs()D. labs()答案:C19. 在C语言中,以下哪个函数用于将浮点数转换为字符串?()A. sprintf()B. sscanf()C. atof()D. atoi()答案:A20. 在C语言中,以下哪个函数用于释放动态分配的内存?()A. malloc()B. calloc()C. realloc()D. free()答案:D二、填空题(每题2分,共20分)1. 在C语言中,使用____关键字可以定义一个全局变量。
2016年计算机二级《C语言》精选练习题及答案(3)
1[单选题] 下面关于“EOF”的叙述,正确的是
A.EOF的值等于0
B.EOF是在库函数文件中定义的符号常量
C.文本文件和二进制文件都可以用EOF作为文件结束标志
D.对于文本文件,fgetc函数读入最后一个字符时,返回值是EOF
参考答案:B
参考解析:在c语言中,或更精确地说成c标准函数库中表示文件结束符(end of file)。
在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。
在文本文件中,数据都是以字符的ASCII代码值的形式存放。
我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。
2[单选题] 若有定义:int a,h;通过语句:scanf(”%d;%d”,&a,&B.;,能把整数3赋给变量a,5赋给变量b的输入数据是( )。
A.3 5
B.3,5
C.3;5
D.35
参考答案:C
参考解析:输入数据的格式必须与seanf()的格式控制串完全匹配,所以输入时必须在3和5之间输入“;”。
3[单选题] 有以下程序:
程序运行后的输出结果是( )。
A.02356
B.0235
C.235
D.2356
参考答案:C
参考解析:k的值为5,逐个对caBe语句进行匹配,均不匹配,执行default下的语句n=0;k 一一。
再执行case2:ca804:后面的语句n+=2;k一一;。
执行break语句跳出switch判断,打印n的值,即2。
经过第一次循环后,k的值为3,然后进行k>0&&ll<5条件判断为真。
第二次执行循环体,执行case3:后面的语句n+=1;k一一;。
再执行break语句跳出循环,
此时打印n的值3,此时k的值为2。
第三次执行循环体k的值为2,满足条件,执行case2:case4:后面的语句n+=2;k一一;。
执行break语句跳出循环体。
打印n的值5。
此时n不满足条件k>0&&n<5,所以结束循环。
整个程序的打印结果为235。
4[单选题] 有以下程序:
程序运行后的输出结果是( )。
A.9
B.8
C.7
D.10
参考答案:A
参考解析:题目中静态局部变量a,在静态存储区内分配存储单元,在程序整个运行期间都不释放。
所以第-次调用函数执行n+=a++;时a先与n相加在再进行自增。
n的值为4,a的值为2,且a变量执行完后空间没有释放。
再执行s:。
+f(a)时,s的值为4,调用f(a)函数时n的返回值为n=3+2=5,且此时a的值为3了。
所以s的值为9。
5[单选题]若有以下程序
则程序的输出结果是
A.abed
B.ABEJ
C.abej
D.ABCD
参考答案:C
参考解析:
若有以下程序
该题目首先初始化变量a和b,通过for循环语句使a取值为0、1、2、3,f函数的功能是将a*a+a的值返回给b,即b为a…b e j。
最后通过字符输出函数putchar()将b输出。
因此C选项正确。
6[单选题] 有以下程序
程序运行后的输出结果是
A.0.000000
B.0.250000
C.0.500000
D.1.000000
参考答案:C
参考解析:本题重点考查if语句,变量x和Y均为double类型,由于变量x赋值为2.0,因此执行if((x<5.0)&&(!x)),即条件为0,继续执行if(x<10.0),条件为1,即执行
Y=1.0/x;。
依据printf()函数输出类型中f是以小数形式输出单、双精度实数。
因此c选项正确。
7[单选题] 若有以下程序段
则程序段的输出结果是( )
A.5.170000
B.5.175000
C.5.169000
D.5.168000
参考答案:C
参考解析:本题考查强制类型转换与输出格式。
%f的输出格式是以带小数点的数学形式输出浮点数。
首先计算x*1000,结果为5168.94然后+0.5,结果为5169.44。
然后进行强制类型转换,转换成整型为5169,然后除以双精度数据1000,结果也为双精度数据5.169,输出时按照%f的格式输出,所以输出结果为5.169000。
8[单选题] 以下叙述错误的是( )。
A.一个算法所包含的操作步骤应该是有限的
B.任何能通过编译和运行的算法都一定能得到所期望的结果
C.算法中每一条指令必须有确切的含义
D.算法可以用各种描述方法来进行描述
参考答案:B
参考解析:算法的特点:零个或多个输入,至少一个输出,可行性(能编程实现),有穷性(有限步出结果),确定性(描述不能有歧义)。
可知选项A,c,D正确。
c语言中。
通过编译,
可以运行的程序,不一定符合题目的本意,因此即使可以运行得到结果,也不一定和预期的结果一样,否则就不需要调试和修改程序了,故B选项错误。
答案为B选项。
9[填空题]给定程序中,函数fun的作用是:不断从终端读入整数,由变量a统计大于0的个数,用变量c来统计小于0的个数,当输入0时结束输入,并通过形参pa和pb把统计的数据传回主函数进行输出。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在BLANKl.C中。
不得增行或删行,也不得更改程序的结构!试颖程序.
参考解析:
(1)a=0,b=0,k
(2)(k!=O)
(3)scanf(”%d”,&k)
【考点分析】
主要考察考生对循环结构的理解。
【解题思路】
填空1:a=0,b=0,k下面的scanf函数用到变量k,需要提前定义,在while循环中使用了临时存放正负数个数的变量a,b,因此也要提前定义。
填空2:(k!=0)根据题意,输入0时结束程序,因此当k!=0时进入循环记录正负数的个数。
填空3:scanf(”%d“,&k)需要不断从终端输入整数,因此在循环体内添加输入操作。
10[简答题]学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,请编写函数fun,其功能是:把分数最低的学生数据放入b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生人数:
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数flm的花括号中填入你编写的若干语句。
参考解析:
【考点分析】
本题考查:查找结构体数组中的最小数据,需要通过for循环语句和if条件语句来完成。
【解题思路】
本题中第一个循环语句的作用是遍历数组求出最低分数,第二个循环语句的作用是将数组中的元素与最低分比较,查找是否存在与最低分相等的成绩。