二级C语言真题2003年09月
- 格式:doc
- 大小:34.15 KB
- 文档页数:25
《C语言》考题和答案03年10月省计算机等级考试〈C语言〉考题和答案第一部分软件技术基础一、是非判断题(每小题1分,共10分)(判断下列各小题是否正确,如正确,在客观题答题纸对应编号上选A,否则选B)1. 数据元素是数据的基本单位,数据项是数据的最小单位。
(A )2. 栈是特殊的线性表,须用一组地址连续的存储单元来存储其元素。
(B)3. 引入虚拟存储技术后,逻辑内存总容量为内存和外存之和。
(A )4. 使用DMA 方式传送数据期间不需要CPU 干预。
(A)5. 顺序文件和链接文件的长度都可以动态变化。
(B )6. 线性顺序队列会产生“假溢出”,而线性循环队列则不会。
(A)7. 在面向对象的程序设计中,派生类只能从一个基类产生。
(B )8. 程序、数据、和进程控制块是构成一个进程的三要素。
(A )9. 黑盒测试时,既要考虑程序的内部逻辑结构又要考虑其外部特性。
(B )10. 软件的总体设计和详细设计都要用PAD 图形工具。
(B )二、单项选择题(每小题1分,共5分)1. 有X Y Z 三个元素依次入栈,不可能的出栈顺序是(B )(A) Z Y X (B) Z X Y (C) Y X Z (D) X Y Z2. 进程的状态是可以转换的,而以下哪个状态转换是不可能的(D)(A) 就绪状态→ 执行状态(B) 执行状态→ 就绪状态(C) 阻塞状态→ 就绪状态(D) 等待状态→ 执行状态3. 利用通道技术可以在(C )之间直接交换数据交换。
(A) 内存与CPU (B) CPU与外设(C) 内存与外设(D) 内存、CPU和外设三者4. 以下的准则中哪个不是软件设计的准则(A )(A) 编程语言选择准则(B) 信息屏蔽准则(C) 结构化和模块化准则(D) 抽象准则5. 有一数列:97 65 76 13 29 49 58 经过一趟排序后得到:65 97 13 76 29 49 58 请问使用的是何种排序方法(C )(A)简单插入排序(B)冒泡排序(C) 2路归并排序(D)快速排序第二部分C与C++语言程序设计一、单项选择题(每小题1分,共10分)1. 对下列程序段的描述正确的是(B )。
2003年9月全国计算机等级考试二级笔试试卷公共基础知识和Visual Basic语言程序设计(考试时间90分钟,满分100分)一、选择题((1)~(20)每小题2分,(21)~(30)每小题3分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)以下叙述中错误的是。
A)Visual Basic是事件驱动型可视化编程工具B)Visual Basic应用程序不具有明显的开始和结束语句C)Visual Basic工具箱中的所有控件都具有宽度(Width)和高度(Height)属性D)Visual Basic中控件的某些属性只能在运行时设置(2)以下叙述中错误的是。
A)在工程资源管理器窗口中只能包含一个工程文件及属于该工程的其他文件B)以.BAS为扩展名的文件是标准模块文件C)窗体文件包含该窗体及其控件的属性D)一个工程中可以含有多个标准模块文件(3)以下叙述中错误的是。
A)双击鼠标可以触发DblClick事件B)窗体或控件的事件的名称可以由编程人员确定C)移动鼠标时,会触发MouseMove事件D)控件的名称可以由编程人员设定(4)以下不属于Visual Basic系统的文件类型是。
A).frm B) .bat C).vbg D).vbp(5)以下叙述中错误的是。
A)打开一个工程文件时,系统自动装入与该工程有关的窗体、标准模块等文件B)保存Visual Basic程序时,应分别保存窗体文件及工程文件C)Visual Basic应用程序只能以解释方式执行D)事件可以由用户引发,也可以由系统引发(6)以下能正确定义数据类型TelBook的代码是。
A)Type TelBook B)Type TelBookName As String*10 Name As String*10TelNum As Integer TelNum As IntegerEnd Type End TelBookC)Type TelBook D)Typedef TelBookName String*10 Name String*10TelNum Integer TelNum IntegerEnd Type TelBook End Type(7)以下声明语句中错误的是。
一、选择题((1)~(40)每小题1分,(41)~(55)每小题2分,共60分)下列各题 A、B、C、D.四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 用8位无符号二进制数能表示的最大十进制数为A.127B.128C.255D.256(2) 在64位高档微机中,一个字长所占的二进制位数为A.8B.16C.32D.64(3) 在Windows环境下,为了复制一个对象,在用鼠标拖动该对象时应同时按住A.Alt键B.Esc键C.Shift键D.Ctrl键(4) 在Windows菜单中,暗淡(灰色)的命令项表示该命令A.暂时不能用B.正在执行C.包含下一层菜单D.包含对话框(5) 在DOS环境下,为了得到TYPE命令的帮助信息,正确的DOS命令为A.TYPEB.TYPE/HC.TYPE/*D.TYPE/?(6) 下列选项中,能作为合法DOS文件名的是A.ANP/A.DATB.ABCCOMC.ECD.BASICD.XY+Z.TXT(7) 下列叙述中正确的是A.在Windows环境下,最大化的窗口是不能移动的B.在Windows环境下,应用程序窗口最小化后,该应用程序暂停执行C.在Windows环境下,只有最小化的窗口才能关闭D.在Windows环境下,不能关闭最大化的窗口(8) 在Windows环境下,工具栏中的复制按钮是A.打印机图标B.剪刀标志C.复制标志D.粘贴标志(9) 在Windows98环境下,若要将整个屏幕上显示的内容存入剪贴板,可以按A.Ctrl+PrintScreen键B.Alt+PrintScree键C.Shift+PrintScreen键D.PrintScreen键(10) 目前,计算机病毒扩散最快的途径是A.通过软件复制B.通过网络传播C.通过磁盘考贝D.运行游戏软件(11) 以下叙述中正确的是A.C语言比其他语言高级B.C语言可以不用编译就能被计算机识别执行C.C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D.C语言出现的最晚,具有其他语言的一切优点(12) C语言中用于结构化程序设计的三种基本结构是A.顺序结构、选择结构、循环结构B.if、switch、breakC.for、while、do-whileD.if、for、continue(13) 在一个C程序中A.main函数必须出现在所有函数之前B.main函数可以在任何地方出现C.main函数必须出现在所有函数之后D.main函(14) 下列叙述中正确的是A.C语言中既有逻辑类型也有集合类型B.C语言中没有逻辑类型但有集合类型C.C语言中有逻辑类型但没有集合类型D.C语言中既没有逻辑类型也没有集合类型(15) 下列关于C语言用户标识符的叙述中正确的是A.用户标识符中可以出现在下划线和中划线(减号)B.用户标识符中不可以出现中划线,但可以出现下划线C.用户标识符中可以出现下划线,但不可以放在用户标识符的开头D.用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头(16) 若有以下程序段(n所赋的是八进制数)int m=32767,n=032767printf("%d,%o/n",m,n);执行后输出结果是A.32767,32767B.32767,032767C.32767,77777D.32767,077777(17) 下列关于单目运算符++、--的叙述中正确的是A.它们的运算对象可以是任何变量和常量B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量D.它们的运算对象可以是char型变量、int型变量和float型变量(18) 若有以下程序段int m=0xabc,n=0xabc;m-=n;printf("%X\n",m);执行后输出结果是A.0X0B.0x0C.0D.0XABC(19) 有以下程序段int m=0,n=0; char c='a';scanf("%d%c%d",&m,&c,&n);printf("%d,%c,%d\n",m,c,n);若从键盘上输入:10A10<回车>,则输出结果是:A.10,A,10B.10,a,10C.10,a,0D.10,A,0(20) 有以下程序main(){ int i;for(i=0;i<3;i++)switch(i){ case 1: printf("%d",i);case 2: printf("%d",i);default: printf("%d",i);}}执行后输出结果是A.011122B.012C.012020D.120(21) 有以下程序main(){ int i=1,j=1,k=2;if((j++‖k++)&&i++) printf("%d,%d,%d\n",i,j,k); }执行后输出结果是A.1,1,2B.2,2,1C.2,2,2D.2,2,3(22) 有以下程序main(){ int a=5,b=4,c=3,d=2;if(a>b>C.printf("%d\n",D.;else if((c-1>=D.==1)printf("%d\n",d+1);elseprintf("%d\n",d+2)}执行后输出结果是A.2B.3C.4D.编译时有错,无结果(23) 有以下程序main(){ int p[7]={11,13,14,15,16,17,18},i=0,k=0; while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k);}执行后输出结果是A.58B.56C.45D.24(24) 有以下程序main(){ int i=0,s=0;do{if(i%2){i++;continue;}i++;s +=i;}while(i<7);printf("%d\n",s);}执行后输出结果是A.16B.12C.28D.21(25) 有以下程序main(){ int i=10,j=1;printf("%d,%d\n",i--,++j);}执行后输出结果是A.9,2B.10,2C.9,1D.10,1(26) 有以下程序main(){ char a,b,c,*d;a='\'; b='\xbc';c='\0xab'; d="\017";print("%c%c%c\n",a,b,c,*D.;}编译时出现错误,以下叙述中正确的是A.程序中只有a='\';语句不正确B.b='\xbc';语句不正确C.d="\0127";语句不正确D.a='\';和c='\0xab';语句都不正确(27) 有以下程序intfl(intx,int y){ return x>y?x:y; }int f2(intx,int y){ return x>y?y:x; }main(){ int a=4,b=3,c=5,d,e,f;d=f1(a,B.; d=f1(d,C.;e=f2(a,B.; e=f2(e,C.;f=a+b+c-d-e;printf("%d,%d,%d\n",d,f,e);}执行后输出结果是A.3,4,5B.5,3,4C.5,4,3D.3,5,4(28) 有如下程序void f(intx,int y){ int t;if(x}main(){ int a=4,b=3,c=5;f(a,B.; f(a,C.; f(b,C.;printf("%d,%d,%d\n",a,b, C.;}执行后输出结果是A.3,4,5B.5,3,4C.5,4,3D.4,3,5(29) 若有以下定义和语句#includeint a=4,b=3,*p,*q,*w;p=&a; q=&b; w=q; q=NULL; 则以下选项中错误的语句是A.*q=0;B.w=p;C.*p=a;D.*p=*w;(30) 有以下程序int *f(int *x,int *y) { if(*x<*y)return x;elsereturn y;}main(){ int a=7,b=8,*p,*q,*r}; }执行后输出结果是A.7,8,8B.7,8,7C.8,7,7D.8,7,8(31) 有以下程序main(){ char *s[]={"one","two","three"},*p;p=s[1];printf("%c,%s\n",*(p+1),s[0]);}执行后输出结果是A.n,twoB.t,one C)w,oneD.o,two(32) 有以下程序main(){ int x[8]={8,7,6,5,0,0},*s;s=x+3printf("%d\n",s[2]);}执行后输出结果是A.随机值B.0C.5D.6 (33) 以下能正确定义数组并正确赋初值的语句是A.int N=5,b[N][N];B.int a[1][2]={{1},{3}};C.int c[2][]={{1,2},{3,4}};D.int d[3][2]={{1,2},{34}};(34) 有以下程序main(){ int m[][3]={1,4,7,2,5,8,3,6,9};inti,j,k=2;for(i=0;i<3;i++){ printf("%d",m[k][i]); }}执行后输出结果是A.4 5 6B.2 5 8C.3 6 9D.7 8 9(35) 以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。
2002年4月二级C语言笔试真题及答案(考试时间:120分钟,满分100分)一、选择题((1)—(40)题每小题1分,(41)—(50)题每小题2分,共和60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 在计算机中,一个字长的二进制位数是A) 8 B) 16 C) 32 D) 随CPU的型号而定(2) 计算机网络的突出优点是A) 速度快B) 资源共享 C) 精度高D) 容量大(3) 计算机网络能传送的信息是:A) 所有的多媒体信息B) 只有文本信息C) 除声音外的所有信息D) 文本和图像信息(4) 切断计算机电源后,下列存储器中的信息会丢失的是:A) RAM B) ROM C) 软盘D) 硬盘(5) 十进制数127转换成二进制数是A) 11111111 B) 01111111 C) 10000000 D) 11111110(6) 要想打印存放在当前盘当前目录上所有扩展名为.TXT 的文件内容, 应该使用的DOS命令为A) DIR *.TXT>PRN B) TYPE *.TXT>PRNC) COPY *.TXT PRN D) COPY *.TXT>PRN(7) 将当前盘当前目录及其子目录中的全部文件 (总量不足 1.2MB) 复制到一张空的A盘的根目录下,应该使用的DOS命令为A) XCOPY *.*A:\ /M B) XCOPY *.*A:\ /SC) XCOPY *.*A:\ /P D) XCOPY *.*A:\ /A(8) 在C盘根目录下执行PROMPT $p$g命令之后,DOS的提示符变为A) C:> B) C:\> C) C> D) C:\(9) DOS命令 "COPY CON DISP"中的CON代表A) 子目录 B) 磁盘文件 C) 键盘 D) 显示器(10) 结构化程序设计所规定的三种基本控制结构是A) 输入、处理、输出B) 树形、网形、环形C) 顺序、选择、循环D) 主程序、子程序、函数(11) 要把高级语言编写的源程序转换为目标程序,需要使用A) 编辑程序B) 驱动程序C) 诊断程序D) 编译程序(12) 英文小写字母d的ASCII码为100,英文大写字母D的ASCII码为A) 50 B) 66 C) 52 D) 68(13) Windows环境下,PrintScreen键的作用是A) 复制当前窗口到剪贴板B) 打印当前窗口的内容C) 复制屏幕到剪贴板 D) 打印屏幕内容(14) 在Windows环境下,为了终止应用程序的运行,应A) 关闭该应用程序窗口 B) 最小化该应用程序窗口C) 双击该应用程序窗口的标题栏 D) 将该应用程序窗口移出屏幕(15) 下列各带有通配符的文件名中,能代表文件XYZ.TXT的是A) *Z.? B) X*.* C) ?Z,TXT D) ?.?(16) 若有定义:int a=8,b=5,C;,执行语句C=a/b+0.4;后,c的值为A) 1.4 B) 1 C) 2.0 D) 2(17) 若变量a是int类型,并执行了语句:a=‘A'+1.6;,则正确的叙述是A) a的值是字符C B) a的值是浮点型C) 不允许字符型和浮点型相加D) a的值是字符‘A’的ASCII值加上1。
2003年下半年全国计算机等级考试(VFP二级)笔试试卷一、选择题((1)~(35)每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)对于现实世界中事物的特征,在实体-联系模型中使用A)属性描述B)关键字描述C)二维表格描述D)实体描述(2)把实体-联系模型转换为关系模型时,实体之间多对多联系在关系模型中是通过A)建立新的属性来实现B)建立新的关键字来实现C)建立新的关系来实现D)建立新的实体来实现(3)专门的关系运算不包括下列中的A)联接运算B)选择运算C)投影运算D)交运算(4)对关系S和关系R进行集合运算,结果中既包含S中元组也包含R中元组,这种集合运算称为A)并运算B)交运算C)差运算D)积运算(5)关于Visual FoxPro的变量,下面说法中正确的是A)使用一个简单变量之前要先声明或定义B)数组中各数组元素的数据类型可以不同C)定义数组以后,系统为数组的每个数组元素赋以数值0D)数组元素的下标下限是0 #此前在首页部分显示#(6)在下面的表达式中,运算结果为逻辑真的是A)EMPTY(.NULL.) B)LIKE("edit","edi?") C)AT("a","123abc") D)EMPTY(SPACE(10))(7)Visual FoxPro内存变量的数据类型不包括A)数值型B)货币型C)备注型D)逻辑型(8)为了设置两个表之间的数据参照完整性,要求这两个表是A)同一个数据库中的两个表B)两个自由表C)一个自由表和一个数据库表D)没有限制(9)数据库表可以设置字段有效性规则,字段有效性规则属于域完整性范畴,其中的"规则"是一个A)逻辑表达式B)字符表达式C)数值表达式D)日期表达式(10)通过指定字段的数据类型和宽度来限制该字段的取值范围,这属于数据完整性中的A)参照完整性B)实体完整性C)域完整性D)字段完整性(11)用命令"INDEX on 姓名TAG index_name "建立索引,其索引类型是A)主索引B)候选索引C)普通索引D)惟一索引(12)执行命令"INDEX on 姓名TAG index_name "建立索引后,下列叙述错误的是A)此命令建立的索引是当前有效索引B)此命令所建立的索引将保存在.idx文件中C)表中记录按索引表达式升序排序D)此命令的索引表达式是"姓名",索引名是"index_name"(13)查询订购单号(字符型,长度为4)尾字符是"1"的错误命令是A)SELECT * FROM 订单WHERE SUBSTR(订购单号,4)="1"B)SELECT * FROM 订单WHERE SUBSTR(订购单号,4,1)="1"C)SELECT * FROM 订单WHERE "1"$订购单号D)SELECT * FROM 订单WHERE RIGHT(订购单号,1)="1"(14)以下关于空值(NULL)叙述正确的是A)空值等同于空字符串B)空值表示字段或变量还没有确定值C)VFP不支持空值D)空值等同于数值0(15)两表之间"临时性"联系称为关联,在两个表之间的关联已经建立的情况下,有关"关联"的正确叙述是A)建立关联的两个表一定在同一个数据库中B)两表之间"临时性"联系是建立在两表之间"永久性"联系基础之上的C)当父表记录指针移动时,子表记录指针按一定的规则跟随移动D)当关闭父表时,子表自动被关闭(16)在SQL语句中,与表达式"工资BETWEEN 1210 AND 1240"功能相同的表达式是A)工资>=1210 AND 工资<=1240 B)工资>1210 AND 工资<1240C)工资<=1210 AND 工资>1240 D)工资>=1210 OR 工资<=1240(17)在SQL语句中,与表达式"仓库号NOT IN("wh1","wh2")"功能相同的表达式是A)仓库号="wh1" AND 仓库号="wh2" B)仓库号!="wh1" OR 仓库号# "wh2"C)仓库号< >"wh1" OR 仓库号!="wh2" D)仓库号!="wh1" AND 仓库号!="wh2"(18)打开表并设置当前有效索引(相关索引已建立)的正确命令是A)ORDER student IN 2 INDEX 学号B)USE student IN 2 ORDER 学号C)INDEX 学号ORDER student D)USE student IN 2(19)查询设计器中"联接"选项卡对应的SQL短语是A)WHERE B)JOIN C)SET D)ORDER BY(20)在SQL SELECT语句中用于实现关系的选择运算的短语是A)FOR B)WHILE C)WHERE D)CONDITION(21)执行下列一组命令之后,选择"职工"表所在工作区的错误命令是CLOSE ALLUSE 仓库IN 0USE 职工IN 0A)SELECT 职工B)SELECT 0 C)SELECT 2 D)SELECT B(22)在Visual FoxPro中有如下程序:*程序名:TEST.PRG*调用方法: DO TESTSET TALK OFFCLOSE ALLCLEAR ALLmX="Visual FoxPro"mY="二级"DO SUB1 WITH mX?mY+mXRETURN*子程序:SUB1.PRGPROCEDURE SUB1PARAMETERS mX1LOCAL mXmX=" Visual FoxPro DBMS 考试"mY="计算机等级"+mYRETURN执行命令DO TEST后,屏幕的显示结果为A)二级Visual FoxPro B)计算机等级二级Visual FoxPro DBMS 考试C)二级Visual FoxPro DBMS 考试D)计算机等级二级Visual FoxPro(23)有关连编应用程序,下面的描述正确的是A)项目连编以后应将主文件视做只读文件B)一个项目中可以有多个主文件C)数据库文件可以被指定为主文件D)在项目管理器中文件名左侧带有符号?的文件在项目连编以后是只读文件(24)新创建的表单默认标题为Form1,为了修改表单的标题,应设置表单的A)Name属性B)Caption属性C)Closable属性D)AlwaysOnTop属性(25)有关控件对象的Click事件的正确叙述是A)用鼠标双击对象时引发B)用鼠标单击对象时引发C)用鼠标右键单击对象时引发D)用鼠标右键双击对象时引发(26)关闭当前表单的程序代码是ThisForm.Release,其中的Release是表单对象的A)标题B)属性C)事件D)方法(27)以下叙述与表单数据环境有关,其中正确的是A)当表单运行时,数据环境中的表处于只读状态,只能显示不能修改B)当表单关闭时,不能自动关闭数据环境中的表C)当表单运行时,自动打开数据环境中的表D)当表单运行时,与数据环境中的表无关(28)如果菜单项的名称为"统计",热键是T,在菜单名称一栏中应输入A)统计(\(29)Visual FoxPro的报表文件.FRX中保存的是A)打印报表的预览格式B)已经生成的完整报表C)报表的格式和数据D)报表设计格式的定义(30)在DO WHILE … ENDDO循环结构中,EXIT命令的作用是A)退出过程,返回程序开始处B)转移到DO WHILE语句行,开始下一个判断和循环C)终止循环,将控制转移到本循环结构ENDDO后面的第一条语句继续执行D)终止程序执行(31)一条没有指明去向的SQL SELECT 语句执行之后,会把查询结果显示在屏幕上,要退出这个查询窗口,应该按的键是A)ALT B)DELETE C)ESC D)RETURN第(32)-(35)题使用如下三个表:学生.DBF:学号C(8) ,姓名C(12),性别C(2),出生日期D,院系C(8)课程.DBF:课程编号C(4) ,课程名称C(10) ,开课院系C(8)学生成绩.DBF:学号C(8) ,课程编号C(4) ,成绩I(32)查询每门课程的最高分,要求得到的信息包括课程名称和分数。
为⼤家收集整理了《2003年9⽉计算机等级考试⼆级C语⾔试题及答案》供⼤家参考,希望对⼤家有所帮助⼀、选择题((1)~(40)每⼩题1分,(41)~(55)每⼩题2分,共60分) 下列各题 A、B、C、D.四个选项中,只有⼀个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) ⽤8位⽆符号⼆进制数能表⽰的⼗进制数为 A.127 B.128 C.255 D.256 (2) 在64位⾼档微机中,⼀个字长所占的⼆进制位数为 A.8 B.16 C.32 D.64 (3) 在Windows环境下,为了复制⼀个对象,在⽤⿏标拖动该对象时应同时按住 A.Alt键 B.Esc键 C.Shift键 D.Ctrl键 (4) 在Windows菜单中,暗淡(灰⾊)的命令项表⽰该命令 A.暂时不能⽤ B.正在执⾏ C.包含下⼀层菜单 D.包含对话框 (5) 在DOS环境下,为了得到TYPE命令的帮助信息,正确的DOS命令为 A.TYPE B.TYPE/H C.TYPE/* D.TYPE/? (6) 下列选项中,能作为合法DOS⽂件名的是 A.ANP/A.DAT B.ABCCOM C.ECD.BASIC D.XY+Z.TXT (7) 下列叙述中正确的是 A.在Windows环境下,化的窗⼝是不能移动的 B.在Windows环境下,应⽤程序窗⼝最⼩化后,该应⽤程序暂停执⾏ C.在Windows环境下,只有最⼩化的窗⼝才能关闭 D.在Windows环境下,不能关闭化的窗⼝ (8) 在Windows环境下,⼯具栏中的复制按钮是 A.打印机图标 B.剪⼑标志 C.复制标志 D.粘贴标志 (9) 在Windows98环境下,若要将整个屏幕上显⽰的内容存⼊剪贴板,可以按 A.Ctrl+PrintScreen键 B.Alt+PrintScree键 C.Shift+PrintScreen键 D.PrintScreen键 (10) ⽬前,计算机病毒扩散最快的途径是 A.通过软件复制 B.通过络传播 C.通过磁盘考贝 D.运⾏游戏软件 (11) 以下叙述中正确的是 A.C语⾔⽐其他语⾔⾼级 B.C语⾔可以不⽤编译就能被计算机识别执⾏ C.C语⾔以接近英语国家的⾃然语⾔和数学语⾔作为语⾔的表达形式 D.C语⾔出现的最晚,具有其他语⾔的⼀切优点 (12) C语⾔中⽤于结构化程序设计的三种基本结构是 A.顺序结构、选择结构、循环结构 B.if、switch、break C.for、while、do-while D.if、for、continue (13) 在⼀个C程序中 A.main函数必须出现在所有函数之前 B.main函数可以在任何地⽅出现 C.main函数必须出现在所有函数之后 D.main函 (14) 下列叙述中正确的是 A.C语⾔中既有逻辑类型也有集合类型 B.C语⾔中没有逻辑类型但有集合类型 C.C语⾔中有逻辑类型但没有集合类型 D.C语⾔中既没有逻辑类型也没有集合类型 (15) 下列关于C语⾔⽤户标识符的叙述中正确的是 A.⽤户标识符中可以出现在下划线和中划线(减号) B.⽤户标识符中不可以出现中划线,但可以出现下划线 C.⽤户标识符中可以出现下划线,但不可以放在⽤户标识符的开头 D.⽤户标识符中可以出现在下划线和数字,它们都可以放在⽤户标识符的开头(16) 若有以下程序段(n所赋的是⼋进制数) int m=32767,n=032767 printf("%d,%o/n",m,n); 执⾏后输出结果是 A.32767,32767 B.32767,032767 C.32767,77777 D.32767,077777 (17) 下列关于单⽬运算符++、--的叙述中正确的是 A.它们的运算对象可以是任何变量和常量 B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量 C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量 D.它们的运算对象可以是char型变量、int型变量和float型变量 (18) 若有以下程序段 int m=0xabc,n=0xabc; m-=n; printf("%X\n",m); 执⾏后输出结果是 A.0X0 B.0x0 C.0 D.0XABC (19) 有以下程序段 int m=0,n=0; char c='a'; scanf("%d%c%d",&m,&c,&n); printf("%d,%c,%d\n",m,c,n); 若从键盘上输⼊:10A10<回车>,则输出结果是: A.10,A,10 B.10,a,10 C.10,a,0 D.10,A,0 (20) 有以下程序 main() { int i; for(i=0;i<3;i++) switch(i) { case 1: printf("%d",i); case 2: printf("%d",i); default: printf("%d",i); } } 执⾏后输出结果是 A.011122 B.012 C.012020 D.120 (21) 有以下程序 main() { int i=1,j=1,k=2; if((j++‖k++)&&i++) printf("%d,%d,%d\n",i,j,k); } 执⾏后输出结果是 A.1,1,2 B.2,2,1 C.2,2,2 D.2,2,3 (22) 有以下程序 main() { int a=5,b=4,c=3,d=2; if(a>b> C. printf("%d\n", D.; else if((c-1>= D.==1) printf("%d\n",d+1); else printf("%d\n",d+2) } 执⾏后输出结果是 A.2 B.3 C.4 D.编译时有错,⽆结果 (23) 有以下程序 main() { int p[7]={11,13,14,15,16,17,18},i=0,k=0; while(i<7&&p[i]%2){k=k+p[i];i++;} printf("%d\n",k); } 执⾏后输出结果是 A.58 B.56 C.45 D.24 (24) 有以下程序 main() { int i=0,s=0; do{ if(i%2){i++;continue;} i++; s +=i; }while(i<7); printf("%d\n",s); } 执⾏后输出结果是 A.16 B.12 C.28 D.21 (25) 有以下程序 main() { int i=10,j=1; printf("%d,%d\n",i--,++j); } 执⾏后输出结果是 A.9,2 B.10,2 C.9,1 D.10,1(26) 有以下程序 main() { char a,b,c,*d; a='\'; b='\xbc'; c='\0xab'; d="\017"; print("%c%c%c\n",a,b,c,* D.; } 编译时出现错误,以下叙述中正确的是 A.程序中只有a='\';语句不正确 B.b='\xbc';语句不正确 C.d="\0127";语句不正确 D.a='\';和c='\0xab';语句都不正确 (27) 有以下程序 int fl(int x,int y) { return x>y?x:y; } int f2(int x,int y) { return x>y?y:x; } main() { int a=4,b=3,c=5,d,e,f; d=f1(a, B.; d=f1(d, C.; e=f2(a, B.; e=f2(e, C.; f=a+b+c-d-e; printf("%d,%d,%d\n",d,f,e); } 执⾏后输出结果是 A.3,4,5 B.5,3,4 C.5,4,3 D.3,5,4 (28) 有如下程序 void f(int x,int y) { int t; if(x } main() { int a=4,b=3,c=5; f(a, B.; f(a, C.; f(b, C.; printf("%d,%d,%d\n",a,b, C.; } 执⾏后输出结果是 A.3,4,5 B.5,3,4 C.5,4,3 D.4,3,5 (29) 若有以下定义和语句 #include int a=4,b=3,*p,*q,*w; p=&a; q=&b; w=q; q=NULL; 则以下选项中错误的语句是 A.*q=0; B.w=p; C.*p=a; D.*p=*w; (30) 有以下程序 int *f(int *x,int *y) { if(*x<*y) return x; else return y; } main() { int a=7,b=8,*p,*q,*r}; } 执⾏后输出结果是 A.7,8,8 B.7,8,7 C.8,7,7 D.8,7,8 (31) 有以下程序 main() { char *s[]={"one","two","thre e " } , * p ; b r b d s f i d = " 3 4 7 " > 0 0 p = s [ 1 ] ; b r b d s f i d = " 3 4 8 " > 0 0 p r i n t f ( " % c , % s \ n " , * ( p + 1 ) , s [ 0 ] ) ; b r b d s f i d = " 3 4 9 " > 0 0 }。
2003《C语言程序设计》考试试卷一、填空题(每小空1分,共10分)1、C语言程序的三种基本结构是顺序结构、选择结构、循环结构。
2、为了便于实现程序的模块化,C语言以函数为程序的基本单位。
3、C语言中构造类型数据有数组、结构体和共用体。
4、表达式3.5+1/2的计算结果是 3.5 。
5、在C语言中每个变量有两个属性:数据类型和数据的存储类别。
6、文件结束符EOF的十进制值为—1 。
二、是非判断题(每小题2分,共10分,对打√,错打ⅹ)(ⅹ)1.在C语言中,函数可以递归调用或递归定义。
(ⅹ)2.C程序的执行总是从程序第一句开始。
(ⅹ)3.C程序中有调用关系的所有函数必须放在同一个源程序文件中。
(ⅹ)4.一个数组的各个数组元素可属于不同的数据类型。
(√)5.for(;;)语句相当于while(1)语句。
三、阅读填空(每小空2分,共20 分)1.以下函数求x的y 次方。
double fun(double x, int y){int i; double z=1.0;for(i=1;i<=y;i++)z= z*x ;ruturn(z);}2.下列程序计算2到100的偶数的累加和。
main(){int i,sum;for(i=2,sum=0;i<=100;i=i+2) sum+=i;printf(“sum=%d\n”,sum);}3.对数组中的元素值进行从大到小的排序。
main(){int a[]={2,4,15,3,17,5,8,23,9,7,11,13},i,j,k;for(k=0;k<12;k++)for(i=k+1;i<12;i++)if(a[i] > a[k]){j=a[i]; a[i]= a[k] ;a[k]=j ;}for(i=0;i<12;i++)printf(“%4d”,a[i]);printf(“\n”);}4.以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。
二级C语言真题2003年09月一、选择题下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
1、在计算机中,一个字节所包含二进制位的个数是A)2B)4C)8D)162、在多媒体计算机中,CD-ROM属于A)存储媒体B)传输媒体C)表现媒体D)表示媒体3、在DOS系统中,带有通配符的文件名*.*表示A)硬盘上的全部文件B)当前盘当前目录中的全部文件C)当前盘上的全部文件D)根目录中的全部文件4、十六进制数100转换为十进制数为A)256B)512C)1024D)645、能将高级语言编写的源程序转换为目标程序的软件是A)汇编程序B)编辑程序C)解释程序D)编译程序6、在Internet中,用于在计算机之间传输文件的协议是A)TELNETB)BBSC)FTPD)WWW7、在Windows环境下,资源管理器左窗口中的某文件夹左边标有"+"标记表示A)该文件夹为空B)该文件夹中含有子文件夹C)该文件夹中只包含有可执行文件D)该文件夹中包含系统文件8、在Windows环境下,下列叙述中正确的是A)在"开始"菜单中可以增加项目,也可以删除项目B)在"开始"菜单中不能增加项目,也不能删除项目C)在"开始"菜单中可以增加项目,但不能删除项目D)在"开始"菜单中不能增加项目,但可以删除项目9、从Windows环境进入DOS方式后,返回Windows环境的命令为A)QUITB)WINC)EXITD)ESC10、下列叙述中正确的是A)计算机病毒只感染可执行文件B)计算机病毒只感染文本文件C)计算机病毒只能通过软件复制的方式进行传播D)计算机病毒可以通过读写磁盘或网络等方式进行传播11、以下叙述中正确的是A)C程序中注释部分可以出现在程序中任意合适的地方B)花括号"{"和"}"只能作为函数体的定界符C)构成C程序的基本单位是函数,所有函数名都可以由用户命名D)分号是C语句之间的分隔符,不是语句的一部分12、以下选项中可作为C语言合法整数的是A)10110BB)0386C)0XffaD)x2a213、以下不能定义为用户标识符的是A)scanfB)VoidC)_3com_D)int14、有以下程序main( ){ int a; char c=10;float f=100.0; double x;a=f/=c*=(x=6.5);printf("%d %d %3.1f %3.1f\n",a,c,f,x); }程序运行后的输出结果是A)1 65 1 6.5B)1 65 1.5 6.5C)1 65 1.0 6.5D)2 65 1.5 6.515、以下选项中非法的表达式是A)0<=x<100B)i=j==0C)(char)(65+3)D)x+1=x+116、有以下程序main( ){ int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf("%d,%d\n",k,m);}程序运行后的输出结果是A)0,0B)0,1C)1,0D)1,117、有定义语句:int x, y;,若要通过scanf("%d,%d",&x,&y);语句使变量x 得到数值11,变量y得到数值12,下面四组输入形式中,错误的是A)11 12B)11, 12C)11,12D)11,1218、设有如下程序段:int x=2002, y=2003;printf("%d\n",(x,y));则以下叙述中正确的是A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出B)运行时产生出错信息C)输出值为2002D)输出值为200319、设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是A)x=x*100+0.5/100.0;B)x=(x*100+0.5)/100.0;C)x=(int)(x*100+0.5)/100.0;D)x=(x/100+0.5)*100.0;20、有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是A) if (c<a) x=1;else if (b<a) x=2;else x=3;B) if (a<3) x=3;else if (b<a) x=2;else x=1;C) if (aif (aif (aD) if (a<b) x=b;if (b<c) x=c;if (c<a) x=a;21、有以下程序main( ){ int s=0,a=1,n;scanf("%d",&n);do{ s+=1; a=a-2; }while(a!=n);printf("%d\n",s);}若要使程序的输出值为2,则应该从键盘给n输入的值是A)-1B)-3C)-5D)022、若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)s=a;for(b=1;b<=c;b++) s=s+1;则与上述程序段功能等价的赋值语句是A)s=a+b;B)s=a+c;C)s=s+c;D)s=b+c;23、有以下程序main( ){ int k=4,n=0;for( ; n<k ; ){ n++;if(n%3!=0) continue;k--; }printf("%d,%d\n",k,n);}程序运行后的输出结果是A)1,1B)2,2C)3,3D)4,424、要求以下程序的功能是计算:s=1+1/2+1/3+…+…1/10main( ){ int n; float s;s=1.0;for(n=10;n>1;n--)s=s+1/n;printf("%6.4f\n",s);}程序运行后输出结果错误,导致错误结果的程序行是A)s=1.0;B)for(n=10;n>1;n--)C)s=s+1/n;D)printf("%6.4f\n",s);25、已定义ch为字符型变量,以下赋值语句中错误的是A)ch='\'; B)ch=62+3; C)ch=NULL; D)ch='\xaa';26、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参27、有以下函数定义:void fun(int n, double x) { …… }若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是A)fun(int y,double m); B)k=fun(10,12.5);C)fun(x,n); D)void fun(n,x);28、有以下程序void fun(char *a, char *b){ a=b; (*a)++; }main(){ char c1='A',c2='a',*p1,*p2;p1=&c1; p2=&c2; fun(p1,p2);printf("%c%c\n",c1,c2);}程序运行后的输出结果是A)Ab B)aa C)Aa D)Bb29、若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是A)int *i=NULL; B) float *f=NULL;scanf("%d",i); *f=10.5;C)char t='m', *c=&t;D) long *L;*c=&t; L='\0';30、有以下程序#include <stdio.h>main( ){ printf("%d\n",NULL); }程序运行后的输出结果是A)0B)1C)-1D)NULL没定义,出错31、已定义c为字符型变量,则下列语句中正确的是A)c='97'; B)c="97"; C)c=97; D)c="a";32、以下不能正确定义二维数组的选项是A)int a[2][2]={{1},{2}};B)int a[ ][2]={1,2,3,4};C)int a[2][2]={{1},2,3};D)int a[2][ ]={{1,2},{3,4}};33、以下选项中不能正确把cl定义成结构体变量的是A) typedef struct{ int red;int green;int blue;} COLOR;COLOR cl;B)struct color cl{ int red;int green;int blue;}C) struct color{ int red;int green;int blue;} cl;D)struct{ int red;int green;int blue;} cl;34、以下能正确定义一维数组的选项是A)int num[ ];B) #define N 100int num[N];C)int num[0..100];D) int N=100;int num[N];35、下列选项中正确的语句组是A)char s[8]; s={"Beijing"};C)char s[8]; s="Beijing";B)char *s; s={"Beijing"};D)char *s; s="Beijing";36、已定义以下函数fun(int *p){ return *p; }该函数的返回值是A)不确定的值B)形参p中存放的值C)形参p所指存储单元中的值D)形参p的地址值37、下列函数定义中,会出现编译错误的是A)max(int x,int y,int *z){ *z=x>y ? x:y; }B)int max(int x,y){ int z;z=x>y ? x:y;return z;}C)max(int x,int y){ int z;z=x>y?x:y; return(z);}D)int max(int x,int y){ return(x>y?x:y);}38、有以下程序#include <stdio.h>#define F(X,Y) (X)*(Y)main( ){ int a=3, b=4;printf("%d\n", F(a++, b++));}程序运行后的输出结果是A)12B)15C)16D)2039、有以下程序fun(int a, int b){ if(a>b) return(a);else return(b);}main( ){ int x=3, y=8, z=6, r;r=fun(fun(x,y), 2*z);printf("%d\n", r);}程序运行后的输出结果是A)3B)6C)8D)1240、若有定义:int *p[3];,则以下叙述中正确的是A)定义了一个基类型为int的指针变量p,该变量具有三个指针B)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int 的指针C)定义了一个名为*p的整型数组,该数组含有三个int类型元素D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素41、以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址#include <stdio.h>#include <string.h>char *scmp(char *s1, char *s2){ if(strcmp(s1,s2)return(s1);else return(s2);}main( ){ int i; char string[20], str[3][20];for(i=0;istrcpy(string,scmp(str[0],str[1])); /*库函数strcpy对字符串进行复制*/strcpy(string,scmp(string,str[2]));printf("%s\n",string);}若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为A)abcdB)abbaC)abcD)abca42、有以下程序}struct s{ int x,y; } data[2]={10,100,20,200};}main( )}{ struct s *p=data;}printf("%d\n",++(p->x));}程序运行后的输出结果是A)10B)11C)20D)2143、有以下程序段main( ){ int a=5,*b,**c;c=&b; b=&a;……}程序在执行了c=&b;b=&a;语句后,表达式:**c的值是A)变量a的地址B)变量b中的值C)变量a中的值D)变量b的地址44、有以下程序#includemain(){ char str[][20]={"Hello","Beijing"},*p=str;printf("%d\n",strlen(p+20));}程序运行后的输出结果是A)0 B)5 C)7 D)2045、已定义以下函数fun(char *p2, char *p1){ while((*p2=*p1)!='\0'){ p1++;p2++; } }函数的功能是A)将p1所指字符串复制到p2所指内存空间B)将p1所指字符串的地址赋给指针p2C)对p1和p2两个指针所指字符串进行比较D)检查p1和p2两个指针所指字符串中是否有'\0'46、有以下程序main( ){ int x=3, y=2, z=1;printf("%d\n",x/y&~z);}程序运行后的输出结果是A)3B)2C)1D)047、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为A)0B)1C)-1D)一个非0值48、下列关于C语言数据文件的叙述中正确的是A)文件由ASCII码字符序列组成,C语言只能读写文本文件B)文件由二进制数据序列组成,C语言只能读写二进制文件C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件49、有以下程序main( ){ int a[3][3],*p,i;p=&a[0][0];for(i=0;iprintf("%d \n",a[1][2]);}程序运行后的输出结果是A)3B)6C)9D)250、有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。