“早C晚A好好做”为你分享11篇“安全员c考试试题及答案”,经本站小编整理后发布,但愿对你的工作、学习、生活带来方便。
篇1:安全员c考试试题及答案
安全员c考试试题及答案
安全员,负责安全生产的日常监督与管理工作,提供了安全员c考试试题答案给大家1
一、单选题(每题l分共5 0分,每题在给出的4个选项中只选l个作答案,用2B铅笔填涂答题卡上对应的答案字母框):
1、根据《建设工程安全生产管理条例》,建设单位不得对勘察、设计、施工、工程监理等单位提出不符合建设工程安全生产法律、法规和强制性标准规定的要求,不得 D 。
A.变更合同约定的造价 B.压缩定额规定的工期
C.变更合同的约定内容 D.压缩合同约定的工期
2、根据《建设工程安全生产锈器条例》,采用新结构、新材料、新工艺的建设工程和特殊结构的建设工程,设计单位应当在设计中提出 C 的措施建议。
A.施工安全操作与防护保障施工作业人员安全和预防生产安全事故
B.设计安全操作与防护保障施工作业人员安全和预防生产安全事故
C.保障施工作业人员安全和预防生产安全事故
D.建筑安全操作与防护保障施工作业人员安全和预防生产安全事故
3、根据《建设工程安全生产管理条例》,安装、拆卸施工起重机械和整体提升脚手架、模板等自升式架设设施,应当编制拆装方案、制定安全施工措施,并由 A 现场监督。
A.专业技术人员 B.监理人员 C.设计人员 D.建设单位技术人员
4、根据《建设工程安全生产管理条例》,分包单位应当服从总承包单位的安全生产管理,分包单位不服从管理导致生产安全事故的,由分包单位承担 C 。
A.全部责任 B.合同中约定的责任 C.主要责任 D.一般责任
5、根据《建设工程安全生产管理条例》,施工单位应当在施工组织设计中编制安全技术措施和施工现场临时用电方案,对基坑支护与降水工程、土方开挖工程、模板工程、起重吊装工程、脚手架工程、拆除、爆破工程达到一定规模的危险性大的分部分项工程编制专项施工方案,并附具 C ,经施
工单位技术负责人、总监理工程师签字后实施,由专职安全生产管理人员进行现场监督。
A.安全用电方案 B.安全实施方案 C.安全施工方案 D.安全验算结果
6、施工单位应当根据建设工程施工的特点、范围,对施工现场易发生重大事故的部位、环节进行监控,制定施工现场生产安全事故应急救援预案。实行施工总承包的,由总承包单位统一组织编制建设工程生产安全事故应急救援预案,工程 D 按照应急救援预案,建立应急救援组织或者配备应急救援人员,配备救援器材、设备,并定期组织演练。
A.总承包单位 B.分包单位 C.施工单位 D.总承包单位和分包单位
7、在施工现场,是施工项目安全生产的第一责任者。
A.项目经理 B.施工员 C.专职安全生产管理人员 D.企业法定代表人
8、分包单位 B 安全生产许可证。
A.必须具有 B.可以不具有 C.由总包决定是否具有 D.根据工程情况定是否具需
9、工人在分配到施工队之前,首先进行公司级安全教育。下列内容不属于公司级安全教育内容的是
。
A.劳动保护的意义和任务的一般教育 B.安全生产方针政策法规、标准、规范规程和安全知识
C.安全生产纪律和文明生产要求 D.企业安全规章制度
10、企业在安全生产许可证有效期内,严格遵守有关安全生产的法律法规,未发生死亡事故的,安全生产许可证有效期届满时,经原安全生产许可证颁发管理机关同意,安全生产许可证有效期延期
C 年。
A 1 8.2 C.3 D.6
11、根据《建筑施工现场环境与卫生标准》的条文说明,施工现场场地的硬化处理,是指可采取铺设混凝土、礁渣、碎石等方法,防止施工车辆在施工现场行驶中产生 C 污染环境。
A.水溅 B.噪音 C.扬尘 D.废气
12、从事建设工程活动,必须严格执行基本建设程序,坚持 A 的原则。
A.先勘察、后设计、再施工 B.先计划,后设计,再预算
C.先预算、后勘察、再施工 D.先设计、后勘察、再施工
13、学校、商场、娱乐场所等人员集中的公共建筑,其装修、改扩建、附加装饰物或大型户外广告牌等, B 办理报建手续和施工许可。
A B.必须 C.提倡 D.未规定
14、模板及其支撑体系的施工荷载应 B ,并不得超过设计计算要求。
A.集中堆置 B.均匀堆置 D.方便施工堆置
15、矿山、建筑施工单位和危险物品的生产、经营、储存单位,应当设置安全生产管理机构或者配置 B 。
B.专职安全生产管理人员
C.专职安全生产指挥人员 B.专职安全生产领导人员
l6、生产经营单位进行爆破、吊装等危险作业,应当安排 A 进行现场安全管理,确保操作规程的遵守和安全措施的落实。
A.专门人员 B.领导 C.技术人员 D.负责人
17、考虑到我国实际情况,城镇的农民自建住宅标准、通用设计图(集), B 国家现行技术标准中有关工程质量安全的规定。
A.应参考 B.应符合 C.部分应符合 D.没有规定要符合
18、木立柱宜选用整料,当不能满足要求时,立柱的接头不宜超过 C 个,并应采用对接夹板的接头方式。
A.4 B.3 C.1 D.2
19、扣件钢管脚手架作组合式格构柱使用时,主立杆间距不得大于lm,纵横杆步距不应大于 C 。
A.0.8m B.1.0m C.1.2m D.1.5m
20、施工现场用电工程的基本供配电系统应按 C 设置。
A.一级 B.二级 C.三级 D
21、汽车式起重机约70%以上的翻车事故时因 B 造成的,因此,在使用汽车起重机时应特别引起重视。
A.大风 B.超载或支腿陷落 C.道路不平D.无人指挥
22、当吊重超过最大起重量并小于最大起重量的110%时, B 应当动作,使塔机停止提升方向的运行。
A.超重力矩限制器 B.起重量限制器 C.变幅限制器 D.行程限制器
23、在装设附着框架和附着杆时,要通过调整附着杆的距离,保证 D 。
A.平衡臂的稳定性 B.起重臂的稳定性 C D.塔身的垂直度
24、由于上方施工可能坠落物件或处于起重机把杆回转范围内的通道,在其受影响的范围内必须搭设 D 。
B.单层防护网 C.双层防护网 D.顶层能防止穿透的双层防护廊 25、拆除施工严禁立体 C 作业。水平作业时,各工位间应有一定的安全距离。
A.生产 C.交叉 D.多工种
26、木工机械应安装 C 开关。
A.按钮 B C.闸刀 D.负荷开关
27、塔式起重机最基本的工作机构包括 A 。
A
B.起升机构,限位机构、回转机构和行走机构
B.起升机构,变幅机构、回转机构和自升机构
D.起升机构,变幅机构、回转机构和平衡机构
28、电梯井口必须设防护栏杆或固定栅门;电梯井内应每隔两层并最多隔 C 设一道安全网。
A. 8m B.9m C.10m D.12m
29、固定式配电箱、开关箱中心点与店面的相对高度应为 C 。
A. 0.5m B.1.0m C.1.5m D.1.8m
30、施工现场用电系统中,N线的绝缘色应是 C 。
A. 黑色 B.白色 C.淡蓝色
31、广东省建设厅为贯彻《国务院办公厅关于开展安全生产百日督查专项行动的.通知》,于发出通知,决定从 B 开展此项行动。
A. 1月30日到4月底 B.4月30日到7月底
C.7月30日到10月底 D.10月30日到1月底
32、不得用挖掘机铲斗 B 。
A. 吊运物料 B.助推机械 C.牵引机械 D.运料
33、施工现场动火证由 C 部门审批。
A.公司安全科 B.项目技术负责人 C.项目负责人 D.安全员
34、根据《广东省建设工程施工安全评价管理办法(试行)》第七条:施工安全评价按 C 阶段进行。
A. 三 B.四 C.五 D.六
35、支设高度在 C 以上的柱模板,四周应设斜撑,并应设立操作平台。
A.2m B.2.5m C.3m D.3.5m
36、密目式安全网每l0cm×10cm=100c㎡面积上有 B 个以上的网目。
A.1500个 B.个 C.3000个D.4000个
37、施工现场专用的,电源中性点直接接地的220/380V三相四线制用电,必须采用的接地保护型式是 B 。
A.TN B.TN-S C.TN-C D.TT
38、施工现场用电工程中,PE线上每处重复接地的接地电阻值不应大于 B 。
A.4 ? B.10 ? C.30? D.100 ?
39、间接接触触电的主要保护措施是在配电装置中设置 B 。
A.隔离开关 B.漏电保护器 C.断路器 D.熔断器
40、连墙件应靠主节点设置,这是为了 D 。
A.便于施工 B.便于连墙件设置 D.保证连墙件对脚手架的约束作用
41、开关箱与用电设备的水平距离不宜超过 A 。
A.3m B.4m C.5m D.
42、《广东省建设工程限制使用竹脚手架管理规定》第三条:禁止使用竹脚手架的范围:
一、 B 以上的城区;二、上述区域外,搭设高度超过l8m的工程。
B.县级 C.地级 D.广州、深圳
43、根据《广东省建设工程井架物料提升机使用安全管理规定》,井字架的的卸料平台,
B 支承在架体上。
.必须 B.不得 C.可以 D.经计算可以
44、根据《广东省建设工程限制使用竹脚手架管理规定》,在施工中使用的竹脚手架,
C 采用单排竹脚手架。
B.可以 C.不得 D.装修架可以
45、施工总承包的建设工程,建设工程的 B 施工必须由总承包单位自行完成。
A.地基基础工程 B.主体结构 D.一半以上工程量
46、《建筑施工安全检查标准》(JGJ59-99) 将检查内容共分为“安全管理”等 C 个分项。
A. 二 B.五 C.十 D.十五
47、《建筑施工安全检查标准》(JGJ59-99) 对检查结果为优良等级的条件是:汇总表分值
在 B 以上。
B.80 C.85 D. 90
48、按照规定,事故发生后,事故现场有关人员应当立即向施工单位负责人报告;施工单位负责人接到报告后,应当于 B 小时内向事故发生地的县级以上人民政府建设主管部门和有关部门报告。
A.半 B.1 C.2 D.3
49、《建筑施工扣件式钢管脚手架安全技术规范》(JGJl30-)规定:对高度24m以上的双排脚手架,必须采用 A 与建筑物可靠连接。
A B.柔性连墙件 C.刚、柔性连墙件结合D.拉筋和顶撑配合
50、施工现场临时用电的电箱导线进出口应设在 D 且导线不得与箱体进出口直接接触,应加护套。
A.箱体左侧面 B.箱体右侧面 C.箱体项面 D.箱体下底面
二、多选题(每题2分,共20分。每题有5个选项,根据题意至少选择其中2个或以上的选项作为答案,填涂在相同题号答题卡对应的英文字母空框内;多选、少选均不得分):
51、属于下列 ABCD 范围的建筑施工企业,安全生产许可证颁发管理机关应重新对其安全生产条件进行审查
A.在安全生产许可证有效期内,发生生产安全事故且对事故发生负有责任的:.
B.在安全生产许可证有效期内,曾被暂扣过安全生产许可证的;
C.在安全生产许可证有效期内,受到各级建设主管部门3次以上(含3次)处罚、通报批评或安全生产诚信不良记录的;
D.未在原颁发管理机关规定时间内提出延期申请的;
E.原颁发管理机关因其它原因认为有必要重新审查的。
52、建筑工程模板承受的荷载标准值的种类有: ABD 。
A.施工人员及设备荷载 B.振捣混凝土时产生的荷载 C.风荷载
D.倾倒混凝土时对垂直面板产生的水平荷载 E.堆放材料的荷载
53、《广东省建设厅建筑工程安全生产动态管理办法》规定:对项目经理、专职安全员在一个扣分周期内,被扣满(超)分的,作出以下处理
A.停止执业3个月;
B.停止执业1年;
C.暂扣其安全生产考核合格证;
D.经省建设行政主管部门或其委托机构进行安全教育培训,重新考核合格后,方能上岗; E.处理情况,将在广东建设信息网和工程所在在地建设工程交易中心公示。
54、下列是密目式安全网进行贯穿实验的要点: DE 。
A.将密目式安全网张好绑扎在实验架上与地面成45度的夹角
B.将l0公斤重的?48×3.5的钢管放置在其中心点上方3m处
C.使钢管垂直自由落下
D.将密目式安全网张好绑扎在实验架上与地面成30度的夹角
E.将5公斤重的?48×3.5的钢管放置在其中心点上方3m处
55、开关箱中的漏电断路器在正常情况下可用于 CDE 。
A.电源隔离 B.频繁通、断电路 C.电路的过载保护
D.电路的短路保护 E.电路的漏电保护
56、下列符合《建筑施工安全检查标准》(JGJ59-99)“检查评分汇总表”的选项是:ABDE
A.满分值l00 B.安全管理10分 C.文明施工10分
D.塔吊l0分 E.施工机具5分
57、施工单位应当对编制专项施工方案,并附具安全验算结果,经施工单位技术负责人、总监理工程师签字后实施,由专职安全生产管理人员进行现场监督。
A.基坑支护与降水工程 B.土方开挖工程 C.模板工程
D.起重吊装工程 E.脚手架工程
58、建筑材料、设备器材、现场制品、半成品、成品、构配件等应严格按现场平面布置图指定位置堆放并挂上标牌,注明。
A.尺寸 B.名称 C.品种 D.规格 E.颜色
59、建设部在《关于加强建设系统防灾减灾工作的意见》中,要求及时将先进适用的防灾减灾技术纳入工程建设技术标准,完善ABCD等单灾种抗灾技术标准体系。
A.抗震 B.抗风 C.防洪 D.防火 E.防恐
60、企业取得安全生产许可证,应当具备下列安全生产条件:。
A.建立、健全安全生产责任制,制定完备的安全生产规章制度和操作规程:
B.主要负责人和安全生产管理人员经考核合格;
C.安全投入符合安全生产要求;
D.设置安全生产管理机构,配备专职安全生产管理人员;
E.从业人员经安全生产教育和培训合格;
三、判断题(每题l分,共1 8分。认为正确的在答题卡上填涂A框,错误的填涂B框):61、人工拆除应按非承重墙、梁、板、柱顺序依次进行。( B )
A.正确 B.错误
62、模板及其支架应具有足够的承载能力、刚度和稳定性,应能可靠的承受新浇筑的混凝土的自重,侧压力和施工过程中所产生的荷载及风荷载。( A )
A.正确 B.错误
63、对于建制镇、集镇规划区内建设工程投资额30万元以下且建筑面积300平方米以下的市政基础设施、生产性建筑,居民自建两层(含两层)以下住宅和村庄建设规划范围内的农民自建两层(不含两层),建设工程建设方必须取得规划批准文件方可开工,但可不须办理报建备案手续。( B )
A.正确 B.错误
64、滑坡地段开挖顺序应由上到下,即先切除坡脚。( B )
A.正确 B.错误
65、施工单位技术负责人依法对本单位的安全生产工作全面负责。( A )
A.正确 B.错误
66、六级风力及其以上应停止一切吊运作业。( A )
A.正确 B.错误
67、建设部在《关于开展建筑施工安全质量标准化工作的指导意见》明确:建筑施工企业的安全生产工作按照《施工企业安全生产评价标准》及有关规定进行评定:建筑施工企业的施工现场按照《建筑施工安全检查标准》及有关规定进行评定。( A )
A.正确 B.错误
68、村镇建设规划中划定建设用地时,要考虑避开自然灾害易发地带,如山体滑坡隐患、地质条件不稳定、风口、有严重环境污染、不便于进行基础设施配套的地域。( A )
A.正确 B.错误
69、模板在设计时应选择最有利的荷载组合来验算模板整体结构。( A )
A.正确 B.错误
70、仅发生直接经济损失的生产安全事故的报告和调查处理,不适用《生产安全事故报告和调查处理条例》。( B )
A.正确 B.错误
71、建设部《关于贯彻落实国务院(关于进一步加强安全生产工作的决定)的意见》提出:今后检查方式从告知性的检查为主转变为以随机抽查及巡查为主。( A )
A.正确 B.错误
72、规范规定配电箱及开关箱内必须装设隔离开关,给工作人员有可疑看见的在空气中有一定间距的断路点。( A )
A.正确 B.错误
73、一般场所开关箱中漏电保护器的额定漏安动作电流应不大于30mA,额定漏电动作时间不应大于0.1s。( A )
A.正确 B.错误
74、施工现场用电工程的二级漏电保护系统中,漏电保护器可以分设于分配电箱和开关箱中。
A.正确 B.错误 ( A )
75、能与空气中的氧或其他氧化剂起剧烈反宰的物质,都称为可燃物质。( A )
A.正确 B.错误
76、“坍塌“是目前施工”五大伤害”事故发生最多的事故种类。( B )
A.正确 B.错误
77、圆盘锯锯木料接近尾端时要用下手拉料。( A )
A.正确 B.错误
78、建筑施工的特点之一是建筑产品的多样性、建筑施工的固定性。( A )
A.正确 B.错误
篇2:安全员考试培训试题及答案
1、《中华人民共和国建筑法》规定:建筑企业和作业人员在施工生产过程中,应当遵守有关安全生产的法律、法规和建筑行业安全规章、规程,不得( )。
2、建筑业频发“五大伤害是:( )、( )、( )、( )、( ) 。
3、预防伤亡事故三不伤害是: 、 、 、
4、生产经营单位必须遵守《中华人民共和国安全生产法》和其他有关安全生产的法律、法规,加强安全生产�理,建立、健全( )制度,完善( ),确保安全生产。
5、建筑施工作业人员对危及生命安全和人身健嚎的行为有权提出( )、( )。
6、工程起重机的主要机构有( )、( )、( ) 和行走机构.
7、<<中华人民共和国安全生产法>>第四条规定生产经营单位确保安全生产必须履行哪些基本义务?
8、施工现场操作人员可能出现哪些不安全行为?
9、如何正确使用和区别导线的颜色?1.违章指挥、违章操作
2.处坠落、坍塌、物体打击、触电、机械伤害
3.不伤害自己、不伤害他人、不被他人伤害
4.安全生产责任 安全生产条件
5. 批评 、检举和控告
6. 起升机构 、 旋转机构 、 变幅机构
7.(1)必需遵守有关安全生产的法律、法规;
(2)必需加强安全生产管理;
(3)必须建立健全安全生产责任制度;
(4)必需完善安全生产条件、确保安全生产。
8.(1)操作失误、忽视安全、忽视警告;(2)造成安全装置失效;(3)使用不安全设备;(4)手代替工具操作;(5)物体存放不当;(6)冒险进入危险场所;(7)攀坐不安全位置;(8)在起吊物下作业、停留;(9)在机器运转时进行检查、维修、保养等工作;(10)有分散注意力行为;(11)没有正确使用个人防护用品、用具;(12)不安全装束;(13)对易燃易爆等危险物品处理错误。
1、《中华人民共和国建筑法》规定:建筑企业和作业人员在施工生产过程中,应当遵守有关安全生产的法律、法规和建筑行业安全规章、规程,不得 违章指挥和违章作业 。
2、我国安全生产的方针是:安全第一,预防为主 。
3、建筑业频发“五大伤害”是: 高处坠落 、 物体打击 、 触电 、 机械伤害 、 坍塌事故 。
4、预防伤亡事故三不伤害是: 不伤害自己 、 不伤害他人 、 不被他人伤害 。
5、生产经营单位必须遵守《中华人民共和国安全生产法》和其他有关安全生产的法律、法规,加强安全生产�理,建立、健全 安全生产责任制度 制度,完善 安全生产条件 ,确保安全生产。
6、乙炔瓶不得曝晒,乙炔瓶表面温度不得超过 40 ℃。瓶阀冬季解冻加温时,应使用温水。
7、电焊时严禁借用金属管道、金属脚手架、轨道、结构钢筋等金属物搭接代替导线 使用。
8建筑施工作业人员对危及生命安全和人身健嚎的行为有权提出 批评 、检举和控告 。
9、开关箱是配电系统的末级,开关箱与所控制的固定式用电设备水平距离不得超过 。以便操作开关箱的电器时,监护设备起动和停止情况.当用电设备发生故障需紧急断电时,可以及时切断电源。
10、工程起重机的主要机构有 起升机构 、 旋转机构 、 变幅机构 和行走机构。
篇3:安全员考试培训试题答案
1、《中华人民共和国建筑法》规定:建筑企业和作业人员在施工生产过程中,应当遵守有关安全生产的法律、法规和建筑行业安全规章、规程,不得 违章指挥和违章作业 。
2、我国安全生产的方针是:安全第一,预防为主 。
3、建筑业频发“五大伤害”是: 高处坠落 、 物体打击 、 触电 、 机械伤害 、 坍塌事故 。
4、预防伤亡事故三不伤害是: 不伤害自己 、 不伤害他人 、 不被他人伤害 。
5、生产经营单位必须遵守《中华人民共和国安全生产法》和其他有关安全生产的法律、法规,加强安全生产�理,建立、健全 安全生产责任制度 制度,完善 安全生产条件 ,确保安全生产。
6、乙炔瓶不得曝晒,乙炔瓶表面温度不得超过 40 ℃。瓶阀冬季解冻加温时,应使用温水。
7、电焊时严禁借用金属管道、金属脚手架、轨道、结构钢筋等金属物搭接代替导线 使用。
8建筑施工作业人员对危及生命安全和人身健嚎的行为有权提出 批评 、检举和控告 。
9、开关箱是配电系统的末级,开关箱与所控制的固定式用电设备水平距离不得超过 。以便操作开关箱的电器时,监护设备起动和停止情况.当用电设备发生故障需紧急断电时,可以及时切断电源。
10、工程起重机的主要机构有 起升机构 、 旋转机构 、 变幅机构
篇4:C笔试题及答案
(1)算法的时间复杂度是指_______。
A)执行算法程序所需要的时间
B)算法程序的长度
C)算法执行过程中所需要的基本运算次数
D)算法程序中的指令条数
答案:C
评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。
(2)下列叙述中正确的是________。
A)线性表是线性结构 B)栈与队列是非线性结构
C)线性链表是非线性结构 D)二叉树是线性结构
答案:A
评析:一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。
(3)下面关于完全二叉树的叙述中,错误的是_________。
A)除了最后一层外,每一层上的结点数均达到最大值
B)可能缺少若干个左右叶子结点
C)完全二叉树一般不是满二叉树
D)具有结点的完全二叉树的深度为[log2n]+1
答案:B
评析:满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点(叶子结点)的二叉树。
(4)结构化程序设计主要强调的是_________。
A)程序的规模 B)程序的易读性
C)程序的执行效率 D)程序的可移植性
答案:B
评析:结构化程序设计主要强调的是结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以保证程序的正确性。
(5)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是________。
A)概要设计 B)详细设计 C)可行性分析 D)需求分析
答案:D
评析:需求分析是对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。
(6)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列 图符名标识的图符不属于数据流图合法图符的是_________。
A)控制流 B)加工 C)数据存储 D)源和潭
答案:A
评析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。
(7)软件需求分析一般应确定的是用户对软件的__________。
A)功能需求 B)非功能需求 C)性能需求 D)功能需求和非功能需求
答案:D
评析:软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,是用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。
(8)下述关于数据库系统的叙述中正确的是________。
A)数据库系统减少了数据冗余
B)数据库系统避免了一切冗余
C)数据库系统中数据的一致性是指数据类型的一致
D)数据库系统比文件系统能管理更多的数据
答案:A
评析:由数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值。
(9)关系表中的每一横行称为一个________。
A)元组 B)字段 C)属性 D)码
答案:A
评析:在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。
(10)数据库设计包括两个方面的设计内容,它们是________。
A)概念设计和逻辑设计 B)模式设计和内模式设计
C)内模式设计和物理设计 D)结构特性设计和行为特性设计
答案:A
评析:数据库设计可分为概念设计与逻辑设计。概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。逻辑设计的主要工作是将ER图转换为指定的RDBMS中的关系模型。
篇5:C和C经典笔试题及答案
1.那一种成员变量可以在同一个类的实例之间共享?
答案:必须使用静态成员变量在一个类的所有实例间共享数据.如果想限制对静态成员变量的访问,则必须把他们声明成保护型或私有型.不允许使用静态成员变量去存放一个对象的数据。静态成员数据是在这个类的所有对象间共享的。
静态数据成员:静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。节省内存;提高时间效率。使用静态数据成员可以因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,
1、静态数据成员在定义或说明时前面加关键字static。
2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:
<数据类型><类名>::<静态数据成员名>=<值>
这表明:
(1) 初始化在类体外进行,而前面不加static,以免与一般静态变量或对象相混淆。
(2) 初始化时不加该成员的访问权限控制符private,public等。
(3) 初始化时使用作用域运算符来标明它所属类,静态数据成员是类的成员,而不是对象的成员。
3、静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化。
4、引用静态数据成员时,采用如下格式:
<类名>::<静态成员名>
静态数据成员的访问权限允许的话(即public的成员),可在程序中,按上述格式来引用静态数据成员。
下面举一例子,说明静态数据成员的应用:
#include
class Myclass
{
public:
Myclass(int a, int b, int c);
void GetNumber;
void GetSum;
private:
int A, B, C;
static int Sum;
};
int Myclass::Sum = 0;
Myclass::Myclass(int a, int b, int c)
{
A = a;
B = b;
C = c;
Sum += A+B+C;
}
void Myclass::GetNumber
{
cout<<”Number=”<
}
void Myclass::GetSum
{
cout<<”Sum=”<
}
void main
{
Myclass M(3, 7, 10),N(14, 9, 11);
M.GetNumber;
N.GetNumber;
M.GetSum;
N.GetSum;
}
从输出结果可以看到Sum的值对M对象和对N对象都是相等的。这是因为在初始化M对象时,将M对象的三个int型数据成员的值求和后赋给了Sum,于是Sum保存了该值。在初始化N对象时,对将N对象的三个int型数据成员的值求和后又加到Sum已有的值上,于是Sum将保存另后的值。所以,不论是通过对象M还是通过对象N来引用的值都是一样的,即为54。
静态成员函数
静态成员函数和静态数据成员一样,它们都属于类的静态成员,它们都不是对象成员。因此,对静态成员的引用不需要用对象名。
在静态成员函数的实现中不能直接引用类中说明的非静态成员,可以引用类中说明的静态成员。如果静态成员函数中要引用非静态成员时,可通过对象来引用。下面通过例子来说明这一点。
#include
class M
{
public:
M(int a) { A=a; B+=a;}
static void f1(M m);
private:
int A;
static int B;
};
void M::f1(M m)
{
cout<<”A=”<
cout<<”B=”<
}
int M::B=0;
void main
{
M P(5),Q(10);
M::f1(P); file://调用时不用对象名
M::f1(Q);
}
读者可以自行分析其结果。从中可看出,调用静态成员函数使用如下格式:
<类名>::<静态成员函数名>(<参数表>);
2.判断选择
1. C++语言没有可移植性。 B不正确
2. 定义数组时可以不确定元素个数。 B不正确
3. 指针是一种特殊的变量,只能用来保存地址。 A正确
4. 通过引用或者指针调用对象的成员函数时,如果引用或者指针的类型跟对象的类型不一致时,能自动正确调用对象所属的类中对这个函数的定义。 B不正确
5.类myclass,为myclass类对象以成员函数形式重载后++运算符的声明应该为 C myclass operator++( int );
A. myclass operator++;
B. myclass& operator++;
C. D. myclass& operator++( int );
5. 父类和子类各自定义一个成员函数,函数名相同,参数表不同,那么 C子类中的函数会覆盖父类中的函数。 函数同名,通通覆盖,不同层次的函数不能重载
6. 如果myclass类定义了拷贝构造函数和一个整型参数的构造函数,还重载了赋值运算符,那么语句
myclass obj = 100;会 B调用整型参数的构造函数。等价于 myclass obj = myclass(100)
7. 抽象类指的是 D有纯虚函数的类
8. 多重继承时,如果派生类的两个父类有一个共同的虚基类,那么虚基类的初始化参数由 C派生类
的构造函数来传递。
9. 多态性是通过 C虚函数 实现的。
10. 如果有如下语句
char str[20];
cin >> str;
cout << str;
执行时输入的是“this is a test line!”,则输出的内容是 D 。
A. this is a test line!
B. this is a test line
C. this is a test
D. this
11. 执行语句
char ch = “Hello”;
char * p = &ch[0];
cout << p;
结果是输出 C 。Hello
3.以下生面是否正确?
Class A{ const int size=0;};
答案:常量必须在构造函数的初始化列表里面初始化或者将其设置为static
正确的程序如下:
Class A
{ A{ const int size=0; }};
或者:
Class A
{ static const int size=0; };
篇6:C和C经典笔试题及答案
1. #include using namespace std;
Void GetMemory(int *z) { *z=5; }
Int main { int v; GetMemory(&v); cout<
Getmory把v的地址传了过来,*z是地址里的值,是v的副本.通过直接修改地址里的值,不需要有返回值,也把v给修改了,因为v所指向地址的值发生了改变,最终程序会崩溃.
2. 下面的数据声明都代表什么意思?
(1)float(**def)[10]
Def是一个二级指针,它指向的是一个一维数组的指针,数组的元素都是float。
(2)double*(*gh)[10]
Gh是一个指针,它指向一个一维数组,该数组元素都是double*
(3) double(*f[10])
F是一个数组,f有十个元素,元素都是函数的指针,指向的函数类型是没有参数且返回double的函数
(4)int*((*b)[10])
就跟“int*(b)[10]”是一样的,b是一维数组的指针
(5)long(*fun)(int)
函数指针
(6)int(*(*f)(int,int))(int)
F是一个函数的指针,指向的函数的类型是有两个int参数并且返回一个函数指针的函数,返回的函数指针指向一个int参数且返回int的函数。
3. 指针数组与数组指针
指针数组,是指一个数组里面装着指针,数组指针,代表它是指针,指向真个数组
一个指向整型数组的指针定义为
A. int(*ptr) B.int *ptr C.int*(ptr) D.int ptr
int(*ptr)是以一个指向整型数组的指针
int *ptr是指针数组,ptr里面存的的是地址。它指向位置的值就是*ptr[0],*ptr[1],*ptr[2],不要存*ptr[0]=5,*ptr[1]=6,因为里面没有相应的地址
int*(ptr)与B相同
4. 用变量a给出下面的定义
(1)一个整型数
(2)一个指向整形数的指针
(3)一个指向指针的指针,它指向的指针是一个整型数
(4)一个有10个整型数的数组
(5)一个有10个指针的数组,该指针是指向一个整型数的
(6)一个指向有10个整型数组的指针
(7)一个指向函数的指针,该函数有一个整型参数并返回一个整型数
(8)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整数
Itn a; int *a; int a; int a[10]; int *a[10]; int (*a)[10]; int (*a)(int); int (*a[10])(int)
5.C++中的空类默认产生那些类成员函数?
Class Empty
{ public:
};
答案:对于一个空类,编译器默认产生4个成员函数:默认构造函数,析构函数,拷贝构造函数和赋值函数
篇7:C笔试题及答案
(1)请读程序:
#include
main
{
int a;float b,c;
scanf(“%2d%3P%4f’,&a,&b,&C);
printf(”na=%d,b=%ec。%fn”,a,b,C);
}
若运行时从键盘上输入9876543210l,则上面程序的输出结果是________。
A)a=98,b=765,c=432 1
B)a=1 0,b=432,c=8765
C)a=98,b=765.000000,c=432 1.000000
D)a=98,b=765.0,c=432 1.0
答案:C
评析:scanf把用户从键盘录入的数字的第1、2位存入整型变量a;把第3、4、5位存入单精度实型变量b,把第6、7、8、9位存入单精度实型变量c,用户录入的第10位被scanf遗弃。这时变量a、b、c的值分别为:98、765.000000、4321.000000。
(2)一个良好的算法由下面的基本结构组成,但不包括__________。
A)顺序结构 B)选择结构 C)循环结构 D)跳转结构
答案:D
评析:1966年,Bohra和Jacopini提出了以下三种基本结构,用这三种基本结构作为表示一个良好算法的基本单元:1、顺序结构;2、选择结构;3、循环结构。
(3)请选出以下程序的输出结果________。
#include
sub(x,y,z)
int x,y,*z:
{*z=y-x;}
main{
int a,b,c;
sub(10,5,&a);sub(7,a,&b);sub(a,b,&C);
printf(”%d,%d,%dn”,a,b,C);
}
A)5,2,3 B)-5,-12,-7 C)-5,-12,-17 D)5,-2,-7
答案:B
评析:sub函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(10,5,&a/I,10和5属于值传递,a是属于地址传递,也就是a与z指向了同一个存储单元,在执行函数后,a的值随*z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&C)后,c的值发生变化,其值为-12-(-5)=-7。
(4)下面程序在屏幕上的输出是________。
main
{
printf(”abbb c”);
}
A)abbb c B)a c C)abc D)ab c
答案:B
评析:c语言中允许使用一种特殊形式的字符常量,、就是以一个“”开头的字符序列,这样的字符称为“转义字符”。常用的转义字符有:n,换行;t,水平制表;b,退格;r,回车。
(5)若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是_______。
A)pb=&x; B)pb=x; C)*pb=&x; D)*pb=
答案:A
评析:选项A将变量x的地址赋给指针变量pb,使pb指向x‘选项B是将x的值当作地址赋给指针pb,Db指向一个地址等于x值的内存单元;选项c将x的地址赋给指针pb指向的地址等于x的内存单元。
(6)设整型数i=5,则printf(“%d”,i+++++i);的输出为________。
A)10 B)1l C)12 D)语法错误
答案:D
评析:c语言中有基本的算术运算符(+、-、*、/)还包括自增自减运算符(++、–),在c语言解析表达式时,它总是进行贪婪咀嚼,这样,该表达式就被解析为i++ ++ +i,显然该表达式不合c语言语法。
(7)若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元
int *p;
p=___________malloc(sizeof(im));
则应填入__________。
A)int B)int C)(*int) D)(int*)
答案:D
评析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型+)。
(8)下面程序输出的结果是__________。
main
{
int i=5,J=9,x;
x=(I==j?i:(j=7));
printf(”n%d,%d”,I,J);
}
A)5,7 B)5,5 C)语法错误 D)7,5
答案:A
评析:条件表达式的一般形式为:表达式I?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式l的值为假,则求解表达式3。本题中先判断i==j,不等,执行j=7;然后执行x=7。故本题为A。
(9)若执行下面程序时从键盘上输入5,
main
{
int x:
scanf(”%d”,&x);
if(x++>5)printf(”%dn”,x);
else printf(”%dn”,x–);
}
则输出是________。
A)7 B)6 C)5 D)4
答案:B
评析:根据c语言的语法,x++是在使用x之后,再将x的值加1,在if语句中,x的值为5,条件不成立,执行else后面的语句,因为x的值已经加1,为6,所以打印结果为6。
(10)若有以下定义和语句:
int a={l,2,3,4,5,6,7,8,9,10},*p=a;
则值为3的表达式是_________。
A)p+=2,*(p++) B)p+=2,*++p
C)p+=3,*p++ D)p+=2,++*p
答案:A
评析:引用一个数组元素,可以用:(1)下标法,如a[i]形式;(2)指针法,如*(a+i)或*(p+i)。数组的下标从0开始,值为3的数组元素是a[2]。B、c的内容为a[3],D将a[2]前自加,结果为4。
篇8:C笔试题及答案
(1)设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表
达式是___________。
A)’a’&&’b’ B)a<=b C)a‖+c&&b-c D)!((a
答案:D
评析z选项A:‘a’&&‘b’是字符a与b的相与,不为0;选项B:a<=b,由题中变量赋值可知,结果为1。选项c:a‖+c&&b-c,结果为1;选项D:!((a
(2)以下程序运行后,输出结果是_________。
main
{
char*d。{“ab”,”cde”};
printf(”%x”,d[1]);
}
A)cde B)字符c的ASCII码值
C)字符c的地址 D)出错
答案:C
评析:指针数组中的每一个元素都相当于一个指针变量。一维指针数组的定义形式为:类型名+数组名[数组长度],在本题main函数中定义指针数组d,它有两个元素,其初值分别是“ab”、“cde”的首地址。dB]的值为”cde”的首地址。%x是指以十六进制数形式输出整数。
(3)设有如下程序
#include
main
{
intk,*j,i=100;
j=&i; k=&j;
printf(”%dn”,k);
}
上述程序的输出结果是________。
A)运行错误 B)100 C)i的地址 D)j的地址
答案:B
评析:j=&i,j的值就是i的地址,*j=100,将j的地址赋给k,这时*k=j,那么,k=*j,而1=100,所以k=100,最后的打印结果应当为100。
(4)设有以下语句,其中不是对a数组元素的正确引用的是:_______(其中O≤i<10)
int a=[10]={0,1,2,3,4,5,6,7,8,9,},*p=a;
A)a[p-a] B)。(&a[i]) C)p[I] D)*(*(a+i))
答案:D
评析:观察程序可知,a实际上就是数组a的首地址,所以“+(a+i)”表示的就是数组a中的第i个元素的值,进而,我们可以知道+(t(a+i))必然不是对a数组元素的正确引用。
(5)以下程序运行后,输出结果为________。
main
{
int a[2][3]={1,3,5,7,9,1 1},*s[2],**pp,*p;
s[0]=a[0],s[1]=a[1];
pp=s;
p=(int*)malloc(sizeof(int));
**pp=s[1][1];
p=*PP;
printf(”%dn”,*p);
}
A)l B)7 C)9 D)1l
答案:C
评析:s是一个含有两个元素的指针数组,pp是一个指向指针变量的指针,s[O]是指向二维数组a行下标为0的元素的首地址,即a[0儿0]的地址,s[1]为a[1][0]的地址。pp的值为s[O]的地址。**pp=s[1][l]后,a[0][0]的值将被赋值为all][l]的值,执行p=*pp;后,p中将是s[0]的值,最后的输出语句将输出地址s[0]所指向的数据,即a[0][O]。
(6)有以下程序:
#include
main{
char c[6];
int I=0:
for(;i<6;c[-]=getchar,i++);
for(I=0;i<6;i++)putchar(c[i]);
primf(”n”);
}
如果从键盘上输入:
ab
c
def
则输出结果为_________.
A)a B)a C)ab D)abcdef
b b c
c c d
d d
e
f
答案:C
评析:1.getchar:此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。
2.putchar:此函数的作用是向终端输出一个字符,也可以输出控制字符。
本题在输入字符时,ab和c后面的回车符分别赋给了c[2]和e[4],所以,正确答案为c。
(7)在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_______。
A)地址传递 B)单向值传递
C)由实参传递给形参,再由形参传递给实参
D)传递方式由用户指定
答案:B
评析:c语言规定,实参变量对形参变量的数据传递是“单向值传递”,只由实参传给形参。在内存中,实参单元与形参单元是不同的单元。调用结束后,实参单元仍保留并维持原值。
(8)下面程序
#include
#include
main
{ char*p1=”abc”,*p2=”ABC”,str[50]=”xyz”;
strcpy(str+2,strcat(p1,p2));
printf(”%sn”,str);
}
的输出是_________。
A)xyzabcABC B)zabcABC
C)yzabcABC D)xyabcABC
答案:D
评析:strcat(pl,p2)将字符串abcABC放到了*pl所指向的存储单元中;strcpy在本题将abcABC复制到str+2所指向的存储单元中,即覆盖原str数组中的字符z及其后的所有字符,故str的值为”xyabcABC”。
(9)下面程序
int aa[3][3]:{{2},{4},{6}};
main
{ int i,*p:&aa[0][0];
for(I=0;i<2;i++){
if(i==0)aa[I][i+l]=*p+1;
else++p;
printf(”%d’.,。p);
}
}
的输出是__________。
A)23 B)26 C)33 D)36
答案:A
评析:观察题目,可以发现,*p=&aa[01[o]语句实际是将数组aa的首地址赋给了指针变量p,将i的值带入for循环中,i=0时,aa[0][1]=3,+p=2;*p输出的是指针所指向的数组值,此时p所指向的是aa[O][O],输出2,而i=l时执行了++p操作使指针向后移动指向了aa[O儿1],所以在输出*p时应为3。
(10)以下程序的输出结果是_________。
#include
#include
fun(char*w,int n)
{
char t,*s1,*s2;
s1=w;s2=w+n-l:
while(s1
{
t=*s1++:
*sl=*s2–;
*s2=t;
}
}
main
{
char*p;
p=”1234567″;
fun(p,strlen(p));
puts(p);
}
A)1234567 B)7654321 C)1711717 D)717717l
答案:C
评析:在子函数fun中,sl为字符串w的起始地址,s2为字符串的结束地址(字符‘O’除外),当执行循环结束循环,w=“1711717”。
篇9:c语言试题及答案
《C语言试题及答案》简介开始:C语言部分一、选择题(每小题2分,共10分)(下在各小题,分别有一个或多个正确答案,请将所有正确答案的编号,填写在该小题题干后的括号内。错选或漏选均不得分)。1、若定义:inta[2][3]{0,2,4,6,8,10};以下描述正确的有(A,C,D,E)A、*(a+1)为元素6的地址这里a+1a[1]的地址;*(a+1)的。。此内容文章属于《考试资料》栏目,以上内容为《C语言试题及答案-6-6 19:22:09》简单介绍,正文正式开始
C语言部分
一、选择题(每小题2分,共10分)
(下在各小题,分别有一个或多个正确答案,请将所有正确答案的编号,填写在该小题题干后的括号内。错选或漏选均不得分)。
1、若定义:int a[2][3]{0,2,4,6,8,10};以下描述正确的有( A,C,D,E )
A、*(a+1)为元素6的地址
这里a+1=a[1]的地址;*(a+1)的值是6,故A正确。
B、*(a[1]+1)的值为2
为8,故B不正确
C、**(a+1)+2的值为8
这里a+1是一个指针,指向的是a[1]. *(a+1)为a[1],a[1]指向的是a[1][0]. **(a+1)为6,加2得8,故C正确;
D、a[0]与a相同
因二者都是指针,指针的地址都是指向数组中的第一个元素的地址,故D正确。
E、a[1][2]的值为10
它是指第二行的第三个元素,为10,正确
2、对函数的正确使用方法描述( A,C,D )。
A、用数组做函数参数时,必须在主调函数和被调函数中分别定义数组
B、实参数组元素和形参数组元素类型可以不一致
C、形参数组长度可以不指定 D、形参数组长度可以大于实参数组长度
E、数组名做参数属于值传递
3、对静态变量的正确描述( A,B,D,E )
A、静态局部变量在静态存储区内分配单元( )
B、静态外部变量可以赋初值,也可以不赋初值
C、静态外部变量的作用与外部变量相同
D、静态局部变量在函数调用结束时,仍保存其值,不会随着消失。
E、静态局部变量只赋一次初值
4、下列描述正确的是( A ,C)。
A、由main 函数及其参数argc和* argv[]可以实现命令行方式
B、使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中
//先写缓冲区数据到文件中,再释放文件指针
C、字符数组并不要求它的最后一个字符是‘’
//是的,以字符指针指向的字符串才要求,因为只有这样,才能知道字符串的长度,而在字符数组中,不用,一样可以知道到哪里是字符数组的结尾。
D、‘A’和“A”都是字符串常量
E、若char*S=“ a17bc”;则指针变量S指向的字符串所占的字节数是7
5、在缓冲文件系统中用于读写的函数有( A,B,D )
A、putchar B、fread() C、rewind () D、purw() E、fseek()
二、程序阅读,并给出运行结果(共10分,每题5分)。
(1)main()
{ unsigned a,b,x
int n;
a=0x763 输出结果:
n=6;
b=a<<(12n);
x=(a>>n2)^b; //+,,的优先级比<<,>>高。
printf(“ b=%x, x=%x”,b,x);
}
在用2个字节表示整数的系统中
结果为
d8c0
d8b6
在用4个字节表示整数的系统中
结果为
1d8c0
1d8b6
故以上两种结果都正确。
(2) #include 〈stdin.h〉
struct m {int x;
int *y;
} *p;
int a [4]={12,33,40,100};
struct m b [4]={10,&a[2],9,&a[3],8,&a[0],7,&a[1]}'
main()
{
p=b; 输出结果:
printf(“%d ”,++p>x); //>的优先级高于++,因此等于是++(p>x),为11
printf(“%d ”,(++p)>x); //p后移一个元素,其x值为9;
printf(“%d ”,++(*p>y));
//>的优先级高于*, 此时p已指向b[1],故*(p>y)为a[3]为100.自加后为101;
}
故输出结果为:
11
9
101
三、程序设计(共10分)
设在文件a.txt和文件b.txt中分别存有两个字符串,设计一个程序将这两个字符串按依序交叉的方式合并为一个字符串(例如“aaaaa”与“bbb”的合并结果为“abababaa”,而“bbb”与“aaaaa”的合作结果为“ bababaa”,)并将结果存入文件a.txt中。
【答案】
写程序时,可以分别读取a.txt文件和b.txt文件,注意(1),无论a文件先读完还是b文件先读完,程序都能作出适应性的判断。注意(2)把a和b合并的结果,写到一个临时文件c中,最后把c的文件覆盖到a文件中,达到题意的要求。
#include
main()
{
FILE *fp,*fq,*fr;
char ch;
if((fp=fopen(“a.txt”,“r+”))==NULL)
{ printf(“cannot open file a.txt”);
exit(0);
}
if((fq=fopen(“b.txt”,“r”))==NULL)
{ printf(“cannot open file b.txt”);
exit(0);
}
fr=fopen(“c.txt”,“w+”);
while(!feof(fp))
{
ch=fgetc(fp);
fputc(ch,fr);
if(!feof(fq))
{
ch=fgetc(fq);
fputc(ch,fr);
}
}
while(!feof(fq))
{
ch=fgetc(fq);
fputc(ch,fr);
}
rewind(fp); rewind(fr);
while(!feof(fr))
{
ch=fgetc(fr);
fputc(ch,fp);
}
fclose(fp); fclose(fq); fclose(fr);
}
1.2 四川大学攻读硕士学位研究生入学考试试题 及 答案
1.2.1第20�D�DC语言程序设计 题目
一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码写在答题纸上。请注意注明题号。每小题1分,共计6分)
1、‘ ’表示什么?
①字符串常数 ②标识符 ③变量 ④字符常量
答案:④
2、对宏定义不正确的描述是哪一个?
①在进行宏定义时,可以引用已经定义的宏名,可以层层置换
//可以引用已经定义了的宏名,可以层层置换
②宏名的有效范围包括本文件的任何位置
//宏名的有效范围定义命令之后到本源文件结束,可以用#define终止宏定义的作用域
③宠定义不是语句,不必在行末加分号
//是预处理定义语句
④对程序中双引号括起来的字符串,即使与宏名相同,也不进行置换
3、若定义static char s[20]=”computer”;则执行语句x = strlen(s);之后,x的值为多少?
①20 ②9 ③8 ④19
//strlen函数计算char*型字符串的长度的时候,并不包含末尾的;
4、以下哪一个表达式取值是正确的?
①6>5结果为6 ②6&&5结果为7
③6||5结果为7 ④6<5结果为0
5、如定义
enum weekday {one, two, thr, fou, fiv};
enum weekday working;
以下哪个是不正确的枚举变量的使用?
①working = thr; ②working =2;
③working = (enum weekday)2;
④working = (enum weekday) (53);
//不能对其赋值
6、下列说法中正确的是哪一个?
①sizeof (char) 是结果为整型的表达式
②sizeof (char) 是一个不合法的表示形式
③sizeof (char) 是一种函数调用
④sizeof (char) 是结果为实型的表达式
二、阅读程序,并回答问题(共12分)
1、下列程序的输出是什么?(3分)
# include
void main ()
�x
char * aplha [6] = �x“ABC”,“DEF”,“GHI”,“JKL”,“MNO”,“PQR”�y;
char **p;
int i;
p = aplha;
for (i = 0; i<4; i++)
printf (“%s”, p[i]);
printf (“ ”);
�y
//输出结果
ABCDEFGHIJKL
刚好是字符串数组里面的前四个元素的内容连接起来
2、下列程序为什么无法将用户输入的三个整数按从小到大排序输出?应该如何修改?(6分)
# include
void swap (int x, int y)
�x
int t = x;
x = y;
y = t;
�y
void main ()
�x
int a, b, c;
scanf (“%d, %d, %d”, &a, &b, &c);
if (a>b) swap (a, b);
if (a>c) swap (a, c);
if (b>c) swap (b, c);
printf (“%d, %d, %d”, a, b, c);
�y
//函数swap采用值传递,虽然将形参x和y交换了,但是并不影响到实参。将值传递改成指针传递就可以了。
C函数参数采用值传递方式,虽然swap函数将形式参数x和y的值进行了调换,但是影响不到相应的实在参数。所以在主函数中,通过调用sawp函数调换a和b(或a或c,或b和c)的值是根本达不到目的的。
修改:
(1)(2分)
void swap (int *x, int*y)
�x
int t = *x;
*x = *y;
*y = t;
�y
(2)(2分)主函数
if(a>b) swap(&a,&b);
if(a>c) swap(&a,&c);
if(b>c) swap(&b,&c);
3、假设系统为基本整型量分配2个字节,为字符型量分配1个字节。下列程序完成的功能是什么?(3分)
# include
union
�x
int n;
char ch [2];
�yu;
void main ()
�x
int m;
scanf (“%d”,&m);
u.n = m;
printf (“ %u, %u”,u.ch[0], u.ch[1]);
�y
//该程序的功能,取用户输入的整数值的高字节和低字节,并按照任意整数的低字节和高字节分别输出。
三、程序设计题(12分)
假设一个文本文件中保存着100个整数,请将这100个整数按从小到大的顺序写到另一个文本文件中去,并且在新文件中每10个整数占一行。源文件名和目标文件名通过命令行参数获取。
分数分配:
变量定义 2分
命令行参数处理 1分
文件打开 1分
文件读 2分
排序 3分
文件写 2分
文件关闭 1分
# include
void main(int argc, char *argv[])
�x
FILE *fin, *fout;
Int a [100], i, j, t;
if(argc!=3)
�x
printf (“ You forgot to enter a filename ”);
return;
�y
fin = fopen (argv[1], “r”);
fout = fopen (argv[2], “w”);
for (i = 0; i<100; i++)
fscanf (fin, “%d”, &a[i]);
for (i = 0; i<99; i++)
for (i = 0; i<99-i; i++)
if (a[j]>a[j+1])
�xt = a[j]; a[j] = a[j+1]; a[j+1]=t;�y
for (i = 0; i<100; i++)
�x
if (i%10 = 0)
fprintf (fout, “%s”, “ ”);
fprintf (fout, “%d”, a[i]);
�y
fclose (fin);
fclose (fout);
�y
1.3 四川大学攻读硕士学位研究生入学考试试题 及 答案
1.3.1 第20�D�DC语言题目
C语言程序设计(共30分)
一、单项选择题(在每小题的四个备选答案中,选出一个正确答案。每小题1分,共6分)
1、如果I为整型变量,f为float型变量,c表达式'a'+I*f的类型为 。
A、字符型 B、整型 C、单精度型 D、双精度型
//即使是两个float型的数据相加,都化成double型 float型的数据在运算时一律转化成双精度型,提高其运算精度
2、关于c表达式5||(a=b+c)==3的值,正确的说法为 。
A、值为1 B、值为5 C、值为0
D、仅这一个表达式,不能确定值,必须知道a,b,c的值后才能计算。
//等号==的优先级高于||所以先计算(a=b+c)==3但是不论它为真或假,在与5进行或运算时,按照或运算的法则,只要一方为真,表达式的结果为真。
3、若整型变量a的值为50,则c表达式a>>2的值为 。
A、50 B、25 C、12.5 D、12
//每右移一位除以2,且由于a为整型,结果为整型
4、若c,c1,c2均为字符型变量,下列语句执行后。
c='a';
c1=++c;
c2=c++;
c1,c2的值分别为 。
A、c1='b',c2='c' B、c1='a', c2='c' C、c1='b',c2='b' D、c1='a',c2='b'
//前加加,先加1后使用值,后加加是先使用其值在加加,所以c加加后的值赋予c1,c1得值b,c2先使用值,再加加,c2得值b
5、以下c 语句执行后,
int i, s=0;
for (i=0;i<10;i++)s+=i;
printf ('%d ', i);
输出的内容为 。
A、0 B、9 C、10 D、11
//i值在循环外定义,所以其值循环结束仍有意义,得值10
6、以下c语句执行后,
char s1[100] =″I like C 1anguage″,s2[100];
strcpy(s2, s1);
strcat (s1, s2);
puts (s2);
输出的内容为 。
A、I B、I like C language C、I like C language I like C language
D、I like C language I like C language I like C language
//连接后的串存在s1里,对s2没有影响
二、阅读程序,写出该程序的执行结果。(4分)
# include 〈stdio.h〉
void main ( )
{ char a [3] [10]={“Beijing ”,“Shanghai”, “Chengdu”};
char p1, (*p2)[10];
p1=a[0];
p2=a;
printf(“%c ”,*(a[1]+1));
// a[1]代表是第一行字符串Shanghai,加1后得值第一个字符h的地址,*取出其地址里的值h
printf(“%c ”,*(*(a+1)+2));
// *(a+i)=a[i] 代表是第一行字符串Shanghai,加2后得值第2个字符a的地址,*取出其地址里的值
printf(“%c ”,*(p1+1));
//p1是一字符指针,加一指向第零行第1个字符e的位置,*取出其地址里的值
printf(“%c ”,*(*(p2+1)+2));
//p2为一指向数组的指针,p2是与数组名等价的指针,它指向2维数组的首行,p2+1指针指向了第一行字串Shanghai,加2后得值第2个字符a的地址,*取出其地址里的值
printf(“%s ”,*(p1+1));
//打印的从第一个字符开始的第零行余下的字符串eijing
printf(“%s ”,*(p2[2]);
//p2[2]指的是第二行,打印第二行字符串Chengdu
printf(“%s ”,*(p2+1));
//p2+1指向的是第一行字符串shanghai
三、按要求编写函数。(8分)
在一程序中定义了如下结构类型用于处理单向链表:
struct linkage {
int value;
struct linkage *pNext;
};
现已经编写出按节点的成员a值从小到大建立初始链表的函数
create ( ),如下所示:
struct linkage * create (void )
{
struct linkage * pHead;
int a[4]={2,1,3,5};
pHead=NULL;
for (i=0;i<4;i++)
pHead=addItem(pHead,a[i]);
return pHead;
}
在该函数的for循环前,pHead为NULL;在执行整个for循环后,创建的链表如下所示:
即在被调函数addItem( )中,需要动态分配内存,生成新节点,将传入的第二参数的值赋给该节点的成员value:并通过第一个参数链表首节点确定适当位置放置该新节点。
请完成函数:
struct linkage * addItem (struct linkage *pHead, int value );
返回值指向单向链表头节点。
你可能用到下面的动态内存分配函数。
void* malloc (unsigned int size);其作用是在内存的动态存储区中分配一个长度为size的连续空间。返回值为指向分配域起始地址的指针。
1、在空链表中加第一个节点2分;
2、加到当前链表头节点前2分;
3、加到当前链表头节之后适当位置,可分为两步。2分;
4、其它部分2分,包括整体结构,变量定义,返回值。
struct linkage *addItem (struct linkgae *pHead ,int value)
{ struct linkage *p ,*q,*r,*s;
p=pHead;
if (!p)
{ r=(struct linkage *) malloc (sizeof (struct linkage));
r>a=value;
r>pNext =NULL;
pHead=r;
}
else if (value <=p>a)
{ r=(struct linkage *) malloc (sizeof (struct linkage));
r>a=value;
r>pNext =p;
pHead=r;
else
{ q=p>pNext;
while (q)
if (value<=q>a)
break;
else
{ p=q;
q=p>pNext;
}
r=(struct linkage *)malloc (sizeof (struct linkage));
r>a=value;
r>pNext=q;
p>pNext=r;
}
return pHead;
}
四、程序设计。(12分)
单位HTML文件由标签,标题和正文主体等部分组成。如下所示:
〈HTML〉
〈HEAD〉
〈TITLE〉HTML标题部分
〈/HEAD〉
这里是HTML文件的主体部分。
换新行。
〈/HTML〉
符号“<与”>“及其之间的内容是标签,如〈HTML〉,等。其它部分是标题和主体。请按以下说明和要求完成程序,将简单的HTML文件转换为TXT文件:
1. 序将简单HTML文件的有标签和换行符( )(去掉。标题部分结束(遇到标签)后加上一个换行符( )。每一个
标签换成一个换行符( )。其余部分原样保留。如上面的简单HTML文件处理为(�L表示换行):
HTML标题部分�L
这里是HTML文件的主体部分。�L
换新行。
2.简单HTML文件的标签内没有嵌套情况,即在”<和“>”这间不会再出现“<或”>“。
3.标签内的内容大小写无关。如
,
,
等价。
4.示签的”<和“>”与标签内容间无空格。即不会出现
或< BR>等情况。
5.标题和正文中不会出现“<和”>“字符,它们通过转义字符实现,这时尤需考虑。
6.程序需要处理命令行参数。第一个参数指要处理的HTML文件名,第二个参数指定处理后要存放的文件名。这两个文件都是文本文件。
7.程序必须进行必要的出错处理,如无法打开文件等。
8.程序不需要包含头文件。
1、main()函数形参处理:2分。
2、变量定义1分。
3、打开关闭文件2分;
4、读源文件1分;
5、能从标签中找出内容〈BR〉〈/TITLE〉换为' '部分2分;
6、区分开标签和其它部分,并按要求写入目标文件2分;
7、整体结构正确2分;
void main (int argc, char *argv[])
{ char C,tag[7];
int status ,len ;
FILE*fin,*fout;
if (argc!=3)
{ printf(”参数个数不对!“)
exit (1)
}
if ((fin=fopen (argv [1],”r“)))==NULL)
{
printf(“打不开源文件”);
exit(1);
}
if ((fout=fopen (argv [2],”w“)))==NULL)
{
printf(”无法写入文件!“);
fclose (fin);
exit (1);
}
status =0;
while ((c=fgetc (fin)))!=EOF)
switch (C)
{
case '<':
status=1;
len=0;
break;
case ‘>’:
status=0;
if(len<=6)
tag[len]=0;
if(!strcmp(tag,”/title”)||!strcmp(tag,”br”))
fputc(‘ ’,fout);
break;
case ' ':break;
default:
if (! status)
fputc (c,fout);
else
{ len++;
if (len<=6);
tag[len1]=c;
}
}
fclose (fin);
fclose (fout);
}
1.4 四川大学攻读硕士学位研究生入学考试试题及 答案
1.4.1 第20�D�DC语言题目
C语言程序设计(40分)
一、分析下面的 程序,写出程序执行结果。(每小题4分,共2分)
1、
#include 〈stdio.h〉
void swap (int **p1,int **p2)
{ int *t;
t=*p1;
p1=p2;
*p2=t;
}
void main( )
{ int a=1、b=3、*p=&a、*q=&b;
swap(&p、&q);
printf('%d、5d、%d、%d ”、a、b、*p、*q;
}
//因为在swap函数里交换的是两个参数的地址,所以参数使用的是两级指针,表示交换的是指针的地址,最终使p指向了b,q指向了a。
1,3,3,1
2.
# include
void merge (char *d、char sl、char、S2)
{ while (*sl!='' && *S2!='')
if (*sl<*s2)
d++=*sl++;
else
d++=*s2++;
while (*sl!=') *d++=sl++;
while (*s2!='') *d++=s2++;
*d='',
}
void main( )
{ char sl=“acdgh”,s2=“bcfhi”,s3[20];
merge(s3,s1,s2);
puts(s3)
}
//将两个字符串合为一个按照字母顺序排列的串
abccdfghhi
二、按要求完成C函数。(每小题10分,共20分)
1.int maxsameChar(char *s);
该函数计算字符串 s中最大连续相同的字符个数。例如,若s 为“aaabbbb”,则返回值为4;若s为“abcde”,则返回值为1。
int maxSameChar (char *s)
{ int temp=1, max=0;
char c='';
while (*s)
{ if (c==*s)
tmpe++;
else
{ c=*s;
temp=1;
}
if (max
max=temp;
s++;
}
return max;
}
2. struct mode *reverse(struct mode *pHead);
其中,struct node 定义如下:
struct node
{ int key ;
struct node *pNext;
};
此函数传入的pHead指向要处理的单向链表头,该链表以NULL指针结束。函数实现链表链接方向(包括pHead 指向的原头节点)的反转,如图1所示。并将新链表头指针作为函数值返回。在完成此函数时,你只能利用原有链表节点,不能申请新节点空间。
struct node* reverse (struct node* pHead)
{ struct nodt *p,*q,*t;
if (pHead==NULL)
return NULL;
p=pHead;
q=p>pNext;
while (q! NULL)
{ t =q>pNext;
q>pNext=p;
p=q;
q=t;
}
pHead>pNext=NULL;
pHead=p;
return pHead;
}
三、按要求完成简单的客车车次查询程序。(12分)
某车站需要一个简单的客车车次查询程序。说明如下:
1. 客车车次数据文件checi.txt放在c:data目录下,格式为:
T8 成都 北京西 09:30
1364 成都 北京西 14:20
K118 攀枝花 北京西 22:00
… … …
其中每行为一次车的信息,分为4个数据项:车次,始发站,终点站和离开本站时间。前三个数据项留的宽度为8字符,最后一项结束后即换行。数据项间一定有空格隔开,每一数据项内无空格。
2.你的程序对用户通过命令行参数指一的车次,在客车车次数据文件中查找相应车次信息并输出该次车的始发站,终点站和离开本站时间,如果未找到,则输出“找不到该次车信息!”。
3.你的程序可以使用标准的C库函数,可以不引用文件。程序中应给出必要的注释。
int main (int argc, char *argv [ ])
{ char info [4] [20];
FILE * fp;
int I,found=0;
if (argc!=2)
{ printf(“参数个数不正确! ”);
return 1;
}
fp=fopen (“c:checi. txt ”,“r”);
if (fp==NULL)
{ printf (“无法打开数据文件! ”);
return 1;
}
while (! feof (fp))
{ for (I=0;i<4; i++)
fscanf (fp,“%s”,info[i]);
if (!stricmp (info[0],argv[1]))
{ found=1;
printf(“始发站:%s ”,info [1]);
printf(“始发站:%s ”,info [2]);
printf(“离本站时间:%s ”,info [3]);
break;
}
}
if (! found )
printf(“找不到该次车信息! ”);
return 0;
}
1.5 四川大学攻读硕士学位研究生入学考试试题及 答案
1.5.1 第20�D�DC语言题目
C语言程序设计(40分)
一、写出下列表达运算后a的值,设a,b 均为 int ,每个表达式运算到a=2,b=3。(5分)
(1) a+=b*5
//a=a+b*5,为17
(2) a=b++
//a=3
(3) a%=(a%=b)
//结果为0
(4) a=a>b&&b>a||a
//>的优先级高于&&和||原式理解为(a>b)&&(b>a)||a
&&运算符高于||,原式理解为((a>b)&&(b>a))||a,因为a值为2,结果为1真。或运算是有一为1
(5) a=!b
//!的运算符最高,<其次,&&最小原式理解为((!b)
二、下面的程序构造一个有向图,请画出其示意图。(10分)
include 〈stdio.h〉
struct node /*有向图的节点类型*/
{ int key;
struct node *left,*right,*up,*down;
};
int main (int argc ,char * argv [])
{ int i;
struct node nodes[5];
for( i=0;i<5;i++)
{ nodes [i].key=i;
nodes [i].left=NULL;
nodes [i].right=NULL;
nodes [i].up=NULL;
nodes [i].down=NULL;
}
nodes [0].left=nodes+1;
nodes [1].left=nodes;
nodes [1].up=nodes+2;
nodes [2].down=nodes+3;
nodes [3].right=nodes+4;
nodes [4].up=nodes;
nodes [4].down=nodes+1;
return 0;
}
三、按要求完成函数。(10分)
int sameChar sAT SamePos (char *s1,char *s2);
两个字符串的字符进行同位置比较,返回相同的字符数(串结束符‘’不比较)。
例如,若s1=“abc”,s2=“Abc”,则返回值为2。
int sameCharAtSame Pos (char *s1,char *s2)
{
int counter =0;
while (*sl && *s2)
{
if (*s1 == *s2)
counter ++;
s1++;
s2++;
}
return counter;
}
四、按要求编写程序对一种特殊字符串解码。(15分)
要处理的特殊字符串由A,C,G,U四个字符组成,如下所示:
ACUGCCCAUGAAAAACUUUUGACAC
其有效信息子串从第一次出现“AUG”后开始,遇到“UGA”结束(不包括“AUG”和“UGA”。)如上面的编码串需解码的有效子串为:
AAAAACUUU
有效子串中每3个字符(如“AAA”,“CGA”)作为一个密码子(可以保证,有效子串的长度一定为3的整数倍。)可能的密码子(62种)及相应码值以如下形式放在编码文件code.txt中(按密码子字典序排列);
AAA K
AAC N
…………
UUU F
请编写C程序对存放在文件中的特殊字符串解码,在屏幕输出解码串。如:KNF
KNE
要求:
1、编码文件code.txt放在c盘根目录下;
2、要解码的特殊字符串以文件形式存放,其串长不超过1024字符;
3、你编写的程序应能处理命令参数,指定要解码的字符串文件;
4、程序中可以使用C语言的标准库函数,不需要写出头文件;
5、程序中应有必有的注释。
#include 〈stdio.h〉
#include 〈string.h〉
struct
{
char name[4];
char code;
} table [62];
int main (int argc,char *argv [ ])
{
FILE *code? file=NULL, *string file =NULL;
char string [1024+2],buffer[4],*p,*end ;
int I;
/* 检查命令行参数*/
if (argc<=1)
}
/*打开编码文件以及待解码文件*/
code? file=fopen (“c:code. txt”,“r”);
string file =fopen (argv[1],“r”);
if (code_file= = NULL | | string_file = =NULL)
return 1;
/* 读编码文件,将结果记入表中 */
for (i=0; i<62; i++)
{
fscanf(code_file, “%s %c ”, tabie[i], name, &table[i].code);
}
/*读待解码文件内容到string中 */
fgets (string, sizeof (string), string_file);
/* 扫描有效子串头 */
p= strstr(string, “AUG”);
end = strstr (p + 3 , “UGA”);
/*读有效子串,查表输出解码字符,直到子串尾 */
for (p+=3; p
{
for (i=0; i<3; i++)
{
buffer [i] = p [i];
}
buffer [i] ='';
for (i=0; i<62; i++)
{
if (strcmp (buffer, table [i].name)) = = 0)
{
printf(“%c”, table[i]. code);
break;
}
}
}
/* 关闭编码文件以及待解码文件 */
fclose (code_file);
fclose (string_file);
return 0;
}
1.6 四川大学攻读硕士学位研究生入学考试试题及 答案
1.6.1 第20�D�DC语言题目
C语言程序设计(50分)
一、 读程序,写执行结果(8分)
1、
#include
int main( )
{ int a=4,b=3,c=1,x;
x=a>b;
printf(“%d ”,x);
//结果为1
x=a+b++;
printf(”%d ”,x);
//结果为6
x=a>b;
printf(”%d ”,x);
//结果为假,0
x=c&&b==c;
printf(”%d ”,x);
//==的运算级高于&&, c&&(b==c)结果为假0
return0;
}
2.
#include
int main( )
{ inti,j;
for(I=0;I=8;I+=2)
{ for(j=0;j<(8I)/2;j++
printf(”+”);
for(j=0;j<=I;j++)
printf(”*”);
printf( ”);
}
return0;
}
++++*
+++***
++*****
+*******
二.按要求完成函数。(28分)
1. 一种最简单的字符串加密方法是将字符串的每一字符加上一个偏移量offset(不考虑溢出)。请编写木相应的编解码函
数,其原型分别为:
char*encode(char*s,int offset);
char *decode(char *s,offset);
char *encode(char *s,int offset)
{
char *p=s;
while (*p)
{
*p +=offset;
}
renturn s;
}
char *decode(char *sm int iffset)
{
char *p= s;
while(*p)
{
*p=offset;
}
return s;
}
2编写函数将两个节点值递增的单向链表归并为一个。要求利用原节点空间。链表节点定义为:
struct node
{ int value;
struct node *pNext;
};
函数原型为:
struct node *merge(struct node *a, struct node *b);
其中a,b为要归并的两个单向链表头节点指针,函数返回值为归并后的单向链表头节点指针。
struct node
{
int value
struct node *pNext;
}
struct node *merge(struct node *a, struct node *b)
{
struct node *p;
struct node *q
struct node *t;
if (a>value <=b>vaLue)
{
p=a;
q=b
}
else
{
p=b
q=a;
}
t=p;
while (q)
{
if (p>pNext ==NULL)
{
P>Pnext=q
break;
}
if (q>value
pNext>value)
{
struct node.*k=q>pNext;
q>pNxt=p>pNext;
p>pNext=q;
q=k;
continue;
}
p=p>pNext;
}
return t;
}
三.编写程序模拟数字LED显示。(14分)
编写程序完成如下功能:用户键盘输入最多四位的整数,在屏幕上以类似LED方式显示。如用户输入为:
8234
则输出
其中每个数字字模均为7行×4列。09+个数字的字模顺序地以文本形式存放在方件C:font.txt中。
要求:
1、 输出的各数字间有1个空格;
2、 你的程序可以使用C语言标准库函数,不需要写出头文件;
3、 程序中应有必有的注释。
char font[10][7][5];
94 int n;
95 int digit[4];
96 int length=0;
97
98/ * 装载字体文件 */
99 void load fontsO
100 {
101 int I, j, k;
102 FILE *file;
103
104 file = fopen(”c:font”,”r”);
105 if (file==NULL)
106 {
107 printf(” 打开字体文件 font. Txt 错误|n”);
108 exit(1);
109 }
110
111 for (k = 0; k<10;k++)
112 {
113 for (I=0; I<7; I++)
114 {
115 char line[10];
116 fgets(line, 5, file);
117 for (j=0; j<4;j++)
118 {
119 font[k][I][j]=line[j];
120 }
121 font[k][I][4]=0;
122 }
123 }
124
125 fclose(file);
126 }
127
128/* 将输入的整数解码为单个的数字*/
129 void decode()
130 {
131 int I;
132 int m=n;
133 for (I=0; I <4;I++)
134 {
135 digit[I]=m % 10;
136 m =m/10;
137
138 if (m==0)
139 break;
140 }
141
142 length = I + 1;
143 if (length >=4)
144 length=4;
145 }
146
147 /* 显示LED */
148 void disnlav()
149 {
150 int I,j;
151 for (I=0; I<7;I++)
152 {
153 for (j = lengthI; j>=0;j__)
154 {
155 printf(”%s”, font[j][I]);
156 printf(” ”);
157 }
158 printf(” ”);
159 }
160 }
161
162 int main()
163 {
164
165 load fonts();
166
167 scanf(”%d”, &n);
168 decode();
169 display();
170 }
C语言试题及答案的延伸阅读――c语言学习体会
记得上次开班会的时候我吹牛说要和你们一起学习c语言,不知不觉已经快半个月拉。我得对自己的话负责。今天我把借来的教材看了看,以前真的是不了解,今天才知道它是贝尔实验室的设计师Dennis在1972年设计的。c语言是其他计算机语言的基础,其他的计算机语言都是在它的基础上研发。所以学好c语言对于以后要在自动化专业有所发展的同学是非常有好处的,尤其是将来的plc编程、电子产品设计等等,都需要用到c语言。
今天我学习了一个最最简单的程序,感觉十分有收获,明白了它的最基本的道理――它也是一门语言,和我们的汉语是一样的,它也有自己的语法、逻辑结构,只要是能真正的去理解它,还是很容易学会的。
今天学习的程序如下:
#include
#include
main()
{
double x,s;
printf(“input number: ”);
scanf(“%lf”,&x);
s=sin(x);
printf(“sine of %lf is %lf ”,x,s);
}
这个的功能
篇10:c语言试题及答案
c语言试题及答案
c语言试题
一 选择题(7分,每小题0.5分)
1.C语言源程序的基本单位是( )。
A 过程 B 函数 C 子程序 D 标识符
2.下列程序的输出结果是( )。
main( )
{ int a=7,b=5;
printf(“%d”,b=b/a);
}
A 5 B 1 C 0 D不确定值
3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。
A 7 B 8 C 9 D 2
4.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。
a=125.534; a=(int)125.521%4; a=5<<2;
A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20
5.设有如下程序段,下面描述中正确的是 ( )。
int k=10; while(k=0) k=k-1;
A 循环执行一次 B循环是无限循环 C循环体语句一次也不执行 D循环体语句执行一次
6.以下程序的输出结果为( )。
int i;
void prt( )
{ for(i=5;i<8;i++) printf(“%c”,'*');
printf(“ ”);
}
main( )
{ for(i=5;i<=8;i++) prt( );
}
A *** B *** *** *** *** C *** *** D * * *
7.在C语言程序中,以下说法正确的是( )。
A函数的定义可以嵌套,但函数的调用不可以嵌套
B函数的定义不可以嵌套,但函数的调用可以嵌套
C函数的定义和函数的调用都不可以嵌套
D函数的定义和函数的调用都可以嵌套
8.以下函数调用语句中含有( )个实参。
func((e1,e2),(e3,e4,e5));
A 2 B 3 C 5 D 语法错误
9.以下程序的输出结果为( )。
#define ADD(x) x*x
main( )
{ int a=4,b=6,c=7,d=ADD(a+b)*c;
printf(“d=%d”,d);
}
A d=70 B d=80 C d=140 D d=700
10.已知职工记录描述如下,在Turbo C中,系统为变量w分配( )字节的空间。
struct worker
{ int no;
char name[20];
char sex;
union
{ int day; int month; int year;}birth;
} w;
A 29 B 20 C 25 D 6
11.设有以下定义,值为5的枚举常量是( )。
enum week{sun,mon=4,tue,wed,thu,fri,sat} w;
A tue B sat C fri D thu
12.下面选项中正确的赋值语句是(设 char a[5],*p=a;)( )。
A p=“abcd”; B a=“abcd”; C *p=“abcd”; D *a=“abcd”;
13.设有以下程序段,则值为6的表达式是( )。
struct st { int n; struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p;
p=&a[0];
A p++->n B ++p->n C p->n++ D (*p).n++
14.C语言中的文件类型只有( )。
A 索引文件和文本文件两种 B 文本文件一种
C 二进制文件一种 D ASCII码文件和二进制文件两种
二 判断对错,对的划“√”,错的划“×”(5分,每小题0.5分)
1.在Turbo C中,整型数据在内存中占2个字节。( )
2.int i=20;switch(i/10){case 2:printf(“A”);case 1:printf(“B”);}的输出结果为A。( )
3.break语句用在循环体中,可结束本层循环,continue语句用在循环体中,可结束本次循环。( )
4.函数的递归调用不过是一个函数直接或间接地调用它自身。( )
5.函数strlen(“ASDFG”)的值是7。( )
6.通过return语句,函数可以带回一个或一个以上的返回值。( )
7.结构体类型只有一种。 ( )
8.char *p=“girl”;的含义是定义字符型指针变量p,p的值是字符串“girl”。( )
9.若有定义:char *p(char a[10]);则p是函数名。( )
10.用fopen(“file”,“r+”);打开的文件“file”可以进行修改。 ( )
三 写出下列程序的运行结果(10分,每小题2分)
1.float average (float array[10])
{ int i;
float aver,sum=array[0];
for (i=1;i<10;i++)
sum=sum+array[i];
aver=sum/10;
return(aver);
}
main( )
{ float score[10]={89,67.5,78,91,56,82.5,65,70,79,88},aver;
int i;
aver=average (score);
printf (“average score is %5.2f”,aver);
}
2.main( )
{ char a[5]={‘A’,‘B’,‘C’,‘D’,‘E’},*p=a,**pa;
for(p=0;p
printf(“%2c”,*p);
printf(“”);
printf(“%2c”,**(pa=&p));
}
3.main( )
{ int a,b,s=0;
for(a=1,b=1;a<=100;a++)
{ if(b>=20) break;
if(b%3==1)
{ b+=3; continue; }
b-=5;
}
printf(“a=%d b=%d”,a,b);
}
4.main()
{ printf(“main( ) :%d”,fact(5));
fact(-5);
}
fact(int value)
{ int f;
if(value<0)
{ printf(“Arg error“);
return(-1);
}
else if(value==1||value==0) f=1;
else f=value*fact(value-1)+1;
printf(“This called value=%d”,f);
return f;
}
5.main( )
{ int a=012,b=0x12,k=12;
char c=‘102’,d=‘’;
printf(“a=%d b=%d k=%d”,a,b,k);
printf(“c=%c,d=%c%o”,c,d,a);
a=‘A’; c=49;
printf(“a=%d c=%c”,a,c);
}
四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分)
1.有一个3*4矩阵,求其中的最大元素。
max_value( (1) )
{ int i,j,max;
max=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(array[i][j]>max)
max=array[i][j];
(2) ;
}
main( )
{ int a[3][4], i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
(3) ;
printf(“max value is %d”,max_value(a));
}
2.输入x、y两个整数,按先大后小的顺序输出x、y。
#include “stdio.h”
main( )
{ int x,y, *px,*py, (4) ;
scanf(“%d%d”,&x,&y);
(5) ; (6) ;
if(x
{ p=px; px=py; py=p; }
printf(“x=%d,y=%d”,x,y);
printf(“MAX=%d,MIN=%d”,*px,*py);
}
3.用选择排序法对任意10个整数按照由小到大排序。
main()
{ int a[11],i,j,k,t;
printf(”Please input 10 numbers:“);
for(i=1;i<11;i++) scanf(”%d“,&a[i]);
printf(”“);
for(i=1;i<=9;i++)
{ (7) ;
for(j=i+1; (8) ;j++)
if(a[j]>a[k]) k=j;
if(k!=i)
{ t=a[k]; a[k]=a[i]; a[i]=t;}
}
printf(”The sorted numbers:“);
for(i=1;i<11;i++) printf(”%d “,a[i]);
}
答案
一 选择题(7分,每小题0.5分)
1. B 2. C 3. B 4. B 5. C
6. A 7. B 8. A 9. A 10. C
11. A 12. A 13. B 14. D
二 判断对错,对的划“√”,错的划“×”(5分,每小题0.5分)
1.× 2.× 3.√ 4.√ 5.×
6.× 7.× 8.× 9.√ 10.√
三 写出下列程序的运行结果(10分,每小题2分)
1. 2. 3.
4. 5.
四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分)
1.(1)int array[3][4](int array[][4]) (2)return(max) (3)scanf(“%d”,&a[i][j])
2.(4)*p (5)px=&x(py=&y) (6)py=&y(px=&x)
3.(7) (8)
C语言试题3
一 选择题(24分,每小题2分)
1.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是( )。
A 存放读入数据项的存储区 B 存放读入数据的地址或指向此地址的指针
C 一个指向所读文件的文件指针 D 一个整形变量,代表要读入的数据项总数
2.以下程序的输出结果为( )。
main( )
{ int i=010,j=10;
printf(”%d,%d“,i++,j--);
}
A 11,9 B 9,10 C 8,10 D 9,9
3.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。a=125.534;a=20.0/3;a=(int)125.521%4;a=5<<2;
A 125,6,31,1 B 125,6,1,20 C 125,6.666666,31,20 D 125.534,6.666666,2,20
4.设i和k都是int类型,则for循环语句( )。
for(i=0,k=-1;k=1;i++,k++) printf(”****“);
A 循环结束的条件不合法 B 循环体一次也不执行 C 循环体只执行一次 D 是无限循环
5.以下程序的输出结果为( )。
main( )
{ char c;
int i;
for(i=65;i<68;i++)
{ c=i+32;
switch(c)
{ case 'a':case 'b':case 'c':printf(”%c,“,c);break; default:printf(”end“);}
}
}
A a,b,c,end B a,a,a,end C a,a,a, D a,b,c,
6.函数调用语句:fseek(fp,-10L,2);的含义是( )。
A 将文件位置指针从文件末尾处向文件头的方向移动10个字节
B 将文件位置指针从当前位置向文件头的方向移动10个字节
C 将文件位置指针从当前位置向文件末尾方向移动10个字节
D 将文件位置指针移到距离文件头10个字节处
7.以下程序的输出结果为( )。
main( )
{ char s1[40]=”country“,s2[20]=”side“;
int i=0,j=0;
while(s1[i]!=' ') i++;
while(s2[j]!=' ') s1[i++]=s2[j++];
s1[i]=0;
printf(”%s“,s1);
}
A side B country C sidetry D countryside
8.下列说法不正确的是( )。
A 主函数main中定义的变量在整个文件或程序中有效
B 不同函数中,可以使用相同名字的变量
C 形式参数是局部变量
D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效
9.在下列程序段中,枚举变量 c1的.值是( )。
enum color { red,yellow,blue=4,green,white}c1; c1=yellow; c1=white;
A 1 B 3 C 5 D 6
10.设有说明 int (*ptr)();其中标识符ptr是( )。
A 是一个指向整形变量的指针 B 是一个指针,它指向一个函数值是int的函数
C 是一个函数名 D定义不合法
11.定义由n个指向整形数据的指针组成的数组p,其正确的方式为( )。
A int p; B int (*p)[n]; C int *p[n]; D int (*p)( );
12.具有相同类型的指针类型变量p与数组a,不能进行的操作是( )。
A p=a; B *p=a[0]; C p=&a[0]; D p=&a;
二 判断对错,对的划“√”,错的划“×”(20分,每小题2分)
1.参加位运算的数据可以是任何类型的数据。( )
2.若有定义和语句:int a;char c;float f;scanf(”%d,%c,%f“,&a,&c,&f);若通过键盘输入:10,A,12.5,则a=10,c=‘A’,f=12.5。( )
3.C语言把文件看作是一个字符(字节)的序列。( )
4.若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的。( )
5.在Turbo C中,下面的定义和语句是合法的:file *fp;fp=fopen(”a.txt“,”r“);( )
6.若有定义:char s[ ]=”china“;则Turbo C系统为数组s开辟6个字节的内存单元。( )
7.若有定义和语句:int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21。( )
8.若有定义和语句:struct student { int num; char name[10]; float score;} s[5]={{1,”lili“,98.5},{9,”xiaohua“,66}},*p=s;printf(”%d“,*p++);输出结果是1。( )
9.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。( )
10.在Turbo C中,此定义和语句是合法的:enum aa{ a=5,b,c}bb;bb=(enum aa)5;( )
三 写出下列程序的运行结果(36分,每小题6分)
1.main( )
{ int i=29,j=6,k=2,s;
s=i+i/j%k-9;
printf(“s=%d”,s);
}
2.main( )
{ int x=31,y=2,s=0;
do
{ s-=x*y;
x+=2;
y-=3;} while( x%3==0);
printf(“x=%d y=%d s=%d”,x,y,s);
}
3.main( )
{ int a[6]={10,20,30,40,50,60},i;
invert(a,0,5);
for(i=0;i<6;i++) printf(“%d,”,a[i]);
printf(“”);
}
invert(int s[ ],int i,int j)
{ int t;
if(i
{ invert(s,i+1j-1);
t=s[i];s[i]=s[j];s[j]=t;
}
}
4.#include
main()
{ char str[ ]=“The C program”,c;
int i;
for(i=2;(c=str[i])!=‘ ’;i++)
{ switch(c)
{ case ‘g’: ++i; break;
case ‘o’: continue;
default: printf(“%c”,c); continue;
}
printf(“*”);
}
printf(“”);
}
5.struct w
{ char low;
char high;
};
union u
{ struct w byte;
short word;
}uw;
main( )
{ int result;
uw.word=0x1234;
printf(“word value:%04x”,uw.word);
printf(“high byte:%02x”,uw.byte.high);
printf(“low byte:%02x”,uw.byte.low);
uw.byte.low=0x74;
printf(“word value:%04x”,uw.word);
result=uw.word+0x2a34;
printf(“the result:%04x”,result);
}
6.main()
{ char *s2=“I love China!”,**s1=&s2;
char *s3,c,*s4=“w”;
s3=&c;
*s3=‘H’;
s2=s2+2;
printf(“%s %c %s %c”,s2,*s3,s4,**s1);
}
四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分)
1. 百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹?
main( )
{ int hb,hm,hl,n=0;
for(hb=0;hb<=100;hb+= (1) )
for(hm=0;hm<=100-hb;hm+= (2) )
{ hl=100-hb- (3) ;
if(hb/3+hm/2+2* (3) ==100)
{ n++;
printf(”hb=%d,hm=%d,hl=%d“,hb/3,hm/2,2*hl);
}
}
printf(”n=%d“,n);
}
2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。
#define N 10
char str[N];
main()
{ int i,flag;
for(flag=1;flag==1;)
{ scanf(”%s“,str);
flag=0;
printf(”“);
}
sort(___(4)___);
for(i=0;i
printf(”%c“,str[i]);
printf(”“);
}
sort(char str[N])
{ int i,j;
char t;
for(j=1;j
for(i=0;(i