这个题怎么做的,c语言题库

今天看啥 热点:
你的问题太多,给你一个答案吧。如果加分可以在做一个。34.插入一个数到一个排序好的数组中,并按原来的排序存放。#include&stdio.h&void insert(int a[],int n,int x)/* 将x插入到具有n个元素的有序数组中 */{
while(i&=0 && x&a[i])
a[i]=a[i-1];
a[i]=x;}void main(){
int i,a[20]={90,80,70,60,50,40,30,20};
insert(a,8,45);
for(i=0;i&9;i++) printf("%3d",a[i]);
printf("\n");}
就是VBVB6.0企业版或者Visual studio 学VB有什么用? VB是一门编程语言,所以能用VB做的很多很多,基本上除了底层开发(系统软件),VB都能做,而且在数据库应用方面VB也有他独到的一面。 3.如何学好VB(请详细说明) 这不是一句两句可以说清楚的。给你一个学习的过程: 3.1.入门,这段时间你应该学会VB的基本语法,基本语句和基本控件等。能够写一些简单的计算程序就算可以乐。比如写一个解1元2次方程的程序,写一个求解两数的最新公约数的程序等等。 3.2.开始做VB界面的一些东西,了解控件,窗体的使用,事件,方法、过程和函数等。 3.3 开始用类设计VB程序。封装一个VB类。学会VB中类的使用方法。 3.4 学习使用API增强程序的功能。 3.5 这是转入学习C语言,不一定要很强,能懂一些语法就行,当然能够深入的话,就可以转C++乐。 3.6 有乐C的基础,就可以去学习数据结构乐。数据结构很重要,一定要学好。 3.7 开始在VB里面尝试实现数据结构,比如做一个链表,vb没有指针,所以不能向c那样做链表,但我想这时候你应该知道怎么做乐。 3.8 开始尝试做游戏,做不同的程序,做自己想做的东西。 3.9 深入VB。 VB到了这个阶段,深入是很困难的了。需要API的帮助。做一些窗口回调,挂钩等程序。 4.0 你已经有相当的VB经验了,这时候要确定一个方向了,比如游戏编程directx,比如大数据量的数学计算,人工智能等等。。。
去下载个VB6.0企业版,然后看书 想编撒自己有实力就能写出啥东西
直接安装Visual studio 6之visual basic 6.0即可。
Visual studio
就可以了。
能下VB6.0企业版最好,下不了就下个 VB6.0精简版 也不错哦
Microsoft Visual Studio
        这套题就是前两天在校内上看到的,原作者是上海交通大学的李垚同学,原文在这里。于是考据癖大发作,就耗了7个小时写了下面这些东西。答案只是我自己写的,也并不是官方的正确答案,括号里附上了一些说明,主要是之所以选这个答案的理由,因为自己不是学纯理工的,所以对编程这方面比较陌生,基本上以“考”为主,想当然的成分会少一些。    最后的主观题也都是纯介绍论述性的文字,就当长见识啦。很多没注明来源的都是来自维基百科和百度百科,另外过程中也求助了一些学程序的朋友,总之一并谢过。    一,选择题(皆为单选):    1、以下谁是二进制思想的最早提出者?    a.伏羲;b.姬昌;c.莱布尼茨;d.柏拉图。    答案:a、伏羲。    详解: 伏羲创造了八卦阵,亦称先天八卦。八卦阵在国内被普遍称为最早的二进制记录制:阳爻(—)为1,阴爻(--)为0,八卦刚好记录了三位二进制数的8种组合。不过也有人说八卦的基础并不是二进制,在数学上属于八阶矩阵云云。姬昌创造“文王八卦”,亦称后天八卦。莱布尼茨是二进制的开拓者,柏拉图跟二进制没啥关系,勉强扯得上联系的是柏拉图主义,被分类而形而上学的二元论。    根据英文维基记述,大约在公元前5至公元2世纪,印度诗人Pingala著述了数学描述音韵方法,并且对二进制进行了描述。之后是邵雍在《皇极经世》中记载了八卦图样(最早的八卦是无图无真相的——注),才有了先天八卦图的流传。关于莱布尼兹在1679年创造了现代二进制系统的时候,维基上是这样说的:作为一个中国迷,莱布尼茨是在听说邵雍的八卦阵后,发现这个图形正好奇妙地对应了二进制的0到111111,并且称赞说这显示了中国人在此类数学哲学中的主要成就。    【实际上认真说这题应该无正确答案。】    2、以下哪个概念和公孙龙的《指物论》中的“指”字含义相近?    a.变量;b.数组;c.对象;d.指针。    答案: a.变量。    详解: 《指物论》是公孙龙在《汉书·艺文志》中残存的《公孙龙子》6篇中的第3篇,记述的是关于客观存在的实物和我们对它们认识的关系。在“指物论”中,“指”是名詞,指广义的认识(即名词性的符号——笔者注)。而通篇文章中的指有名词意有动词意,不过《指物论》指称理论的集中体现是所有的对象都是通过符号来称呼的,符号代表事物。而与此同时,指针是一个用来指示一个内存地址的计算机语言的变量,即指针就是地址,可以理解为指针是变量的一个真子集。    变量与“指”的共通点就是:对某个存在(Object,对象)赋予一个可以指称它的名词(Refer)。  PS:数组就是一堆变量的集合。    3、蔺相如、司马相如、魏无忌、长孙无忌,下列哪一组对应关系与此类似?    a. PHP,Python;b. JSP,servlet;c. Java,Javascript;d. C,C++。    答案:c. Java,Javascript。    详解: 蔺相如(前329年—前259年),战国时赵国上卿;司马相如(约前179年—???),字长卿,汉族,蜀郡(今四川省成都人)。魏无忌(?-前243),魏昭王少子,安釐王的异母弟,战国时期魏国著名的军事家。;长孙无忌(约597年-659年),字辅机,河南省洛阳人。共通点的话,就是名字虽然都有相似的地方,但是却完全不是一码事,谁也不挨着谁。    PHP是在前端服务器执行使用的脚本语言,Python是程序开发使用的面向对象的程序设计语言。JSP是动态网页技术标准,servlet是服务器端的Java应用程序。Java是一种程序设计语言,Javascript是面向对象的动态类型的区分大小写的客户端脚本语言。C++最早作为C的增强版,现在则是相互比较独立的两种编程语言。    总的来说,c 选项的相似程度更高一些。    4、秦始皇吞并六国采用了以下哪种算法思想?    a.递归;b.分治;c.迭代;d.模拟。    答案:b.分治。    详解:秦始皇主要的吞并方法是:远交近攻,逐个击破,包括分化离间、连横的策略。    递归指的是一个过程:函数不断引用自身,直到引用的对象已知。分治,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题。迭代是通过从一个初始估计出发寻找一系列近似解来解决问题的过程,为实现这一过程所使用的方法统称为迭代法。迭代算法是用计算机解决问题的一种基本方法。让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。模拟是用计算机程序将原本的事务或流程,予以系统化与公式化,产生可重现预期结果。    5、雅典王子忒修斯勇闯克里特岛斩杀米诺牛的时候采用了以下哪种算法?    a.动态规划;b.穷举;c.记忆化搜索;d.Dijkstra算法。    答案:b.穷举。    详解:动态规划是一种在数学和计算机科学中使用的,用于求解包含重叠子问题的最优化问题的方法。穷举就是根据某一公式(一般是递推)列出所有可能的组合并验证是否为所需解。记忆化搜索的实质是动态规划,效率也和动态规划接近,形式是搜索,简单直观,代码也容易编写,不需要进行什么拓扑排序。Dijkstra算法解决的是有向图中任意两个顶点之间的最短路径问题。    而这段传说是忒修斯作为被进贡童男童女中的一员,前往克里特岛的迷宫深处讨伐米诺陶洛斯(半人半牛的怪物,所以人赠昵称米诺牛),在克里特岛遇到了美丽的公主阿里阿德涅,公主对他一见倾心而赠与线团以便他可以离开迷宫。    关于忒修斯是如何抵达迷宫中央斩杀米诺牛的,维基中是这样记录的:在忒修斯进入迷宫之后,他解开了线团的一端并系在门把上,然后将为了躲避门卫而藏起来的剑从衣服里拿出来挥舞。忒修斯跟着阿里阿德涅公主给出的代达罗斯的指示,一直向前走,绝不转弯。忒修斯来到迷宫中央并接近沉睡中的米诺陶洛斯。怪兽苏醒并开始了一场恶斗。忒修斯用他的力量制服了怪兽,并用利剑刺穿对方的喉咙。    根据所有选项和传说描述似乎没有一个是相符的,但是在逻辑学上有一个术语叫“阿里阿德涅的线”,也就是穷举法。    6、印度电影《宝莱坞机器人之恋》中的机器人七弟采用的智能算法最有可能是以下哪一种?    a.神经网络;b.遗传算法;c.模拟退火;d.穷举算法。    答案:a.神经网络。    详解: 没看过电影的笔者悲剧了,只能在豆瓣上看了一下影评,然后下了一个字幕文件,在第876句台词的时候,开发七弟的博士说“你们了解七弟的神经模式吗”。    七弟在经过简单学习之后就有了完全可以通过图灵测试的能力,算是比较典型的学习型人工智能,神经网络作为一种运算模型,而其网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。    PS:遗传算法作为一种最优搜索算法,对于一个最优化问题,一定数量的候选解(称为个体)的抽象表示(称为染色体)的种群向更好的解进化。    7、《公孙龙子》记载:“齐王之谓尹文曰:‘寡人甚好士,以齐国无士,何也?’尹文曰:‘愿闻大王之所谓士者。’齐王无以应。”这说明了齐王:    a.昏庸无道;b.是个结巴;c.不会下定义;d.不会定义自己的需求。    答案:d.不会定义自己的需求。    详解: 齐王问尹文说:“寡人特别喜欢士,但是齐国没有士,怎么办?”尹文说:“想听听大王所谓的士是什么。”齐王不知道要怎么回答(定义了自己想要的人是“士”,但是无法定义“士”)。    8、惠施曾提出过“卵有毛”的命题,以下哪一项是导致这个错误命题的原因:    a.混淆了命名空间;b.引入了错误的包;c.衍生类未重载;d.调用了危险的指针。    答案:c.衍生类未重载。    详解: 卵有毛”这个命题如今就只剩这个名字了,出自《庄子o天下篇》。关于惠施本人的著作,则无存。“卵有毛”的大意就是,蛋能孵出鸡,鸡有毛,所以蛋有毛(这里的蛋严格定义为尚未开始分化的蛋)。    所给的四个选项是分别把毛、鸡和蛋(在蛋中的鸡)视为了不同的属性、类或包,蛋是不具有“毛”的属性(或类、子类)的,把这样的思路分别还原到四个选项中。命名空间是区别同名不同指的标识符所用,和题述无关。引入了错误的包实际上其中类并未被真正编译。衍生类未重载,是指将蛋视为鸡的子类的时候,其属性的变化并未得以体现(题述中实际是反向操作了)。    9、下面哪种面向对象的方法可以让你变得富有?    a.继承;b.封装;c.多态;d.抽象。    答案:a.继承。    详解: 继承可以继承父类的属性和行为。封装是只提供接口并隐藏内部过程的行为。多态是指因继承产生的相关不同类,但是因为我没有多人让我继承,我也没有兄弟姐妹(就算有,他们是否富有也与我无关)。抽象是一种简化复杂现实问题的途径。简单来说就是富二代了…    10,明朝时期张居正改革的一条鞭法的主要思想是:    a.面向过程;b.万物皆数;c.统一接口;d.泛型编程。    答案:c.统一接口。    详解: 一条鞭法的主要思想是“税以银征收”,取消了原本的田赋、力役和其他杂税,促进自然经济的瓦解和商品经济的发展。    面向过程是指以过程为中心的编程思想,形成模块化特点。万物皆数是毕达哥拉斯学派的数学哲学理念(特指有理数),属于世界观的一种。泛型编程是一种语言机制,能够帮助实现一个通用的标准容器库。所谓通用的标准容器库,就是要能够做到,比如用一个List类存放所有可能类型的对象这样的事;泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同。泛型即是指具有在多种数据类型上皆可操作的含意,与模板有些相似。    一条鞭法的主要思想并不是以征税过程为中心的思想,同时也不是在多种类型上的操作。    二、匹配题(分析A中的句子所体现的算法,和B中的算法一一匹配)    A:    1、江南可采莲,莲叶何田田,鱼戏莲叶间。鱼戏莲叶东,鱼戏莲叶西,鱼戏莲叶南,鱼戏莲叶北。——汉乐府《江南》    2、众里寻他千百度,蓦然回首,那人却在灯火阑珊处。——辛弃疾《青玉案》    3、从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是:从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是:从前有座山,山里有座庙,庙里有个老和尚,再给小和尚讲故事,故事内容是……    4、只劝楼台追后主,不愁弓矢下残唐。——孔尚任《桃花扇》    5、飞鸟之影,未尝动也。——《庄子》    B:    1、贪心;2、回溯;3、穷举;4、分治;5、递归;    答案:A1→穷举; A2→回溯;A3→递归; A4→贪心;A5→分治。    详解: 穷举和递归就不讲了。回溯算法是一种试探法,基本思路是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。这正符合辛弃疾《青玉案》的笔意。4是《桃花扇》续四十出《余韵》中的唱词【秣陵秋】,选句前两句说的是“中兴朝市繁华续,遗孽儿孙气焰张”,事出马士英、阮大铖出于一己的私心,迎立福王朱由崧,建立了南明弘光小朝廷。他们唆使朱由崧征歌选舞,声色犬马,荒淫佚乐,做个“无愁天子”,过着纸醉金迷的生活,是比较典型的局部最优策略,不从整体最优考虑,这就是贪心算法啦。    5是极限理念的一个体现,是说每一秒飞鸟的影子都是固定的,因此每一秒连续起来,影子仍旧是固定的,极限的时间被割裂成互不相干的个体探讨了,所以算是分治。    三、阅读理解(阅读下文,回答后面的问题)    美国的贝尔实验室设计了最初的C语言;  刻在UNIX操作系统距今已有三四十年;  你在屏幕前凝视数据的缱绻;  我却在旁轻轻敲打键盘,把你的梦想展现。  循环递归贪心动规是谁的从前,  喜欢在匈牙利算法中你我牵手的画面,  经过MSRA门前,我以大牛之名许愿。  思念像斐波那契数列般漫延,  当软工沦落在设计的文档间,算法依旧是永垂不朽的诗篇。  我给你的爱写在程序间,深藏在最长不下降子序列里面,  几万组数据流过后发现我的心依然不变。  我给你的爱写在程序间,深藏在最长不下降子序列里面,  用无尽的代码刻下了永远。  那已保存千年的誓言一切又重演,  我算了很多遍,时间复杂度还是趋于无限,  我只想要这样永远链接在你的身边。    1、题目中的MSRA是什么的缩写?    微软亚洲研究院(Microsoft Research Asia)。其他意象包括了沉船、组织、软件。    2、试赏析“思念像斐波那契数列般漫延”一句。    主观题。斐波纳契数列是指后一项为前两项之和所列成的数列,比较典型的示例是 1 1 2 3 5 8…属于比较典型的递归问题。趋向于无穷大的数列有很多,而斐波纳契数列比较特殊的一点就是数列上的相邻两个数的比例会趋近于黄金分割比,在自然界中的很多动植物的构成都满足斐波纳契数列的特点,可以说这是一个最接近自然,最优美的数列。当然将每一次的增长视为带着黄金的香气也未尝不可。同时斐波纳契数列也是编程学习中比较常用的一个范例数列,主要涉及输入、输出、循环语句的使用和对变量的理解。    3、请结合时代背景,谈谈你对“当软工沦落在设计的文档间,算法依旧是永垂不朽的诗篇”一句的理解。    【搞软件工程,文档是爹,设计是妈,只有算法才能让你有个幸福的家。】算法作为程序的核心,一个好的算法替代相对较差算法有时甚至会胜于硬件升级所带来的好处。所以说算法永远是不朽的诗篇啊,计算机最富艺术性的部分大概也就在这了。    4、“几万组数据流过后发现,我的心依然不变”一句体现了算法的什么特性?    Donald Knuth在他的著作《计算机程序设计艺术》里对算法下的定义中,算法应该具有这5项特性:输入、输出、明确性、有限性和有效性。数据流过证明有输入有输出,至于我心不变,也不知道是编译成功了没,不过暂时一切没有变化证明它至少是明确的。    5、就“喜欢在匈牙利算法中你我牵手的画面”一句,谈谈你对匈牙利算法的理解。    匈牙利算法是众多用于解决线性任务分配问题的算法之一,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的经典算法。    二分图是指若干个顶点和顶点之间所连的边,若所有顶点可以分成两个不相交的集合,并且在同一个集合内的顶点没有公用边,则称这样的图为二分图(小学时候做的连线作业那样的图就是啦,另外在学习加法原理和乘法原理的时候所画的图也是二分图),最大匹配是指这个二分图中边数最多的情况。“匈牙利算法中你我牵手的画面”则证明“你我”已经形成了一个匹配。
