1997年4月二级C语言笔试真题及答案
- 格式:doc
- 大小:95.50 KB
- 文档页数:10
二级c语言试题及答案详解************************************************* ******************************1)下面叙述正确的是________。
A)算法的执行效率与数据的存储结构无关B)算法的空间复杂度是指算法程序中指令(或语句)的条数C)算法的有穷性是指算法必须能在执行有限个步骤之后终止D)算法的时间复杂度是指执行算法程序所需要的时间(1)C知识点:算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)评析:算法的设计可以避开具体的计算机程序设计语言,但算法的实现必须借助程序设计语言中提供的数据类型及其算法。
数据结构和算法是计算机科学的两个重要支柱。
它们是一个不可分割的整体。
算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。
算法的有穷性是指一个算法必须在执行有限的步骤以后结束。
算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算次数。
(2)以下数据结构属于非线性数据结构的是________。
A)队列B)线性表C)二叉树D)栈(2)C知识点:栈和队列的定义;栈和队列的顺序存储结构及其基本运算评析:线性表、栈和队列等数据结构所表达和处理的数据以线性结构为组织形式。
栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。
一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。
所以栈又称后进先出表(Last In First Out)。
队列可看作是插入在一端进行,删除在另一端进行的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。
在队列中,只能删除队头元素,队列的最后一个元素一定是最新入队的元素。
因此队列又称先进先出表(First In First Out)。
二叉树的数据结构是树型结构,结构中数据元素之间存在着一对多的关系,因此它是一种非线性数据结构。
c语言二级证考试真题及答案一、单项选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于定义一个函数?A. classB. functionC. voidD. int答案:D2. 下列哪个选项是合法的C语言变量名?A. 2variableB. variable-nameC. variable nameD. variable$name答案:B3. 若有定义 `int a[5] = {1, 2, 3, 4, 5};`,则 `a[0]` 的值是多少?A. 0B. 1C. 2D. 5答案:B4. 在C语言中,以下哪个运算符用于计算两个整数的乘积?A. %B. /C. *D. +答案:C5. 下列哪个选项是C语言中正确的注释方式?A. <!-- This is a comment -->B. // This is a commentC. /* This is a comment */D. # This is a comment答案:C6. 在C语言中,哪个函数用于计算并返回字符串的长度?A. strlen()B. length()C. size()D. strleng()答案:A7. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. +=D. ==答案:A8. 在C语言中,以下哪个关键字用于声明一个结构体?A. structB. unionC. classD. enum答案:A9. 若有定义 `int x = 10;`,则执行 `x += 5;` 后,`x` 的值是多少?A. 5B. 10C. 15D. 20答案:C10. 在C语言中,以下哪个函数用于将字符串复制到另一个字符串?A. strcpy()B. strncpy()C. strcat()D. strcmp()答案:A二、程序填空题(每空2分,共20分)给定以下代码片段,请在空白处填入正确的代码。
```c#include <stdio.h>int main() {int a, b, sum;a = 5;b = 3;sum = a + b;printf("The sum is: %d\n", sum);return 0;}若要计算两个数的乘积并打印出来,需要修改的代码为:```c#include <stdio.h>int main() {int a, b, product;a = 5;b = 3;product = a * b;printf("The product is: %d\n", product);return 0;}```三、编程题(每题30分,共60分)1. 编写一个C语言程序,实现输入两个整数,输出它们的和。
第一章C语言基础知识一,选择题1 答案是AA正确B {}可以作为复合语句的标志C main 函数不是用户命名的D 分号是语句结束的标志,肯定是语句的一部分做这个题目需要对书上的概念透彻的理解2 答案是AA 错误用户标识符:命名时,标识符的选择由用户自定,但是不能与关键字相同,所以A选项错误。
这个题目考察用户标识符3 答案是B用户标识符是标识符,所以可以是有下划线,但是中划线不属于字母,数字,下划线其中一种。
这个题目考察用户标识符的概念。
4 答案是Bprintf是预定义标识符,而预定义标识符可以是用户标识符,所以printf可以是用户标识,int是关键字,而关键字不能是用户标识符,所以int不可以是用户标识符5 答案是Dlong 是关键字,参照附录二注:6--13 考察用户标识符概念6 答案是DD答案以数字2开头了,不符合标识符定义7 答案是CC答案以数字开头了8 答案是Dint 是关键字9 答案是B答案A 是关键字,答案C是以数字开头了,不符合概念,答案D出现了小数点10 答案是A答案A出现了小数点11 答案是C答案C 以数字开头了12 答案是AB答案中float 是关键字,C答案中3c以数字3开头了,D答案中-5d 中- 不属于字母,数字,下划线中一种13 答案是AB答案中-max中-错误,C答案中3COM以字母3开头了,D答案中int 是关键字,不是用户标识符14 答案是BA答案中15. 后面不应该有点,C答案中出现了逗号,D中字母B有问题15 答案是DVisual C++6.0中int类型的变量占的字节数为4。
16 答案是BB中出现了8,而八进制只能有0到7组成17 答案是D答案D中开头是0不是o18 答案是C答案A中E后面是整数,0.5是小数答案B 中E后面不能为空答案D中E前面不能为空本题目考察指数的表示形式19 答案是C答案A中2.0有问题,不能为小数形式答案B中E前面不能为空答案D中E后面不能为空本题目考察指数的表示形式20 答案是AB中八进制中不能出现数字8,C中e后面不能是小数,D中e后面不能为空21 答案是BB中0.4是小数,不正确22 答案是CC中0.5是小数,不正确23 答案是D3.6-5/2+1.2+5%2=3.6-2+1.2+1=3.8本题目考察算术运算符,需要注意整数除以整数结果只能是整数24 答案是D%不能用于实型的计算25 答案是DD答案中$不属于字母,数字,下划线26 答案是AA答案是逗号表达式,B答案中x+1=y是赋值表达式,左边只能是变量,而这里是x+1, 同理答案C中x+10也是错误的,在D答案中,考察的是强制类型转换,正确的是(double)x/1027 答案是Ab=10;这句被注释了。
二级c语言考试题及答案文档一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中的关键字?A. intB. integerC. stringD. float答案:A2. C语言中,用于定义一个整型变量的关键字是?A. varB. letC. intD. integer答案:C3. 在C语言中,以下哪个运算符用于比较两个值是否相等?A. ==B. !=C. =D. <=答案:A4. 下列哪个函数用于计算两个数的和?A. pow()C. abs()D. sum()答案:D5. 在C语言中,哪个函数用于输入一个字符?A. scanf()B. getchar()C. printf()D. puts()答案:B6. 下列哪个选项是正确的C语言变量名?A. 2variableB. variable2C. variable-nameD. variable$name答案:B7. 在C语言中,哪个关键字用于定义一个函数?A. functionB. defC. defineD. void答案:D8. C语言中,用于输出一个整数的函数是?B. printf()C. cout()D. print()答案:B9. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. &D. |答案:A10. 在C语言中,哪个关键字用于跳过当前循环的迭代?A. continueB. breakC. returnD. exit答案:A二、填空题(每题2分,共20分)1. 在C语言中,使用________关键字可以定义一个结构体。
答案:struct2. C语言标准库函数________用于计算一个浮点数的平方根。
答案:sqrt3. 使用________运算符可以将字符'A'转换为对应的ASCII码值。
答案:(int)'A'4. 在C语言中,使用________函数可以输出格式化的字符串。
二级C语言笔试-97(总分:108.00,做题时间:90分钟)一、选择题(总题数:40,分数:70.00)1.有以下程序:struct sint x,y;) data[2]=10,100,20,200;main()struct s *p=data;printf(%d/n",++p->x));程序运行后的输出结果是()。
(分数:2.00)A.10B.11 √C.20D.21解析:[解析] 本题的考查点是结构体变量的初始化。
该题是一个对外部存储类型的结构体变量进行的初始化。
初始化后,x的值为10,y的值为100。
++(p→x)中首先p→x是把p指向结构体变量s中的x成员,此++(p→x)就相当于++x,这时x先自增,再使用,所以此时x的值为11。
故本题答案为B) 。
2.设有定义语句:char c1=92,c2=92;,则以下表达式中值为零的是( )。
(分数:2.00)A.c1^c2 √B.c1&c2C.~c2D.c1|c2解析:[解析] 本题考的是位运算。
“^’是按位异或运算,当对应位上的二进制数值相同时,异或的结果为0,对应位上的二进制数值不同时,异或的结果为1,因为c1、c2的值相同,所以异或的结果为0,所以A)为正确答案。
3.有以下程序:fun(int x,int y)(return (x+y);)main()int a=1,b=2,c=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d/n",sum);执行后的输出结果是()。
(分数:2.00)A.6B.7C.8 √D.9解析:[解析] 本题考查的知识点是逗号表达式。
因为整个逗号表达式的值为其最右边一个子表达式的值,所以程序中传递给fun()函数的第1个实参(a++,b++,a+b)的值为a+b的值。
但是,在计算a+b之前,已经先让a和b各自增1了,所以第1个实参值为(1+1)+(2+1)=5。
第三十次:一、是非判断题(每小题1分,共10分)( 判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B )1. 能影响中断响应次序的技术是中断优先级和中断屏蔽。
( 1 )2. 线性结构中元素的关系是一对一,树形结构中元素的关系也是一对一。
( 2 )3. 在操作系统中,进程是一个具有独立运行功能的程序在某个数据集合上的一次运行过程。
( 3 )4. 操作系统的存储器管理部分负责对进程进行调度。
( 4 )5. 分时操作系统通常采用时间片轮转策略为用户服务。
( 5 )6. 作业及进程的主要区别是前者是由用户提交,后者是由系统自动生成。
( 6 )7. 顺序查找只适用于存储结构为顺序存储的线性表。
( 7 )8. 栈顶的位置是随着进栈和退栈操作而变化的。
( 8 )9. 结构化程序设计主要强调的是程序的易读性。
( 9 )10.在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、判定树。
( 10 ) 参考答案:ABABA BBA B A二、选择题(每小题1分,共5分)1. 分页式存储管理的主要特点是(11 )。
11 (A) 要求作业全部同时装入内存(B) 不要求作业装入到内存的连续区域(C) 要求扩充外存容量(D) 不要求处理缺页中断2. 进程从运行状态进入就绪状态的原因可能是(12 )。
12 (A) 被选中占有处理机(B) 等待某一事件(C) 等待的事件已发生(D) 时间片用完3. 多道程序设计是指(13 )。
13 (A) 在实时系统中并发运行多个程序(B) 在分布系统工程中同一时刻运行多个程序(C) 在一台处理机上同一时刻运行多个程序(D) 在一台处理机上并发运行多个程序4. 需求分析中开发人员主要从用户那里了解(14 )。
14 (A) 软件如何做(B) 软件数据结构(C) 软件做什么(D) 软件模块大小5. 对象实现了数据和操作的结合,使数据和操作(15 )于对象的统一体中。
1996年4月全国计算机等级考试二级C语言试卷(含答案)一、选择题((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) COP Y *.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.BAT的内容为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的文件)。
2010年9月全国计算机二级C语言笔试试题一、选择题(每小题2分,共70分)(1)下列叙述中正确的是A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D)上述三种说法都不对(2)下列叙述中正确的是A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对(3)软件测试的目的是A)评估软件可靠性B)发现并改正程序中的错误C)改正程序中的错误D)发现程序中的错误(4)下面描述中,不属于软件危机表现的是A)软件过程不规范B)软件开发生产率低C)软件质量难以控制D)软件成本不断提高(5)软件生命周期是指A)软件产品从提出、实现、使用维护到停止使用退役的过程B)软件从需求分析、设计、实现到测试完成的过程C)软件的开发过程D)软件的运行维护过程(6)面向对象方法中,继承是指A)一组对象所具有的相似性质B)一个对象具有另一个对象的性质C)各对象之间的共同性质D)类之间共享属性和操作的机制(7)层次型、网状型和关系型数据库划分原则是A)记录长度B)文件的大小C)联系的复杂程度D)数据之间的联系方式(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是A)一对一B)一对多C)多对多D)多对一(9)数据库设计中反映用户对数据要求的模式是A)内模式B)概念模式C)外模式D)设计模式(10)有三个关系R、S 和T 如下:则由关系R和S 得到关系T 的操作是A)自然连接B)交C)投影D)并(11)以下关于结构化程序设计的叙述中正确的是A)一个结构化程序必须同时由顺序、分支、循环三种结构组成B)结构化程序使用goto语句会很便捷C)在C 语言中,程序的模块化是利用函数实现的D)由三种基本结构构成的程序只能解决小规模的问题(12)以下关于简单程序设计的步骤和顺序的说法中正确的是A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构(13)以下叙述中错误的是A)C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行C)所有C程序都需要编译链接无误后才能运行D)C程序中整型变量只能存放整数,实型变量只能存放浮点数(14)有以下定义:int a;long b;doublex,y;则以下选项中正确的表达式是A)a%(int)(x-y)B)a=x!=y;C)(a*y)%bD)y=x+y=x(15)以下选项中能表示合法常量的是A)整数:1,200B)实数:1.5E2.0C )字符斜杠:‘\’D)字符串:"\007"(16)表达式a+=a-=a=9的值是A)9 B)_9C)18 D)0(17)若变量已正确定义,在if (W)printf(“%d\n,k”);中,以下不可替代W的是A)a<>b+c B)ch=getchar()C)a==b+c D)a++(18)有以下程序#include<stdio.h>main(){int a=1,b=0;if(!a)b++;else if(a==0)if(a)b+=2;else b+=3;printf(”%d\n”,b);}程序运行后的输出结果是A)0 B)1C)2 D)3(19)若有定义语句int a, b;double x;则下列选项中没有错误的是A)switch(x%2)B)switch((int)x/2.0{case 0: a++; break; {case 0: a++; break;case 1: b++; break; case 1: b++; break;default : a++; b++; default : a++; b++;} }C)switch((int)x%2)D)switch((int)(x)%2){case 0: a++; break; {case 0.0: a++;break;case 1: b++; break; case 1.0: b++; break;default : a++; b++; default : a++; b++;} }(20)有以下程序#include <stdio.h>main(){int a=1,b=2;while(a<6){b+=a;a+=2;b%二10;}printf(”%d,%d\n”,a,b);}程序运行后的输出结果是A)5,11 B)7,1C)7,11 D)6,1(21)有以下程序#include<stdio.h>main(){int y=10;while(y--);printf(”Y=%d\n”,Y);}程序执行后的输出结果是A)y=0 B)y= -1C)y=1 D)while 构成无限循环(22)有以下程序#include<stdio .h>main(){char s[」=”rstuv";printf(”%c\n”,*s+2);}程序运行后的输出结果是A)tuv B)字符t的ASCII 码值C)t D)出错(23)有以下程序#include<stdio.h>#include<string.h>main(){char x[]=”STRING”;x[0」=0;x[1]=’\0’;x[2」=’0’;printf(”%d %d\n”,sizeof(x),strlen (x));}程序运行后的输出结果是A)6 1 B)7 0C)6 3 D)7 1(24)有以下程序#include<stdio.h>Int f(int x);main(){int n=1,m;m=f(f(f(n)));printf(”%d\n”,m); }int f(int x){return x*2;}程序运行后的输出结果是A)1 B)2C)4 D)8(25)以下程序段完全正确的是A)int *p; scanf("%d",&p);B)int *p; scanf(“%d”,p);C)int k, *p=&k; scanf("%d",p);D)int k, *p:; *p= &k; scanf(“%d”,p);(26)有定义语句:int *p[4];以下选项中与此语句等价的是A)int p[4]; B)int **p;C)int *(p「4」); D)int (*p)「4」;(27)下列定义数组的语句中,正确的是A)int N=10;B)#define N 10int x[N]; int x[N];C)int x[0..10];D)int x[];(28)若要定义一个具有5个元素的整型数组,以下错误的定义语句是A)int a[5]=﹛0﹜;B)int b[]={0,0,0,0,0};C)int c[2+3];D)int i=5,d[i];(29)有以下程序#include<stdio.h>void f(int *p);main(){int a[5]={1,2,3,4,5},*r=a;f(r);printf(”%d\n”;*r);}void f(int *p){p=p+3;printf(”%d,”,*p);}程序运行后的输出结果是A)1,4 B)4,4C)3,1 D)4,1(30)有以下程序(函数fun只对下标为偶数的元素进行操作)# include<stdio.h>void fun(int*a;int n){int i、j、k、t;for (i=0;i<n 一1;1+=2){k=i;‘for(j=i;j<n;j+=2)if(a[j]>a〔k])k=j;t=a〔i];a〔i]=a[k];a〔k]=t;}}main(){int aa「10」={1、2、3、4、5、6、7},i;fun(aa、7);for(i=0,i<7; i++)printf(”%d,”,aa[i]));printf(”\n”);}程序运行后的输出结果是A)7,2,5,4,3,6,1B)1,6,3,4,5,2,7C)7,6,5,4,3,2,1D)1,7,3,5,6;2,1(31)下列选项中,能够满足“若字符串s1 等于字符串s2,则执行ST"要求的是A)if(strcmp(s2,s1)==0)ST;B)if(sl==s2)ST;C)if(strcpy(s l ,s2)==1)ST;D)if(sl-s2==0)ST;(32)以下不能将s所指字符串正确复制到t 所指存储空间的是A)while(*t=*s){t++;s++;}B)for(i=0;t[i]=s[i];i++);C)do{*t++=*s++;}while(*s);D)for(i=0,j=0;t[i++]=s[j++];);(33)有以下程序(strcat 函数用以连接两个字符串)#include<stdio.h>#include<string .h>main(){char a[20]=”ABCD\OEFG\0”,b[]=”IJK”;strcat(a,b);printf(”%s\n”,a);}程序运行后的输出结果是A)ABCDE\OFG\OIJKB)ABCDIJKC)IJKD)EFGIJK(34)有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母#include<stdio.h>#include<ctype.h>void fun(char*p)全国二级c 语言笔试试题2006-2010 3 by xwj{int i=0; while (p[i ]){if (p[i]==’ ’&& islower (p 「i-1」))p[i-1]=p[i-1]-‘a ’+‘A ’; i ++; } } main (){char s1[100]=”ab cd EFG !”; fun (s1); printf (”%s\n ”,s1); }程序运行后的输出结果是 A )ab cd EFG ! B )Ab Cd EFg ! C )aB cD EFG ! D )ab cd EFg !(35)有以下程序 #include <stdio .h> void fun (int x ){if (x /2>1)fun (x /2); printf (”%d ”,x ); } main (){fun (7);printf (”\n ”);} 程序运行后的输出结果是 A )1 3 7 B )7 3 1 C )7 3 D )3 7(36)有以下程序 #include <stdio .h > int fun () {static int x=1; x+=1;return x ; } main () {int i ;s=1;for (i=1;i<=5;i++)s+=fun (); printf (”%d \n ”,s ); }程序运行后的输出结果是 A )11 B )21 C )6 D )120(37)有以下程序 #inctude <stdio .h > #include <stdlib .h > Main (){int *a ,*b ,*c ;a=b=c=(int *)malloc (sizeof (int )); *a=1;*b=2,*c=3; a=b ;printf (“%d ,%d ,%d \n ”,*a ,*b ,*c ); }程序运行后的输出结果是 A )3,3,3 B )2,2,3 C )1,2,3 D )1,1,3(38)有以下程序 #include <stdio .h> main (){int s ,t ,A=10;double B=6; s =sizeof (A );t=sizeof (B ); printf (“%d ,%d \n ”,s ,t ); }在VC6 平台上编译运行,程序运行后的输出结果是A )2,4B )4,4C )4,8D )10,6(39)若有以下语句 Typedef struct S {int g; char h;}T; 以下叙述中正确的是 A )可用S 定义结构体变量 B )可用T 定义结构体变量 C )S 是struct 类型的变量 D )T 是struct S 类型的变量(40)有以下程序 #include <stdio .h> main () {short c=124; c=c_______;printf (“%d \n ”、C ); }若要使程序的运行结果为248,应在下划线处填入的是A )>>2B )|248C )&0248D )<<I二、填空题(每空2分,共30分) (1)一个栈的初始状态为空。
1997年4月二级C语言笔试真题及答案.(考试时间120分钟,满分100分)一、选择题((1)-(40)每小题1分, (41)-(50)每小题2分, 共60分)下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 下列设备中只能作为输入设备的是A) 磁盘驱动器B) 鼠标器C) 存储器D) 显示器(2) 下列DOS组合控制键中,能使标准输出同时送到屏幕与打印机的是A) Ctrl+Break B) Ctrl+P C) Ctrl+C D) Ctrl+H(3) 通常所说的386机是A) 8位机B) 16位机C) 32位机D) 64位机(4) 二进制数01100100转换成十六进制数是A) 64 B) 63 C) 100 D) 144(5) 十六进制数100转换成十进制数是A) 1024 B) 512 C) 256 D) 128(6) 对于存有重要数据的5.25英寸软盘,防止计算机病毒感染的方法是A) 不要与有病毒的软盘放在一起B) 在写保护口贴上胶条C) 保持软盘清洁D) 定期对软盘格式化(7) 在启动DOS系统时,启动盘的根录下必须包含的文件是A) B) C) D) (8) DOS系统启动后,下列文件中常驻内存的是A) B) C) D) (9) 下列名字中,不能作为DOS磁盘文件名的是A) JTU B) 93GZ.PRG C) CON D) ATT&T.BAS(10) 下列命令中属于内部命令的是A) SYS B) COMP C) DIR D) DISKCOMP(11) 下列文件名中,能与ABC?.?匹配的是A) AB12.C B) ABCD.FOR C) ABC.TXT D) ABCD.C(12) 要列出当前盘当前目录中第三个字符为"B"的所有文件的清单,可使用的命令为A) DIR **B*.* B) DIR ??B*.? C) DIR ??B.* D) DIR ??B*.*(13) 设当前盘为C盘,其根目录下有两个子目录D1与D2,且当前目录为D1,若要进入子目录D2,可使用的命令为A) CD D2 B) CD D2\ C) CD \D2 D) CD D1\D2(14) 设当前盘为C盘,A盘当前目录为根目录。
为了删除A盘目录\WS下扩展名为.TXT的所有文件,可用的命令为A) DEL WS\*.TXT B) DEL \WS\*.TXT C) DEL A:\WS\?.TXT D) DEL A:WS\*.TXT(15) 设当前盘为C 盘,C 盘当前目录为\AAA\BBB\A\B\X 。
下列命令中能正确执行的是A) MD \AAA\BBB\A B) MD X C) MD \ D) MD \AAA\BBB\A\B\X (16) 在下列各组的两个命令中,根据给定的条件,执行效果互相等价的是A) DEL \DOS 与 RD \DOS(当前盘上有目录\DOS) B) FORMAT A:与 DEL A:*.*(A 盘为启动盘)C) DISKCOPY A: B: 与 COPY A:*.* B:(A 盘为启动盘)D) COPY F1 F2 与 TYPE F1>F2(当前盘当前目录下有文件F1)(17) 为了在1.2MB 的高密驱动器A 中格式化一张360KB 的启动盘,可用的命令为A) FORMAT A: B) FORMAT A:/S/1 C) FORMAT A:/S/4 D) FORMAT A:/S (18) 要在打印机上输出当前盘当前目录下扩展名为.TXT 的所有文件内容,正确的命令为A) COPY *.TXT PRN B) COPY *.TXT>PRN C) TYPE *.TXT PRN D) TYPE *.TXT>PRN (19) 设B 盘目录结构如下:设B 盘的当前目录为\F2,要将A 盘当前目录下的文件P.BAS 复制到B 盘的F3子目录中,可用的命令为A) COPY P.BAS B: B) COPY A:P.BAS B:\ C) COPY A:P.BAS B:\F3 D) COPY A:P.BAS B:F3\ (20) 设当前盘为A 盘,要将B 盘当前目录下的两个文件A.TXT 与X.TXT 连接后以文件名Y.TXT存放到A 盘的当前目录中,可用的命令为A) COPY A.TXT+X.TXT A:Y.TXT B) COPY B:A.TXT+X.TXT A:Y.TXT C) COPY B:A.TXT+B:X.TXT >Y.TXT D) COPY B:A.TXT+B:X.TXT Y.TXT (21) C 语言中最简单的数据类型包括A) 整型、实型、逻辑型 B) 整型、实型、字符型C) 整型、字符型、逻辑型D) 整型、实型、逻辑型、字符型(22) C 语言中,运乍对象必须是整型数的运算符是A) % B) \ C) %和\D) * *(23) 为表示关系x ≥y ≥z,应使用C 语言表达式A) (x>=y)&&(y>=z) B(x>=y)AND(y>=z) C)(x>=y>=z) D)(x>=y)&(y>=z)(24) 下述对C 语言字符数组的描术中错误的是A) 字符数组可以存放字符串B) 字符数组中的字符串可以整体输入、输出C) 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值 D) 不可以用关系运算符对字符数组中的字符串进行比较 (25) 设有如下定义: int x=10,y=3,z; 则语句printf("%d\n",z=(x%y,x/y)); 的输出结果是F11子目录 B:\根目录 F1子目录FA.TXT F21子目录 FC.TXT F2子目录 F22子目录 FB.BAS F3子目录A) 1 B) 0 C) 4 D) 3(26) 以下程序的输出结果是main(){ int x=10,y=10;printf("%d %d\n",x--,--y); }A) 10 10 B) 9 9 C) 9 10 D) 10 9(27) 定义如下变题和数组:int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是for(i=0;i<3;i++) printf("%d",x[i][2-1]);A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 9(28) 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为A) a<>0 B) !a C) a=0 D) a(29) 阅读程序:#include<stdio.h>main(){ int a[10]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%x\n",p);printf("%x\n",p+9); }该程序有两个printf 语句, 如果第一个printf 语句输出的是194, 则第二个printf语句的输出结果是A) 203 B) 204 C) 1a4 D) 1a6(30) 设有如下函数定义:int f(char *s){ char *p=s;while(*p!='\0') p++;return(p-s); }如果在主程序中用下面的语句调用上述函数,则输出结果为printf("%d\n",f("goodbey!"));A) 3 B) 6 C) 8 D) 0(31) 以下说法中正确的是A) C语言程序总是从第一个的函数开始执行B) 在C语言程序中,要调用的函数必须在main()函数中定义C) C语言程序总是从main()函数开始执行D) C语言程序中的main()函数必须放在程序的开始部分(32) 执行下面的程序后,a的值为main(){ int a,b;for (a=1,b=1;a<=100;a++){ if(b>=20) break;if(b%3==1) {b+=3; continue; }b-=5; } }A) 7 B) 8 C) 9 D) 10(33) 以下程序段的输出结果是int x=3;do { printf("%3d",x-=2);} while(!(--x));A) 1 B) 3 0 C) 1-2 D) 死循环(34) 定义如下变量: int n=10; 则下列循环的输出结果是while(n>7){ n--;printf("%d\n",n); }A) 10 B) 9 C) 10 D) 99 8 9 88 7 8 77 6(35) 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是main( ){ int x;scanf("%d",&x);if(x + + >5) printf("%d",x);else printf("%d\n",x - -); }A) 7和5 B) 6和3 C) 7和4 D) 6和4(36) 设有如下定义: char *aa[2]={"abcd","ABCD"}; 则以下就法中正确的是A) aa数组成元素的值分别是"abcd"和ABCD"B) aa是指针变量,它指向含有两个数组元素的字符型一维数组C) aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址D) aa数组的两个元素中各自存放了字符'a'和'A'的地址(37) 以下程序的输出结果是main( ){ int a=-1,b=4,k;k=(+ +a〈0)&&!(b - -〈=0);printf("%d%d%d\n",k,ab); }A) 104 B) 103 C) 003 D) 004(38) 设有以下定义:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int (*prt)[3]=a,*p=a[0];则下列能够正确表示数组元素a[1][2]的表达式是A) *((*prt+1) [2]) B) *(*(p+5)) C) (*prt+1)+2 D) *(*(a+1)+2)(39) 下列程序的输出结果是main( ){ char*p1,*p2,str[50]="xyz";p1="abcd";p2="ABCD";strcpy(str+2,strcat(p1+2,p2+1);printf)"%s",str); }A) xyabcAB B) abcABz C) ABabcz D) xycdBCD(40) 执行下面的程序后,a的值是#define SQR(X) X*Xmain( ){ int a=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a); }A) 10 B) 1 C) 9 D) 0(41) 下列程序执行后输出的结果是#include <stdio.h>f(int a){ int b=0; static c=3:a=c+ +,b+ +;return (a); }main( ){ int a=2,i,k;for(i=0;i〈2;i=+ +〉 k=f(a+ +);printf("%d\n",k); }A) 3 B) 0 C) 5 D) 4(42) 下列程序的输出结果是main( ){ int a[5]={2,4,6,8,10},*P,* *k;p=a; k=&p;printf("%d",*(p++)); printf("%d\n",* *k); }A) 4 4 B) 2 2 C) 2 4 D) 4 6(43) 阅读下列程序:main( ){ int n[3],i,j,k;for(i=0;i〈3;i++〉 n[i]=0;k=2;for (i=0;i〈k;i++〉for (j=0;j〈k;j++〉 n[j]=n[i]+1;printf("%d\n",n[1]); }下述程序运行后输出结果是A) 2 B) 1 C) 0 D) 3(44) 字符'0'的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是#include<stdio.h>main( ){ union { int i[2]; long k; char c[4]; }r,*s=&r;s->i[0]=0x39;s->i[1]=0x38;printf("%c\n",s->c[0]) }A) 39 B) 9 C) 38 D) 8(45) 设有以下定义:typedef union { long i;int k[5];char c;}DATE;struct date { int cat;DATE cow;double dog;}too;DATE max;则下列语句的执行结果是printf("%d",sizeof(struct date)+sizeof(max));A) 25 B) 30 C) 18 D) 8(46) 执行以下程序后,y的值是main ( ){ int a[]={2,4,6,8,10};int y=1,x,*p;p=&a[1];for(x=0;x<3;x++) y + = * (p + x);printf("%d\n",y); }A) 17 B) 18 C) 19 D) 20(47) 下列程序执行后输出的结果是int d=1;fun (int q){ int d=5;d + =p + +; printf("%d".d); }main( ){ int a=3;fun(a);d + = a + +; printf("%d\n",d); }A) 8 4 B) 9 6 C) 9 4 D) 8 5(48) 下列程序的输出结果是main( ){ char ch[2][5]={"6934,"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'&&p[i][j]<='9';j+=2) s=10*s+p[i][j]-'0';printf("%d\n",s);A) 6385 B) 69825 C) 63825 D) 693825(49) 以下程序的输出结果是fut (int**s,int p[2][3]){ **s=p[1][1]; }main( ){ int a[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);primtf("%d\n",*p); }A) 1 B) 7 C) 9 D) 11(50) 以下程序的输出结果是#include"ctype.h"space (char *str){ int i,t;char ts[81];for(i=0,t=0;str[i]!='\0';i+=2)if(! isspace(*str+i)&&(*(str+i)!='a'))ts[t++]=toupper(str[i]);ts[t]='\0';strcpy(str,ts); }mian( ){ char s[81]={"a b c d e f g"};space(s);puts(s); }A) abcdeg B) bcde C) ABCDE D) BCDE二、填空题(每空2分,共40分)请将每空的正确答案写在答题卡上【1】-【20】序号的横线上,答在试卷上不得分。