C数据结构笔试题(通用14篇)
篇1:C数据结构笔试题
树是结点的集合,它的根结点数目是
A) 有且只有1
B) 1或多于1
C) 0或1
D) 至少2
程序设计语言的基本成分是数据成分、运算成分、控制成分和
A) 对象成分
B) 变量成分
C) 语句成分
D) 传输成分
下列不属于软件工程的3个要素的是
A) 工具
B) 过程
C) 方法
D) 环境
正确答案: D
数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及
A) 数据的存储结构
B) 计算方法
C) 数据映象
D) 逻辑存储
正确答案: A
在计算机中,算法是指
A) 加工方法
B) 解题方案的准确而完整的描述
C) 排序方法
D) 查询方法
正确答案: B
开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作
A) 软件投机
B) 软件危机
C) 软件工程
D) 软件产生
正确答案: B
下面不属于软件设计原则的是
A) 抽象
B) 模块化
C) 自底向上
D) 信息隐蔽
正确答案: C
开发大型软件时,产生困难的根本原因是
A) 大系统的复杂性
B) 人员知识不足
C) 客观世界千变万化
D) 时间紧、任务重
正确答案: A
单个用户使用的数据视图的描述称为
A) 外模式 B) 概念模式
C) 内模式 D) 存储模式
正确答案: A
SQL语言又称为
A) 结构化定义语言
B) 结构化控制语言
C) 结构化查询语言
D) 结构化操纵语言
正确答案: C
将E-R图转换到关系模式时,实体与联系都可以表示成
A) 属性
B) 关系
C) 键
D) 域
正确答案: B
下列SQL语句中,用于修改表结构的是
A) ALTER
B) CREATE
C) UPDATE
D) INSERT
正确答案: A
数据库、数据库系统和数据库管理系统之间的关系是
A) 数据库包括数据库系统和数据库管理系统
B) 数据库系统包括数据库和数据库管理系统
C) 数据库管理系统包括数据库和数据库系统
D) 3者没有明显的包含关系
正确答案: B
篇2:C数据结构笔试题
int k,a,b;
unsigned long w=5;
double x=1.42
则以下不符合C语言语法的表达式是( A )。
A)x%(-3)
B)w+=-2
C)k=(a=2,b=3,a+b)
D)a+=a-=(b=4)*(a=3)
若t为double类型,表达式t=1,t+5,t++的值是( D )。
A)1 B)6.0 C)2.0 D)1.0
设n=10,i=4,则赋值运算 n%=i+1执行后,n的值是( A ).
A) 0
B) 3
C) 2
D) 1
设Int n=3;则有表达式++n,n的结果是( C )。
篇3:C语言与数据结构课程整合的研究
从学科体系上说, 《C语言程序设计》着重讲授C语言的语法和程序设计方法, 《数据结构》主要讲授线性和非线性结构的逻辑结构、存储结构及相关算法, 它们之间是相对独立的, 因此, 传统的教学模式通常是将两门课程分开在两个学期, 大一第一学期开设C语言, 第二学期开设数据结构, 这种以学科知识体系为本位的教学模式违背了高职教育“理论知识够用, 注重应用能力培养”为目标的原则, 已致于学生普遍认为C语言难学, 数据结构更难懂。首先, 解决问题的完整过程被拆分。用计算机解决一个实际问题需要两个过程:解决问题的算法和用计算机实现算法。数据结构描述了解决一个问题的算法思路, C语言可以将算法在计算机上实现, 这两个过程原本是一个统一的整体, 却分开在两个学期, 使学生将完整的过程分开学习, 不符合学习的规律。其次, C语言学时少, 内容不完整。在学习C语言时, 教师一般都会从基本概念、数据类型、顺序结构、条件选择、数组、循环、指针, 最后到文件的顺序讲授整门课程。由于学时的限制, 一般到循环后, 整个教学过程也即将结束, 同时, 教师在讲授时注重知识点的讲解, 而不是用C语言解决实际问题, 学生学完后只是掌握了编程设计的基本概念, 并没有形成一定的编程思想。最后, C语言与数据结构教学内容脱节。在C语言的学习中, 由于学时有限, 指针和结构体学习不到, 而这部分内容恰恰是数据结构中的常用知识, 因此很多学生在学习过程中就会放弃, 从而导致整个教学过程的失败。
2、课程整合的可行性
从完整地解决一个实际问题的角度看, 数据结构课程注重培养学生的逻辑思维能力和分析解决问题的能力, 提供解决实际问题的算法思想, C语言作为一种语言工具, 可以将算法用计算机实现, 这两个过程对于应用计算机解决一个实际问题来说是缺一不可的, 也是密不可分的。从课程内部的知识结构看, C语言中体现了数据结构的思想, 数据结构中应用了C语言的知识。
3、课程整合的思路
3.1 整合后的课程目标。
根据以上对两门课程传统教学的分析和课程间的内在关联, 本课程改革的目标是:将C语言与数据结构的知识内容有机整合, 设计一些生活中常用的案例和项目覆盖教学知识点, 在解决问题的同时学习知识, 注重培养学生应用数据结构知识分析解决实际问题的能力和以C语言为工具应用计算机解决问题的能力。
3.2 课程整合的原则。
在课程整合时本着“兴趣导向, 应用为本, 理论够用”的原则, 抛弃按学科体系组织教学内容的传统模式, 代之以“应用能力培养”为目标组织教学内容的新模式, 案例和项目的选择既能激发学生的学习兴趣, 又具有实用性, 同时减少课程中难度较大, 应用较弱的理论教学内容, 在此基础上对课程内容按照学以致用的原则重新组合, 形成具有高职特点的全新的教学知识体系。
3.3 课程内容整合。
基于上述对课程改革的想法和思路, 列出了两门课程的传统的教学内容 (如表1) , 将表1中相同或相通的知识点有机有序地结合, 以完整的案例和应用项目为依托将所有零散的知识难易适当、循序渐进、合理的分配、贯穿在其中。让学生在相同时间里掌握更多的知识, 提高对编程语言和数据结构课程的理解。
通过表1可以看出:两门课程的知识点都是零散的, 也有重复的和相通的。整合时要化零为整, 去除重复, 合理贯通。
3.4 课程整合后的教学方法与教学手段。
高职院校的学生普遍理论底子薄, 缺乏自信心, 动手能力较强, 针对这一特点, 在教学方法上, 不能是“填鸭式”地以教为主, 而应采取“上机实践, 分组讨论, 学生讲解, 教师辅导”等多种教学方法;在教学手段上, 也不能是单一的板书或多媒体, 而应运用“仿真环境, FLASH动画, 音频视频, 教具模具”等多种教学手段。这样, 才能激发学生的学习兴趣, 达到良好地教学效果。
4、结束语
整合后的课程从项目开发的角度突出了“整体框架学习-分步分项训练-模拟项目开发”的思想, 遵循了“由易到难, 由浅入深”的认知过程, 体现了“理实结合, 应用为主, 理论够用”的高职教育理念, 突破了传统的以学科知识体系为本位的教学模式, 是一次创新性的教学改革。
摘要:《C语言程序设计》与《数据结构》课程是高职院校计算机类专业开设的两门非常重要的专业课程, 学院往往在教学上投入很多, 却收效甚微。学生普遍反映C语言难学, 数据结构更难懂。针对此情况, 本文分析了传统教学模式存在的弊端, 从课程间的内在联系揭示了课程整合的可行性, 确定了课程整合的目标和原则, 提出了课程整合的想法和思路。
关键词:C语言,数据结构,课程整合
参考文献
[1]李筠.数据结构[M].清华大学出版社
[2]李震平.C语言程序设计项目教程.北京理工大学出版社
篇4:C数据结构笔试题
[关键词]纸笔测验 化学实验 考查目标 试题类型
[中图分类号]G633.8 [文献标识码]A [文章编号]1674-6058(2016)08-0072
一、问题的提出
化学是一门以实验为基础的自然科学,化学规律的发现和理论的建立是以严格的化学实验为基础,并接受实验的检验。为了提高学生的化学实验素养与实验能力,促进学校实验室建设,全面落实课程改革目标,很多地区都在探索将化学实验技能的考查列人初中毕业生学业水平考查范围,并将考查结果列入综合素质评价范畴,作为学生初中毕业和高中阶段学校录取的依据之一。然而化学实验技能考查存在费时费力、测试成本高、信度与效度证据不足、评价标准难以统一等问题,因此对学生在化学实验知识的掌握和理解方面的考查仍以“纸笔测验”为主。如此又带来了另一方面的问题:一些学校较少开展化学实验教学活动,常以“黑板实验”“投影实验”或“视频实验”来替代演示实验和学生实验,学生则依靠背诵实验来应付“纸笔测试”型实验考查。化学实验的考查陷入了一种较为尴尬的境地。如何使“纸笔测验”能真实、有效地考查、评价学生的实验能力,并引导中学化学教学重视学生实验,促进学生积极主动地發展,是摆在化学教学工作者面前的一个重要课题。
二、化学实验“纸笔测验”的考查目标
化学实验考查目标具有层次性,体现由易到难、由简单到复杂的顺序。在化学实验过程中,学生既有内隐的心理活动又有外显的行为表现,内隐的心理活动可以通过外显的行为表现出来。初中化学实验考查目标的制定以外显行为作为分类的基点。“纸笔测试”型中考化学实验考查目标一般可分为观察与识记、操作与运用、分析与表达、设计与评价四个层次,它们之间相互联系、相辅相成,构成了一个完整的目标体系。
(一)观察与识记目标
观察是化学实验的前提,观察能力是实验能力的一个重要组成部分。由于“纸笔测验”不能让学生对实验进行观察,因此不易直接考查学生的观察能力。但化学知识的获得和积累过程密切相关,只有观察能力较强的学生,才能形成准确而牢固的记忆。因此,可以通过对记忆的测试,间接考查学生的实验观察能力,这也是目前“纸笔测验”对实验观察能力考查的一个主要特点。此外,由于观察是获取知识的最基本手段,是思维过程的基础之一,所以各类实验考查题目中观察能力的考查总是与对知识及其他能力的考查相结合的。
[例1]下列实验方法无法达到实验目的是( )。
A.用肥皂水鉴别硬水和软水
B.用燃着的木条鉴别氮气与二氧化碳
C.用熟石灰中和废液中的盐酸
D.用紫色石蕊试液鉴别稀硫酸和蒸馏水
(二)操作与运用目标
主要是指掌握化学实验仪器的构造、原理,正确选择、使用化学仪器、药品、技术条件,正确运用实验操作完成实验。主要包括三个方面:①正确选择、使用仪器、药品、技术条件,识别、绘制装置图;②辨识实验操作中的错误并予以改正;③掌握常用仪器装置、药品、实验技术的主要用途,解决一些实际问题。
[例2]下列实验操作正确的是( )。
A.滴加液体 B.测溶液pH C.氧气验满 D.熄灭酒精灯
(三)分析与表述目标
主要是指综合运用化学知识与基本操作,通过分析、推理、判断观察到的实验现象和记录的数据,对实验操作过程进行解释和说明。主要包括以下三个方面:①运用实验原理、物质性质对实验现象及结果进行分析、判断,发现规律并得出正确结论;②正确分析、处理实验数据及误差;③正确分析、表述实验操作过程及注意事项。
[例3]有同学利用如右图装置,通过排水量来测定生成氧气的体积,反应结束后,发现量筒内收集到的水的体积总是比理论值偏大(水的体积测量正确),其主要原因可能是____。
(四)设计与评价目标
化学实验设计能力是指学生根据实验课题所提出的实验目的,运用学过的化学知识和实验技能与技巧,选择恰当的实验方案来解决问题的过程。设计与评价目标主要包括以下三个方面:①设计仪器连接方案;②拟定实验操作方案(安排操作顺序、自行设计方案);③评价实验方案。形式上有仪器装置连接方案设计,操作顺序设计以及新情境下操作方案的设计;内容上包括确定某混合气体组分的实验设计,验证某个化学原理的实验设计,测定某物质纯度的实验设计,还有验证某物质是否存在的实验设计等,有定性设计也有定量设计。对评价的考查则突出考生对实验方案的全面理解和判断,其中大多要求考生对方案的简便性、可行性、安全性及绿色化方面作出评价。
[例4]某化学兴趣小组的同学选定稀硫酸和氢氧化钡溶液做中和反应实验。在烧杯中加入一定量的氢氧化钡溶液后滴入几滴酚酞试液,再向烧杯中加入一定量的稀硫酸。用玻璃棒充分搅拌后过滤,得白色沉淀和无色液体。
[提出问题]无色液体是什么物质?(不考虑指示剂)
[猜想]小明:无色液体是水;小红:无色液体是Ba(OH)2溶液;小丽:无色液体可能是____溶液。
[实验探究](1)如果你是小组成员之一,你认为小明猜想的理由是____。
(2)小红的猜想是否正确?理由是____。
(3)填写小丽的猜想,并针对她的猜想,请你设计实验验证是否正确。
不论是实验设计还是对实验方案的评价,均要求在全面掌握基础知识、基本技能的前提下综合运用。因此,它们在化学实验考查目标中属最高层次,是化学实验能力中应着重培养的。
三、化学实验“纸笔测验”的试题类型
新课程理念下化学实验考查将重点放在评价学生解决实际问题的能力上,“纸笔测验”试题的设计要有助于考查学生理解和应用知识的能力。通过具有真实背景的、综合性和开放性问题的“纸笔测验”题,既了解学生掌握有关知识、技能和方法的程度,又体现了对学生解决实际问题能力的有效评价,是编制基于真实生产、生活和社会背景,具有一定综合(学科内和学科间)性和开放性的试题的基本思想。
(一)考核科学过程和科学方法类试题
使学生掌握科学过程和科学方法,形成科学探究能力,是化学新课程的重要目标。在“纸笔测验”中,设计综合探究试题,加强对科学探究能力的考查,发挥科学探究的功能,可以使学生在解题过程中得到全面的发展。
[例5]学校化学兴趣小组知道二氧化锰能作过氧化氢分解的催化剂后,想再探究其他一些物质如氧化铝是否也可作过氧化氢的催化剂。请你一起参与他们的探究过程,并填写下列空白。
(1)问题:Al2O3能不能作过氧化氢分解的催化剂呢?
(2)猜想:Al2O3能作过氧化氢分解的催化剂。
(3)实验验证:
(4)结论:Al2O3能加快过氧化氢的分解速率,故Al2O3能作过氧化氢分解的催化剂。
(5)讨论:经过讨论,有的同学认为只有上述两个证据,不能证明Al2O3能作过氧化氢分解的催化剂,还要补充一个探究实验。
实验三
实验目的:探究
实验步骤:①准确称量少量Al2O3的质量;②完成实验二;③待反应结束,将实验二试管里的物质进行过滤,洗涤,____,称量;④对比反应前后Al2O3的质量。
讨论:如果Al2O3在反应前后质量不变,说明Al2O3可以作过氧化氢的催化剂。
(6)但小华同学认为,要证明猜想,上述三个实验还不够,还需要再增加一个探究实验,探究____。
探究设计题型编制的目的是考查学生进行实际探究的能力。通常此类题型注重过程而不过分对结果进行探讨,有的涉及探究课题所运用的主要科学研究方法、探究的各个要素及其操作方法,如实验器材、实验步骤和实验数据记录表格等。选择有探究价值的科学问题设置情境、考查学生提出猜想的能力、体验真正意义上的科学探究,是设计此类题型的关键。
(二)与生产、生活实际相联系类试题
化学是一门以实验为基础的自然科学,它源于生活、生产,更服务于生活、生产和社会。因此,要重视试题的实践性。一是让学生解决的问题来自于实践之中,具有实践意义;二是让学生在实践中去解决问题,即“解决实践中的问题和在实践中解决问题”。
[例6]A、B、C、D四种化合物,在日常家庭生活中都得到广泛应用。其中A、B通常情况下为液体,C、D为固体。A是生命之源,人们每天都必须饮用它;B是一种调味品的主要成分,用该调味品可除去水壶中的水垢;C常用作干果的干燥剂;把D加入经发酵后的面团中,可使蒸出的馒头松软可口。回答下列问题:
(1)这种调味品是____,C的俗称是____。
(2)把适量的A滴在一小块C上,产生大量的A蒸气,其原因是____。
(3)写出A与C反应的产物的溶液跟D的溶液反应的化学方程式:____,该反应类型是____。
“从生活走向化学,从化学走向社会”的新课程理念,在目前的实验“纸笔测验”题中得到较好的体现。此类试题常以简答题、信息题等题型出现,以现实生活中的化学事件(事实)为背景提出问题,这些背景来源于生活,是学生比较熟悉的,但在课本中未涉及(或涉及不多),对学生的问题分析能力、语言表达能力有较高的要求。
(三)与其他学科整合类试题
跨学科试题,是命题者以一定的线索把一些相关的知识串联成具有一定问题情境的知识网络题,它是以学科交叉与渗透为主的学科间综合题。
[例7]在一只盛有稀硫酸的烧杯中,漂浮着一塑料小方块,往烧杯中加人少量某种固体物质后,小方块浸没在水中的体积(V物)变大(假设在此过程中溶液的体积变化忽略不计),则加入的固体可能是( )。
A.Fe B.Cu C.Ba(OH)2 D.Ba(NO3)2
这是一道跨学科综合题,物理中“浮力”的知识是解题的关键,同时也涉及物质间的化学变化知识。这就要求学生开放思维,打破学科之间的思维障碍,综合运用多学科知识解决问题。
(1)加入Fe,Fe+H2SO4=Fe2O4+H2↑,溶液质量增加,因溶液体积不变,故溶液密度变大。由G物=F浮=ρ液gV物物可知V物变小。
(2)加入Cu,Cu+H2SO4不反应,溶液质量、体积、密度都不变,则V物不变。
(3)加人Ba(OH)2,Ba(OH)2+H2SO4=BaSO4↓+2H2O,溶液质量减小,因溶液体积不变,故溶液密度减小。由G物=F浮=ρ液gV物可知V物变大。
(4)加入Ba(NO3)2,Ba(NO3)2+H2SO4=BaSO4↓+2HN03,溶液质量增加,因溶液体积不变,故溶液密度增大,由G物=F浮=ρ液gV物可知V物减小。答案是C。
这类试题从本学科知识及其系统出发,或从本学科与其他学科相关联的知识出发,在它们的交叉处,要求学生从不同的角度进行观察、分析,考查学生综合应用知识的能力。
(四)体现开放性思维类试题
开放性试题解题方法和策略的不确定性,解题思维的发散性,使得不同水平层次的学生都可以从各自角度提出合理的解题方案。良好的开放性试题,应以学生为中心,问题的提出应能够激发学生的想象力和创造力,有利于全面评价和选拔学生,也有利于提高学生灵活运用化学知识解决问题的能力。
[例8]目前社会上有一些不法分子,以铜锌合金(金黄色;俗称黄铜)假冒黄金进行诈骗活动。现请你设计实验证明某黄色金属块是真金还是黄铜,要求写出实验方法、现象和结论。
开放性试题的特点是答案不唯一。所以要学会从多角度、全方位分析问题,解决问题。在平时学习过程中,要学会综合运用知识,善于灵活应变,探寻一因多果或一果多因,一題多解或多题一解,一装置多用或多装置一用。解答此类开放性试题时要明确实验目的,善于围绕题设条件进行思维发散。本题所提供的研究课题是验证某黄色金属块是真金还是黄铜,要求学生根据日常生活知识和课本所学知识设计实验来求证。可以设计多种方案,如:用测密度、试硬度等物理方法,也可以在火焰上灼烧,用稀硫酸、硫酸铜溶液来检验等化学方法,解题时要按照实验一现象一结论的程序完成。
开放性试题在设计时应注意:①命题的内容与研究对象必须是学生较熟悉的,所涉及的知识不能过深,最好是所学知识能解决的;②开放要有度,既不能让学生漫无目标,也不能随便回答都可以;既要有利于学生回答,培养学生的发散思维和创新能力,又要有利于教师赋分与评判。
篇5:c招聘笔试题
这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:
这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:
int *ptr;
ptr = (int *)0x67a9;
*ptr = 0xaa55;
A more obscure approach is:
一个较晦涩的方法是:
*(int * const)(0x67a9) = 0xaa55;
即使你的品味更接近第二种方案,但我建议你在面试时使用第一种方案。
2. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。
__interrupt double compute_area (double radius)
{
double area = PI * radius * radius;
printf(”nArea = %f“, area);
return area;
}
这个函数有太多的错误了,以至让人不知从何说起了:
ISR 不能返回一个值。如果你不懂这个,那么你不会被雇用的。
ISR 不能传递参数。如果你没有看到这一点,你被雇用的机会等同第一项。
在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。
与第三点一脉相承,printf经常有重入和性能上的问题。如果你丢掉了第三和第四点,我不会太为难你的。不用说,如果你能得到后两点,那么你的被雇用前景越来越光明了。
3 . 下面的代码输出是什么,为什么?
void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts(”> 6“ : puts(”<= 6";
}
篇6:C编程笔试题
1、头文件中的 ifndef/define/endif 干什么用?
2、#include 和 #include “filename.h” 有什么区别?
3、const 有什么用途?(请至少说明两种)
4、在C 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
5、请简述以下两个for循环的优缺点
// 第一个
for (i=0; i
{
if (condition)
DoSomething;
else
DoOtherthing;
}
// 第二个
if (condition)
{
for (i=0; i
DoSomething;
}
else
{
for (i=0; i
DoOtherthing;
}
优点:
缺点:
优点:
篇7:c经典笔试题
#include
#include
void BubbleSort(int arr, int n)
{
int i,j;
int exchange = 1;//交换标志,提高算法效率;
int temp;
for(i=0;i
{
exchange=0;//本趟排序开始前,交换标志应为假
for(j=0;j
{
if(arr[j+1] > arr[j])
{
temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
exchange=1; //发生了交换,故将交换标志置为真
}
}
if(!exchange) //本趟排序未发生交换,提前终止算法
return;
}
}
int main(int argc,char* argv)
{
int arr[5]={1,4,2,6,5};
int i;
BubbleSort(arr, 5);
printf(“after sort,arr is :n”);
for(i=0;i<5;i++)
{
printf(“%3d”,arr[i]);
}
return 1;
篇8:C二级笔试题
A.纯虚函数是没有给出实现版本(即无函数体定义)的虚函数
B.纯虚函数的声明总是以″=0″结束
C.派生类必须实现基类的纯虚函数
D.含有纯虚函数的类不可能是派生类
正确答案:B
答案解析:纯虚函数是在声明虚函数时被″初始化″为O的虚函数。纯虚函数没有函数体,纯虚函数的作用是在基类中为其派生类保留一个函数名称。
2). 下列描述中错误的是( )
A.派生类可以作为基类派生其他的子类
B.派生类继承基类的所有数据成员
C.派生类可以有多个基类
D.派生类不能继承一些函数成员
正确答案:B
3). 已知int m= 10;在下列定义引用的语句中,正确的是( )。
A.int&x= m;
B.int y= &m;
C.int &.z;
D.int &t=&m;
正确答案:A
答案解析:C++的引用是一种赋值、发送和返回复杂数据结构的方法,建立引用的格式为:类型一引用名一已定义的变量名。所以只有A选项是符合要求的。
4). 数据处理的最小单位是( )。
A.数据
B.数据元素
C.数据项
D.数据结构
正确答案:C
答案解析:数据处理的最小单位是数据项。
5). 下列选项中,不属于模块间耦合的是
A.数据耦合
B.同构耦合
C.异构耦合
D.公用耦合
正确答案:C
篇9:C笔试题算法
现在我们终于可以看到一点希望:选择法,这种方法提高了一点性能(某些情况下)
这种方法类似我们人为的排序习惯:从数据中选择最小的同第一个值交换,在从省下的部分中选择最小的与第二个交换,这样往复下去。
#include
void SelectSort(int* pData,int Count)
{
int iTemp;
int iPos;
for(int i=0;i
{
iTemp = pData[i];
iPos = i;
for(int j=i+1;j
{
if(pData[j]
{
iTemp = pData[j];
iPos = j;
}
}
pData[iPos] = pData[i];
pData[i] = iTemp;
}
}
void main
{
int data = {10,9,8,7,6,5,4};
SelectSort(data,7);
for (int i=0;i<7;i++)
cout<
}
倒序(最糟情况)
第一轮:10,9,8,7->(iTemp=9)10,9,8,7->(iTemp=8)10,9,8,7->(iTemp=7)7,9,8,10(交换1次) 第二轮:7,9,8,10->7,9,8,10(iTemp=8)->(iTemp=8)7,8,9,10(交换1次)
第一轮:7,8,9,10->(iTemp=9)7,8,9,10(交换0次)
循环次数:6次
交换次数:2次
其他:
第一轮:8,10,7,9->(iTemp=8)8,10,7,9->(iTemp=7)8,10,7,9->(iTemp=7)7,10,8,9(交换1次) 第二轮:7,10,8,9->(iTemp=8)7,10,8,9->(iTemp=8)7,8,10,9(交换1次)
第一轮:7,8,10,9->(iTemp=9)7,8,9,10(交换1次)
循环次数:6次
交换次数:3次
遗憾的是算法需要的循环次数依然是1/2*(n-1)*n。所以算法复杂度为O(n*n)。
我们来看他的交换。由于每次外层循环只产生一次交换(只有一个最小值)。所以f(n)<=n 所以我们有f(n)=O(n)。
篇10:C语言选择笔试题
则实体教师和课程间的联系是
A)1:1联系 B)1:m联系
篇11:C笔试题及答案
#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
篇12:C和C经典笔试题及答案
答案:必须使用静态成员变量在一个类的所有实例间共享数据.如果想限制对静态成员变量的访问,则必须把他们声明成保护型或私有型.不允许使用静态成员变量去存放一个对象的数据。静态成员数据是在这个类的所有对象间共享的。
静态数据成员:静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。节省内存;提高时间效率。使用静态数据成员可以因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,
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
篇13:C程序员笔试题
a、全局函数 b、构造函数
c、静态全局函数 d、析构函数
2、对静态成员不正确的描述是——
a、静态成员不属于对象,是类的共享成员
b、要在类外定义初始化
c、调用时,要通过类或对象激活,所以静态成员函数拥有this指针
d、非静态成员函数也可以操作静态数据成员
3、在创建派生对象时,构造函数的执行对象是——
a、对象成员构造函数、基类构造函数、派生类本身的构造函数
b、派生类本身的构造函数、基类构造函数、对象成员构造函数
c、基类构造函数、派生类本身的构造函数、对象成员构造函数
d、基类构造函数、对象成员构造函数、派生类本身的构造函数
4、假设V为抽象类,下列声明哪个正确
a、V fun(int) b、 V *p
c、int fun(V) d、V Obj
5、假设已定义变量float data;
以二进制方式把data值写入输出文件流对象outfile中去,正确的是:
a、outfile.write((float *)&data, sizeof(float));
b、outfile.write((float *)&data, data);
c、outfile.write((char *)&data, sizeof(float));
d、outfile.write((char *)&data, data);
6、如下类定义:
class Foo {
public:
Foo(int v):value(v) //a
~Foo //b
private:
Foo //c
int value=0; //d
};
有错误的是____
7、下列关于栈的叙述正确的是
a、在栈中只能插入数据 b、只能删除数据
c、栈是先进先出的线性表 d、是先进后出的线性表
8、一个队列入列顺序是1,2,3,4,则输出顺序是
a、4321 b、1234 c、1432 d、3241
19、若执行语句: Point a(2), b[3], *c[4];
则Point类的构造函数被调用几次
篇14:GE:C语言笔试题
5.关键字volatile的含义,在程序设计过程中的应用?
6.const int *p1;
int const *p2;
int *const p3;
7.int a = -1;
unsigned int b = 2;
那么a+b>a?为什么?a+b>b?为什么?
★ C语言游戏开发笔试题
★ C开发工程师笔试题
★ 笔试题
★ C语言学习心得
★ net笔试题
★ 卡夫笔试题
★ 笔试题文档窗口
★ DTT笔试题
★ 埃森哲相关笔试题
【C数据结构笔试题】相关文章:
数据库经典笔试题总结02-21
2016年阿里巴巴数据产品经理笔试题04-24
数据结构c课程设计04-24
C语言与数据结构课程的教学衔接11-13
手机结构设计笔试题05-09
机械结构工程师笔试题05-28
数据结构试题及答案05-23
数据结构试题java04-16
学院数据结构考试题05-06
大数据环境下的C语言课程教学模式研究09-10