相关搜索:
相关阅读:
相关频道:
电脑知识最近更新2016年计算机二级C语言考试试题-计算机二级C语言真题答案-计算机二级C语言教程-考试内容-上机题库-真题-模拟试题-试题及答案-辅导笔记-233网校
233网校查分神器
您现在的位置:>>C语言
扫描二维码加入群组
微信订阅号:kszx233
扫描二维码加入群组
<span style="color:#ff09-2909-2809-2709-2609-2509-24C语言笔试题带答案(六)
C语言笔试题带答案(六)
一、选择题((1)~(10)每小题2分,(11)-(50)每小题1分,共60分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)在下列选项中,_________不是一个算法一般应该具有的基本特征。
A)确定性 ? B)可行性 ? C)无穷性 ? D)拥有足够的情报
评析:一个算法,一般应具有以下几个基本特征。①可行性②确定性③有穷性④拥有足够的情报
(2)希尔排序法属于_________类型的排序法。
A)交换类排序法 ? B)插入类排序法
C)选择类排序法 ? D)建堆排序法
评析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。所以希尔排序法属于插入类排序,但它对简单插入排序做了很大的改进。
(3)下列关于队列的叙述中正确的是_________。
A)在队列中只能插入数据 ?
B)在队列中只能删除数据
C)队列是先进先出的线性表 ? D)队列是先进后出的线性表
评析:队列是指允许在一端进行插入、而在另一端进行删除的线性表。它又称为“先进先出”或“后进后出”的线性表,体现了“先来先服务”的原则。
(4)对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为_________。
A)N+I ? B)N ? C)(N+I)/2
评析:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中所有元素进行比较,这是顺序查找最坏的情况。
(5)信息隐蔽的概念与下述_________概念直接相关。
A)软件结构定义 ? B)模块独立性
C)模块类型划分 ? D)模拟耦合度
评析:信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。衡量软件的模块独立性的度量标准是耦合性和内聚性。一个模块的内聚性越强,则该模块的模块独立性越强。而内聚性是信息隐蔽和局部化概念的自然扩长。
(6)面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是_________。
A)模拟现实世界中不同事物之间的联系
B)强调模拟现实世界中的算法而不强调概念
C)使用现实世界的概念抽象地思考问题从而自然地解决问题
D)鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考
评析:面向对象的设计方法基本原理:使用现实世界的概念抽象地思考问题从而自然地解决问题。强调模拟现实世界中的概念而不强调算法,鼓励开发者在软件开发的绝大部分中都用应用领域的概念去思考。
(7)在结构化方法中,软件功能分解属于软件开发中的_________阶段。
A)详细设计? B)需求分析 ? C)总体设计 ? D)编程调试
评析:总体设计过程通常由两个主要阶段组成:系统设计,确定系统的具体实现方案;结构设计,确定软件结构。为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。
(8)软件调试的目的是_________。
A)发现错误 ?
?B)改正错误
C)改善软件的性能 ? D)挖掘软件的潜能
评析:由程序调试的概念可知:程序调试活动由两部分组成,其一是根据错误的迹象确定程序中错误的确切性质、原因和位置。其二,对程序进行修改,排除这个错误。所以程序调试的目的就是诊断和改正程序中的错误。
(9)按条件f对关系R进行选择,其关系代数表达式为_________。
A)RooR ? B)? f ? C)6f(R) ? D)兀f(R)
评析:选择运算是一个一元运算,关系R通过选择运算(并由该运算给出所选择的逻辑条件)后仍为一个关系。这个关系是由R中那些满足逻辑条件的元组所组成。如果关系的逻辑条件为C则R满足f的选择运算可以写成:6f(R)。
(10)数据库的物理设计是为一个给定的逻辑结构选取一个适合应用环境的_______的过程, ? 包括确定数据库在物理设备上的存储结构和存取方法。
A)逻辑结构? B)物理结构 ? C)概念结构 ? D)层次结构
评析:根据数据库物理设计的概念可知:为一个给定的逻辑数据模型选取一个最合适应用要求的物理结构的过程,就是数据库的物理设计。数据库的物理结构就是指数据库在物理设备上的存储结构与存取方法。
(11)下列叙述中正确的是_______。
A)C语言编译时不检查语法
B)C语言的子程序有过程和函数两种
C)C语言的函数可以嵌套定义
D)C语言中,根据函数能否被其它源文件调用,被区分为内部函数和外部函数
评析:选项A的错误在于编译过程中是检查语法的,若发现源程序有语法错误,则系统会提示出错信息;选项B的错误在于c语言中,子程序的作用是由函数来完成的,无过程的概念;选项c的错误在于函数不可以嵌套定义,但可以嵌套调用。
(12)有以下程序:
char c=10;
float f=100.0;double x;
a=f/=c*=(x=6.5);
printf(&#8220;%d%d%3.1f%3.1f\n”,a,c,f,x);
程序运行后的输出结果是_______。
A)1 65 1 6.5? ?B)1 65 1.56.5? ?C)l 65 1.0 6.5? ?D)2 65 1.5 6.5
评析:本题求解步骤如下:先进行“c*=(x=6.5)”的运算,由于x=6.5,表达式相当于c=c*6.5=10*6.5=65.再进行&#8221;f/=65&#8243;的运算,相当于f=-f/65=100.0/65,由于f为单精度实型变量,因此f的值约为1.538462.然后进行“a=f”的运算,由于a为整型变量,因此a=1.最后将各个变量的值按照printf中的格式要求输出到屏幕,注意变量f,x按照“%3.1f”格式输出,,即只输出一位小数。
(13)以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子x/(y*z)的C语言表达式是_______。
A)x/y*z ? B)x*(1/(y*z)) ? C)x/y*1/z ? D)x/y/z
评析:按照自左向右的运算逻辑,选项A是先做x/y,然后再乘以x,显然与题意不符。
(14)若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是_______。
A)-3 ? B)9 ? C)-12 ? D)6
评析:c语言中对赋值运算的运算顺序是自右向左。本题中,计算a*a之后,a的值依然为3,表达式a*a的值为9;a-=9,a=3-9=-6;a+=-6,a=-6+-6=-12。
(15)以下程序段中与语句k=a&b?(b&c?1:0):0;功能等价的是_______。
A)if((a&b)&&(b&C))k=l;else k=0;
B)if((a&b)‖(b&C))k=l;else k=O;
C)if(a&=b)k=0;else if(b&=C)k=1;
D)if(a&b)k=1,else if(b&C)k=l;else k=0;
评析:“a&b?(b&c?1:0):0”的求解顺序是:先判断a&b是否为真,如果为真,则执行b&c?1:0:如果b&c为真,则(b&c?l:0)的值为1,从而整个表达式返回1,否则整个表达式返回0;如果a&=b,则表达式返回0。因此功能等价的语句应为if((a&b)&&(b&C))k=l;else k=0;。
(16)设x、y、t均为int型变量,则执行语句:x=y=3;t=++x‖++y;后,y的值为_______。
A)不定值 ? B)4 ? C)3 ? D)1
评析:e语言中在做逻辑或运算时,自左向右判断各个参加或运算的表达式,一旦运算到某式的值为非零时,表明整个表达式一定为真,余下的语句则不再进行运算。本题中,++x的值为真,则++y并没有进行运算,所以y值不变。
(17)假设a和b为int型变量,则执行以下语句后,b的值为_______。
a=l:b=10:
{? b-=a:? a++:
}? while(b一&0):
A)9 ? B)-2 ? C)-l ? D)8
评析:本题程序第一轮循环后b的值为9,在进行循环条件测试时,先取b的现值9与O比较,然后再将b减l。由于9&0不成立,因此循环结束,这时b的值已变成8,本题正确答案为D。
(18)若执行以下程序时从键盘上输入9,则输出结果是_________。
scanf(”%d:”,&n);
if(n++&10)printf(&#8220;%d\n&#8221;,n);
else printf(”%d\n&#8221;,n&#8211;);
A)ll ? B)lO ? C)9 ? D)8
评析:n++是在语句结束后再加l,因此,if语句中相当于判断的是9&10,当然是执行if语句后面的lorintf语句,而这时,因为if语句被执行,n的值也被加1,所以在打印时,n值为10,而n&#8211;是在printf语句执行完毕后再减1的。
(19)有以下程序段
while(k=l)k++;
while循环执行的次数是_________。
A)无限次 ?
B)有语法错,不能执行
C)一次也不执行?
评析:c语言里关系表达式的等于应该是“==”。一个等于号表示赋值,即这里面重复的把1赋给k,自然表达式k=l的值总为1,while后面的表达式恒为真,当然会进入死循环。
(20)有以下程序:
void sum(int*a)
{a[O]=a[1];}
Int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
for(i=1;i&O;i&#8211;)sum(&aa[i]);
printf(”%d\n”,aa[0]);
程序运行后的输出结果是_________。
A)4 ? B)3 ? C)2
评析:c语言规定,实参变量对形参变量的数据传递是“值传递”,只由实参传给形参,而不能由形参传回来给实参。函数调用结束后,形参单元被释放,实参单元仍保留并维持原值。本题要求输出aa[0]的值,结果应为1。
(21)以下程序执行后sum的值是_________。
int I,sum;
for(i=1;i&6;i++)sum+=i;
printf(”%d\n&#8221;,sum);
A)15 ? B)14 ? C)不确定 ? D)0
评析:变量sum在使用时未赋初值,所以无法确定sum最终的值。
(22)有以下程序:
int x[8]={8,7,6,5,0,0},*s;
printf(”%d\n”,s[2]);
程序运行后的输出结果是________。
A)随机值 ? B)0 ? C)5 ? D)6
评析:本题定义了数组x[8]和指针变量s,由c语言规定,指针加1的含义是使指针指向数组的下一个元素,而不是指针值简单的加l,因此通过s=x+3;使s指向数组元素x[3]。由于指向数据的指针变量可以带下标表示,如s[i]与*(s+i)等价。因此题目要求输出s[2]的值,即+(s+2)的值,也就是x[51的值,为0。
(23)有以下程序段
printf(”%d”,x-=2);
while(!(--x));
其输出结果是_______。
A)l ? B)3?0 ? C)1? -2 ? D)死循环
评析:本题中循环执行了两次,第一次,执行完printf语句后,x=l,而--X是先自减后执行语句,所以(!(--X))的值为非零,所以又执行了一次。第二次x的值为-2,--x的值为-3,求非后,值为0,跳出循环。
(24)若变量c为char类型,能正确判断出c为小写字母的表达式是_______。
A)’a’&=c&=’z’ ?
B)(c&=’a’)‖(c&=’z’)
C)(’a’&=C)and(’z’&=C) ? D)(c&=’a’)&&(c&=’z’)
评析:(c&=‘a’)和(c&=‘z’)的关系应该是“与”的关系。
(25)下列不合法的main函数命令行参数的表示形式是_______。
A)main(n a,char*c[]); ?
B)main(ac,av)int arc;char**av;
C)main(C,V)int c,char*v[]; ? D)main(argc,argv)int argc;char argv[];
评析:main函数的参数通常有两个,前者为整型,后者为字符型指针数组。参数的名字可以是任意合法的标识符。而且,形如**av与*av[]等价,所以选项A、B、c均正确,选项D是错误的。
(26)以下所列的各函数首部中,正确的是_______。
A)void play(var a:Integer,var b:Integer)
B)void play(int a,b)
C)void play(int a,int b)
D)Sub play(a as integer,b as integer)
评析:除选项c项外,其它各项都没有按照c语言中的函数定义规则定义函数。
(27)在c语言中,引用数组元素时,其数组下标的数据类型允许是_______。
A)整型常量 ?
?B)整型表达式
C)整型常量或整型表达式
D)任何类型的表达式
评析:c语言规定只能逐个引用数组元素而不能一次引用整个数组,数据元素的表示形式为数组名[下标],下标可以是整型常量或整型表达式。
(28)以下程序的输出结果是_______。
fun(int x,inty,int z)
{z=x*x+y*y;}
int a=3l:
fun(5,2,a);
printf(”%d”,a);
A)0 ? B)29 ? C)3l ? D)无定值
评析:本题中,a的值并没有改变,因为传递到函数中的是变量值。
(29)下列程序段的输出结果是__________。
void fun(、int *x,int *y)
{primf(”%d%d”,*x,*y);*x=3;*y=4;}
int? x=l,y=2;
fun(&y,&x);
printf(”%d%d”,x,y);
A)2 1 4 3 ? B)12 l2 ? C)l 2 3 4 ? D)21 l2
评析:本题中函数传递的是变量的地址,如果形参在函数中发生改变,相对应的实参也就有了改变。
(30)对于下面的程序
#include&stdio.h&
#include&string.h&
char*scmp(char*s1,char*s2)
if(strcmp(sl,s2)&0)retum(s1);
else return(s2);
int i;char string[20],str[3][20];
for(I=0;i&3;i++)gets(str[i]);
strcpy(string,scmp(str[0],str[1]));
strcpy(string,scmp(string,str[2]));
printf(”%s\n&#8221;,string);
若运行时依次输入:abcd、abba和abc三个字符串,则输出结果为________。
A)abcd ? B)abba ? C)abc ? D)abca
评析:本题自定义函数semp()的作用是比较字符串s1和s2的大小,如果sl&s2,函数返回s1的值,否则返回s2的值。若运行时依次输入abed、abba和abe三个字符串,执行strcpy(string,scmp(str[O],str[1]));后,string的值为abba,再执行strepy(string,scmp(string,str[2]));,由于scmp(string,str[2])返回string的值
abba,再拷贝到字符串数组string中,所以本题输出abba。
(31)下列程序的输出结果是__________。
char a[10]={9,8,7,6,5,4,3,2,1,O},*p=a+5;
print&#8221;%d*&#8211;p);
A)非法 ? B)a[4]的地址?
评析:本题中char*p=a+5;即相当于p=&a[5],而&#8211;p,是先要减1,则printf语句要输出的值就是a[4]。
(32)对下面的程序进行编译与连接生成可执行文件c.exe,并在DOS命令提示符下输入:
c I said”I loveChina&#8221;!
程序代码如下:
main(、int argc,char*argv[])
printf(“%d&#8221;,argC);
其输出结果为________。
A)4 ? B)5 ? C)6 ? D)7
评析:带参数的main()函数常用形式为:main(int argc,ehar*argv[])
其中,参数的个数由C程序运行时自动计算出来。字符型指针数组argv的第一个元素存放命令名,其后各个元素依次存放命令行中各个参数的首地址;整型变量arge用来记录命令行中的参数个数,文件名也作为一个参数,对于命令行中双引号内的字符串,即使有空格分开,也只算是一个参数,同时双引号本身不算参数的内容,因此本题argc的值等于5
(33)下列程序的运行结果是________。
void fun(int *a,int *b)
k=a;a-b;b=k;
int a=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf[”%d%d.f,a,b);
A)6 3 ? B)36 ? C)编译出错 ? D)0 0
评析:本题中主函数里的x、y,fun函数里的a、b、k,这些都是指针,fun函数中只是将a、b这两个指针交换了位置,而并没有改变主函数中变量a、b的值。
(34)若有定义:int*p[3];,则以下叙述中正确的是________。
A)定义了一个基类型为int的指针变量p,该变量有三个指针
B)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C)定义了一个名为+p的整型数组,该数组含有三个int类型元素
D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
评析:由于运算符[]优先级比*高,int*p[3];相当于int *(p[3]);表示数组p的三个元素都是指针变量,且每个元素都是基类型为int的指针。
(35)有以下程序:
void swapl(int *a,int *b)
{int *c=a;
a=b,b=c;
void swap2(int *a,int *b)
int c=*a:
*a=*b,*b=c;
(int a=lO,b=15;
swapl(&a,&b);
printf(”%d,%d,”,a,b);
a=lO,b=15;
swap2(&a,&b);
printf(”%d,%dt.,a,b);
其输出结果为_________。
A)15,10,10,15
?B)15,10,15,10
C)10,15,10,15
D)10,15,15,10
评析:C语言规定,实参变量对形参变量的数据传递是“值传递”,只由实参传给形参,而不能由形参传回来给实参。在内函数调用结束后,形参单元被释放,实参单元仍保留并维持原值。本题中swapl()函数中,虽然改变了形参指针的值,但实参指针的值并没有改变,所以执行第一个printf后应输出10,15,;swap2()函数实现了交换两个变量a和b的值,因此执行第二个printf后输出交换后的值15,10,所以本题答案为D。
(36)当调用函数时,实参是一个数组名,则向函数传送的是__________。
A)数组的长度 ?
B)数组的首地址
C)数组每一个元素的地址 ? D)数组每个元素中的值
评析:当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址,函数中的形参可定义成以下三种形式:
①形参定义成数组;
②形参定义成可变长数组;
③形参定义为指针变量。
(37)下面的程序输出结果是________。
#define r16
void p(int a)
printf(&#8220;%x&#8221;,a);
voidp(int a)
printf(&#8220;%d&#8221;,a);
A)32 ? B)20 ? C)编译时错误? D)运行时错误
评析:“#define r16”的作用是指定用标识符r来代替16,因此程序编译时只编译#if部分,故程序运行时,打印输出十六进制的32,即20。
(38)设有以下声明语句
intx;floaty;char z;}example;
则下面的叙述中不正确的是_________。
A)struct是结构体类型的关键字?
B)example是结构体类型名
C)x,y,z都是结构体成员名
D)struct ex是结构体类型
评析:example是结构体变量名。
(39)以下只有在使用时才为该类型变量分配内存的存储类说明是_________。
A)auto和stmic ?
?B)auto和register
C)register和static ?
D)extem和register
评析:extem、register、static、auto分别是定义外部变量、寄存器变量、静态变量、自动变量,其中,自动变量和寄存器变量属于动态存储,调用时临时分配单元;而静态变量和外部变量属于静态存储,在整个程序运行时都存在。
(40)下面程序运行后的输出结果是__________。
fut(int**s,int p[2][3])
**s=p[l][1];
int a[2][3]={1,3,5,7,9,1l},*p;
p=(int*)malloc(sizeof(int));
fut(&p,a);
printf(”%d\n”,*p);
A)l ? B)7 ? C)9 ? D)ll
评析:本题a[2][3]定义为一个具有两行三列的元素的数组,malloc()函数的作用是开辟了一个长度为sizeof(int)的内存区,p为指向整型数据的指针变量,程序调用fur()函数,将第一行第一列对应的元素值赋给一s,由于数组中第一行第一列对应的元素为9,所以本题输出值9。
(41)以下程序的输出结果是_________。
inti,k,a[10],p[3];
for(I=O;i&10;i++)a[i]=i;
for(i=0;i&3;i++)p[i]=a[I*(i+1)];
fbr(i=O;i&3;i++)k+=p[I]*2;
printf(”%d\n”,k);
A)20 ? B)2l ? C)22 ? D)23
评析:按照程序的流程走一遍,可以得到,p[O]=0,p[1]=2,p[3]=6;执行三次k+=p[i]*2,相当于k=5+0*2+2*2+6*2=21
(42)当执行下面的程序时,其输出结果为__________。
union st s:
char*p=(char*)&s;
s.a=Ox3132;
s.b=Ox33;
printf(”%c”,*p);
A)l ? B)2 ? C)3 ? D)不确定
评析:共用体类型结构的特点是使几个不同的变量共占同一段内存,但在每一瞬时只能存放其中一种,而不是同时存放几种,共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用。因此本题起作用的是成员b的值,所以程序打印输出3。
(43)当执行下面的程序时,如果输入ABc,则输出结果是________。
#include”stdio.h&#8221;
#include”string.H”
{? char ss[10]=”12345”;
gets(ss);strcat(ss,&#&#8243;);
printf(”%s\n”,ss);
A)ABC6789 ? B)ABC67 ? C)12345ABC6?
D)ABC456789
评析:strcat(str1,str2)合并字符串函数的作用是把str2所指字符串的内容连接到strl字符串的后面,自动删去strl原来串中的‘\0’。为了进行这项操作,要求strl所指的字符串后面有足够的空间来容纳’str2所指字符串中的内容。函数值为strl所指第一个字符的地址。
(44)main(im argo,char*argv[])
while(&#8211;argc&0)printf(”%s”,argv[argc]);
printf(”\n”);
假定以上程序经编译和连接后生成可执行文件PROG.ExE,如果在此可执行文件所
在目录的Dos提示符下键入:PROG ABcDEFGHIJKLL,则输出结果为_________。
A)ABCDEFG ?
C)ABCDEFGHIJKL ? ?D)lJKLABCDEFGH
评析:本题主函数带有两个参数,一个int型变量argc,另一个是char型的一维一级指针数组argv。当主函数被执行时,系统自动将根据命令行的情况,分别给主函数的两个参数赋值。Arge中存放命令行中命令字和参数的总和的个数,argv用来存放命令行中命令字和所有参数的字符串的,并规定argv[0]存放命令字字符串,argv[1]用来存放第一个参数的字符串,argv[2]用来存放第2个参数的字符串,依次类推。
题中argc的值是2,执行完&#8211;argc后为1,输出argv[1],此数组存在第一个参数的字符串ABCDEFGHIJKL。
(45)设char型变量x中的值为10100lll,则表达式(2+x)“(~3)的值为_________。
A) ? B) ? C)lll11101 ? D)0101010l
评析:异或运算符(n)的运算规则是:参加运算的两个相应位同号,则结果为0(假):异号则为-1(真)。
取反运算符(~)的运算规则是:对一个二进制数按位取反,即将0变为l,l变为O。本题(~3)是对3(二进制形式为)按位取反即。
表达式(2+x)n(~3)的值就等价于(000,结果为。
(46)以下程序的输出结果是________。
long fun(int n)
if(n==1‖n==2)s=2;
else s=n-fun(n-1);
return S:
{primf(”%ld\n”,fun(3));}
A)l ? B)2 ? C)3 ? D)4
评析:这是一个递归函数。递归的结束条件是,n=l或者n=2。按照程序顺序,即可得出本题结果为l。
(47)以下程序试图把从终端输入的字符输出到名为abe.txt的文件中,直到从终端读入字? 符串撑号时结束输入和输出操作,但程序有错
#include&stdio.h&
FILE*fout:
fout=fopen(’abc.txt&#8217;,’w’);
ch=fgetc(stdin);
while(chI_’))’)
fputc(ch,fout);
ch=fgetc(stdin);
fclose(fout);
出错的原因是_________。
A)函数fopen调用形式错误 ? B)输入文件没有关闭
C)函数龟etc调用形式错误 ? D)文件指针stdin没有定义
评析:本题考查的是文件的打开函数fopen(),其调用方式通常为:FLIE*fp;fp=fopen(文件名,使用文件方式);,如:fp=fopen(“abc.txt&#8221;,&#8221;w&#8221;);表示要打开名字为abc.txt的文件,使用文件方式写入。fopen函数带回指向abc.txt文件的指针并赋给fp,即审指向文件abc.txt。
(48)以下程序的输出结果是_______。
#define SQR(X) X*X
int a=16,k=2,m=l;
a/=SQR(k+m)/SQR(k+m);
printf(&#8220;%d\n&#8221;,a);
A)16 ? B)2 ? C)9 ? D)l
评析:c语言在预编译时遇到带实参的宏名,则按命令行中指定的字符串从左到右进行置换。在做这题时,也不妨将运用置换法。得到:a/=k+m*k+m/k+m*k+m=16/7=2。注:a为整型,所以在做除法时,自动取整。
(49)假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是________。
A)free(q);p-&next=q-&next;
B)(*p).next=(*q).next;free(q);
C)q=(*q).next;(*p).next=q;free(q);
D)q=q-&next;p-&next=q;p=p-&next;free(p);
评析:选项A的错误在于,先已经把q结点给释放,无法再进行余下语句了:选项c和D的错误在于因为有了q=(*q).next做了赋值,则free(q)释放了原来q后面的一个结点。
(50)以下程序的输出结果是__________。
int x=05;char z=’a’;
printf(&#8220;%d\n&#8221;,(x&1)&&(z&’z‘));)
A)0 ? B)1 ? C)2 ? D)3
评析:“&”是位运算符表示按位与运算,“&&”是逻辑运算符当其两边的表达式都为真时返回真值。关系表达式()&1)&&(z&‘z’),(x&1)为真,(Z&‘Z&#8217;)也为真,两者相与,自然也为真,以整型输出,则输出1。
二、填空题(每空2分,共40分)
请将每一个空的正确答案写在答题卡的【1】至【20】序号的横线上,答在试卷上不得 ? 分。
(1)栈的基本运算有三种:入栈、退栈和? 【1】? 。
答案:【1】读栈顶元素
评析:栈的基本运算有三种:入栈、退栈和读栈项元素。
入栈运算是指在栈项位置插入一个新元素。这个运算有两个基本操作:首先将栈顶指针进一(即top加1),然后将新元素插入到栈顶指针指向的位置。
退栈运算是指取出栈顶元素并赋给一个指定的变量。这个运算有两个基本操作:首先将栈顶元素(栈项指针指向的元素)赋给一个指定的变量,然后将栈项指针退一(即top减1)。
读栈顶元素是指将栈顶元素赋给一个指定的变量。这个运算不删除栈顶元素,只是将它的值赋给一个变量。
(2)在面向对象方法中,信息隐蔽是通过对象的? 【2】? 性来实现的。
答案:【2】封装
评析:软件工程的基本原则包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
信息隐蔽是指采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。
(3)数据流的类型有? 【3】? 和事务型。
答案:【3】变换型
评析:典型的数据流类型有两种:变换型和事务型。
变换型:是指信息沿输入通路进入系统,同时由外部形式变换为内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。
事务型:在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。
(4)数据库系统中实现各种数据管理功能的核心软件称为? 【4】? 。
答案:【4】数据库管理系统或DBMS
评析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。数据库管理系统是数据库系统的核心。
(5)关系模型的数据操纵即是建立在关系上的数据操纵,一般有? 【5】? ?、增加、删除 ? 和修改四种操作。
答案:【5】查询
评析:关系模型的数据操纵即是建立在关系上的数据操纵,一般有查询、增加、删除和修改四种操作。
数据查询:用户可以查询关系数据库中的数据,它包括一个关系内的查询以及多个关系间的查询。
数据删除的基本单位是一个关系内的元组,它的功能是将指定关系内的指定元组删除。
数据插入仅对一个关系而言,在指定关系中插入一个或多个元组。
数据修改是在一个关系中修改指定的元组和属性。
(6)下列程序的输出结果是? 【6】? 。
int a=l,b=2;
a=a+b;b=a-b;a=a-b;
printf(”%d,%d\n”,a,b);
答案:【6】2,1
评析:本题中,执行a=a+b时,a=l,b=2,a=l+2=3;b=a-b时,a=3,b=2,b=3-2=1;a=a-b时,a=3,b=l,a=3.1=2;因此,本题的输出是2,1.
(7)下列程序的输出结果是16.00,请填空;,
int a=9,b=2:
float x=? 【7】? ,y=1.1,z;
z=a/2+b*x/y+l/2;
printf(”%5.2tin&#8221;,z);
答案:【7】6.6
评析:本题,已知结果z=16.00,即16.0=a/2+b*x/y+l/2,分别把a、b代入,得到16.0=9/2+2&#8243;x/1.1+1/2。
因为a=9,a是整型,所以9/2的值在没有进行类型转换时,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。
(8)用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间, ? 请填空。
st=(chhr*)? 【8】? ;
答案:181 malloc(11)
评析:malloc函数的格式是:void*(或char*)malloc(size),size表示应分配的存储区。此题要分配11字节的单元,把11代入即可。
(9)下列程序段的输出结果是? 【9】? 。
{char b[]=”Hello,you”;
printf(”%s\n”,b);
答案:【9】Hello
评析:字符串中,数值0或符号‘\O’表示字符串的结束。本题中,b[5]被赋了0值,表明字符串b的第六个字符就是结束标志。因此,只输出前五个字符,即Hello。
(10)下列程序段的输出结果是? 【10】 ?。
int? n=’c’:
switch(n++)
{default:printf(”error&#8221;);break;
case。a’:
case’A。:
caseIb’:
tase&#8217;B':printf(”good&#8221;);break;
case&#8217;c':case&#8217;C':printf(”pass&#8221;);
case&#8217;d':case&#8217;D':printf(”warn&#8221;);
答案:【10】passwarn
评析:n++是在执行完其所在的语句后再加l,因此,在执行case的时候,n的值依然为‘c’,执行case‘c’后面的语句,先打印出“pass”;在执行完case‘c&#8217;后,未遇到break跳出switch,便接着执行下面的语句,又打印出warn。所以此题输出结果是:passwarn。
(11)以下程序通过函数指针p调用函数mn,请在填空栏内,写出定义变量p的语句。
void fun(int‘x,int*y)
{? ……? }
{ int a=lO,b=20;
【11】? :
p=fun;? p(&a,&b);
答案:【11】void(*p)();
评析:要定义p为指向函数的指针变量,需写成:void(*p)();注意+p两侧的括弧不可以省略,表示p先与*结合,是指针变量,再与后面的()结合,表示此指针变量指向函数,这个函数无返回值(同fun函数)。
(12)以下程序的输出结果? 【12】? 。
int p[7]={ll,13,14,15,16,17,18};
int i=0,J=0;
while(1&7&&p[i]%2==1)j+=p[i++];
printf(”%d\n”J);
答案:【12】24
评析:本题程序定义了一维数组p,有七个数组元素,整型变量i,.j初值分别为0,当while的条件表达式(i&7&&p[i]%2==1)的值为真时,执行语句j+=p[i++];,如:当i=0时,i&7为真,p[I]%2=11%2=1,表达式(p[i]%2:=1)的值为真,所以整个表达式(i&7&&p[i]%2==1)的值为真,执行j=j+p[i++]=0+11=11,i=l;依次类推可以得出答案24。
(13)下列程序的输出结果是? 【13】? ?。
void fun(int *n)
while((*n)&#8211;);
printf(”%d”,++(*n));
{? int? a=100;
答案:【13】0
评析:在函数fun()中,while((*n)&#8211;)是先引用+n的值,再做(*n)&#8211;运算,所以循环结束时*n的值为O,再做(+n)&#8211;运算后,*n的值为-1;执行++(*n)后,*n的值是O。
(14)以下程序的输出结果是? 【14】? 。
int arr[]={30,25,20,15,10,5},*p=arr;
printf(”%d\n”,*(p+3));
答案:【14】10
评析:整型指针最初被赋的值是数组art的头指针,即指向数组的第一个元素30,p++后,指针指向数组的下一个元素,即*p=arr[1]=25,在执行*(p+3)时,则相当于a[1+3],即10。因此,输出应为10。
(15)以下程序运行后的输出结果是? 【15】? 。
char a[]=&#8221;Language&#8221;,b[]=”Programe&#8221;;
char *p1,*p2;
pl=a,p2=b;
for(k=0;k&=7;k++)
if(*(pl+k)==*(p2+k))printf(”%c”,*(pl+k));
答案:【15】gae
评析:本题定义了两个字符串数组a[],b[],字符型指针变量p1和p2,且分别指向字符串数组a和b,执行for循环,当if(*(pl+k)==*(p2+k))条件为真,执行输出*(pl+k)对应的字符。即当k=0时,*(pl+k)对应的字符串数组a.中的字符L,*(p2+k)对应的字符串数组b中的字符P,因此if(*(pl+k)==*(p2+k))条件为假,不执行printf语句,依次类推,将字符串数组a和b中对应位置上的字符一一比较,如果对应位置上的字符相同,则输出该字符。
(16)下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文 ? 件中,请填空。
#include? ”stdio.H”
FILE? *fp;
if((fp=fopen(? 【16】? ))==NULL)exit(0);
while((ch=getchar())!=’@’)fputc(ch,fp);
fclose(fp);
答案:【l6】“bi.Dat”, “w”或“bi.dat”,“w+”或“bi.dat”,“r+”
评析:本题的考点是fopen()函数,此函数的格式是fopen(文件名,使用文件方式),题目的要求是将从键盘读入的文本写到文件中,因此选择的打开方式应该是“w”(只写)。或者是读写“r+”或“w+”。
(17)以下程序是从终端读入数据到数组中,统计其中正数的个数,并计算它们的和。请填空。
int i,a[20],sum,count;
sum=count=? 【17】? ;
for(i=0;i&20;i++)scanf(”%d”,? 【18】? ?);
for(i=0;i&20;i++)
if(a[I]&0)
{ count++;
【19】? ;
printf(”sum=%d,count=%d\n&#8221;,sum,count);
答案:【17】0
【18】&a[i]
【19】a[i]
评析:本题要求从终端读入数据到数组中,统计其中正数的个数,并计算它们的和。程序中首先要对存放正数个数的变量count及存放和值的变量sum初始化为0,所以第一空应填:0。接着要求从终端读入数据到数组中,可以通过scanf函数实现,因此第二空应填:&a[i]。最后通过sum+=a[i];语句累加正数a[i]的值到sum中,因此第三空应填:a[i]。
(18)若变量n中的值为24,则pint函数共输出? 【20】? 行。
void prnt(int n,int aa[])
{? int i;
for(I=1;i&=n;i++)
printf(”%6d&#8221;,aa[I]);
if(!(i%5,J)printf(“\n”);
printf(”\n”);
答案:【20】5
评析:本题的关键在于if(!(i%5))printf(“\n”);这句,即如果i可被5整除时,则换行。i值为24,可以被5整除4次,并余4,因此,prnt函数共输出5行,最后一行有4个
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
港口与航道工程建设工程法规及相关知识建设工程经济考试大纲矿业工程市政公用工程通信与广电工程
操作系统汇编语言计算机系统结构人工智能数据库系统微机与接口
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
Powerpoint教程WPS教程
电子政务客户关系管理首席信息官办公自动化大数据
职称考试题目
就业指导签约违约职业测评
招生信息考研政治
网络安全安全设置工具使用手机安全
3DMax教程Flash教程CorelDraw教程Director教程
Dreamwaver教程HTML教程网站策划网站运营Frontpage教程
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
互联网电信IT业界IT生活
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
组织运营财务资本
视频播放文件压缩杀毒软件输入法微博
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&}

我要回帖

更多关于 二级c语言上机题库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信