全编本习题集

时间:2024.4.13

习题集

诗经

1. 熟读各诗,体会重章叠句的艺术魅力。

2.《采薇》诗中是怎样处理爱国与恋家关系的?你如何看待这一问题?

3.“昔我往矣,杨柳依依;今我来思,雨雪霏霏”,为什么会被后人目为《诗经》中的佳句?

4.《伯兮》中哪些地方使用了“以丑写美”的手法?

先秦散文

1.《曲则全》一文说“枉则正。”《孟子·万章上》说:“吾未闻枉己而正人者也。”《淮南子·泰族训》说:“夫圣人之屈者,以求伸也;枉者,以求直也;故虽出邪辟之道,行幽昧之涂,将欲以直大道,成大功。”请分析其间的义理异同。

2.《曲则全》一文在语言表达上有什么特点?其效果如何?

3.《论语·为政》说:“子曰:‘道之以政,齐之以刑,民免而无耻;道之以德,齐之以礼,有耻且格。'”请谈谈孔子此言与本文宽猛相济之论的区别与联系。

4.阳虎说:“为富不仁矣,为仁不富矣。”(《孟子·滕文公上》)叔向认为韩宣子“有栾武子之贫”就“能其德”。仁德是否一定与贫困相伴,请略作论述。

5.请分析评价下列句子的内涵:“人之憎我也,不可不知也;吾憎人也,不可得而知也。人之有德于我也,不可忘也;吾有德于人也,不可不忘也。”

屈宋

1. 楚辞研究史上有哪几种有代表性的研究方法?

2. 屈原的人格魅力表现在哪些方面?

秦汉文

1.一篇不足千字的《谏逐客书》,为什么能说服刚愎自用的君王?其成功的主要原因有哪些?你从中受到怎样的启发?请结合实际生活谈谈其中蕴含的公关艺术。

2.具体分析《谏逐客书》正反论证、利害对举的说理方法,并请用最精练的语言概括出本文的写作特色。

3. 在当前既融合又竞争的国际形势下,《苏武传》中的苏武形象有何现实意义?司马迁曾为李

陵辩解而受腐刑,你如何评价李陵?

4. 有人说汉代并无民族观念,苏武只是汉朝国家的代表,无愧为爱国英雄,而不宜把他列为“民族英雄”。你如何认识?

5. 《苏武传》的审美价值和人文精神表现在哪些方面?请加以总结和概括。

汉魏诗

1. 名词解释

① 汉乐府② 《古诗十九首》③ 建安文学④ “三曹”

2. 《饮马长城窟行》首二句“青青河畔草,绵绵思远道”,用的是古代诗歌较常见的“比兴”手法,请分析这两句诗在整首诗中所起的作用。

3. 《行行重行行》一诗,写的都是极普通的事,如游子远出,思妇消瘦,希望游子努力加餐,但却很感人。分析这首诗之所以感人的原因。

4. 人们说曹操的诗是反映汉末社会动乱的“诗史”,诗风“古直悲凉”。试举《蒿里行》一诗加以说明。

5. 试分析《燕歌行》一诗女主人公思念游子的细腻的心理。

6. 曹植的《送应氏》(步登北邙阪)一诗是怎样描写洛阳残破的?这样描写与送应氏兄弟有什么关系?

汉魏六朝赋

1.联系中小学已学的赋,试说说古赋、骈赋、散赋的异同。

2.课外阅读庾信《哀江南赋》正文。

六朝文

1.萧统在《陶渊明集序》中是怎样分析陶渊明的人生态度及诗文创作的?陶渊明的人生态度在今天有无积极意义?如果有,请具体说明。

2.文心雕龙·知音》分析文学鉴赏困难的原因有哪几个方面?

3.文心雕龙·知音》提出的“六观”说的具体内涵是什么?“六观”说对今天的文学鉴赏有什么指导意义?

六朝诗

1. 结合中小学已学陶渊明诗文,你对陶渊明印象最深的是什么?

2. 前人对六朝诗否定较多,为什么近年这种观点不再那么盛行?尤其是对宫体诗的批评减少了,为什么?

初盛唐诗(上)

1.说说张若虚《春江花月夜》的艺术特点。

2.比较王维、孟浩然诗风之异同。

初盛唐诗(下)

1. 对高适《燕歌行》是否讽刺张守,你持何种观点?诗前小序明言“开元二十六年,客有从御史大夫张公出塞而还者??”,争议的双方都不否认“御史大夫张公”是指张守,而张守这年因隐瞒“湟水之败”而被贬括州,似乎岑仲勉之说不无道理,而通读高适的诗集,发现高适竟对张守评价甚高,且他对张守被贬括州颇有微辞,对张守深表同情,这可否完全排除了他的《燕歌行》是讽刺张守的可能性。这一争论能给我们治学以何种启示?

2. 《燕歌行》中“战士军前半死生,美人帐下犹歌舞”二句是前人谓讽刺张守“不恤士卒”的重要依据,本书提出对“战士”一词的新解,您是否赞同?“帐下”通常指军中的营帐,您如何理解?

3. “君不见沙场征战苦,至今犹忆李将军”二句中,“李将军”既可指赵国大将军李牧,他有边塞战争的经历,且以爱惜士卒著名;也可指西汉飞将军李广,《史记》中有《李将军列传》,李广不仅长期抗击匈奴,功勋卓著,且终不得封侯,故深得司马迁的同情。书中采取后一说,你持何观点?思考此问题时可考虑诗中“边庭????岂顾勋”几句的含义,尤其是“岂顾勋”三字,明白说出“李广难封”之义。您是否同意这样的理解?

4. 《燕歌行》作于开元二十六年,是盛唐之作,在安史之乱之前,试比较高适与岑参的几首边塞诗,从中是否可见出一种奋发向上的“盛唐气象”?

5. 书后选录了盛唐至中晚唐的若干首边塞诗,说说您读了这些诗后的感受。盛唐时期相对来说是对外战争最少的时期,何以其边塞诗却比初唐、中唐、晚唐更盛?试想想其中的原因。

李白

1. 从本单元的几首诗,说说李白诗浪漫风格的特点。

2. 以《梦游天姥吟留别》、《蜀道难》、《梁甫吟》等篇为例,说说李白诗的结构的跳跃性。

杜甫

1.试比较《梁甫吟》、《远别离》与《哀江头》、《宿府》说说李、杜诗歌风格的不同点。

2.联系中小学学过的课文,说说杜甫诗歌前后期有何不同(可以安史之乱为界)。

唐代散文

1. 清余诚在《重订古文释义新编》卷七中说,《春夜宴诸从弟桃李园序》“通篇着意在一‘夜'字”。试谈谈李白是如何围绕这个“夜”字排构字句、写景抒怀的。

2. 谈谈你对《送孟东野序》中“不平”和“善鸣者”两个概念的理解,它们是否能对你自己的写作起到一定的指导作用?

3. 比较陈子昂的《复仇议状》与柳宗元的《驳复仇议》,指出他们各自的主要论点和论据是什么,他们在说理安排方面有何异同,并就两文的观点结合现实情况,对如何协调“情”与“法”的关系问题展开讨论,再试写一篇500字的短文。

4.联系韩愈《子产不毁乡校颂》与《国语·召公谏厉王弭谤》说说广开言路的意义。

中唐诗(上)

1.概略叙说大历以来中唐诗坛的概况。

2.中唐诗何以能继盛唐以后而再盛?

3.思考中唐诗与中唐文均能兴盛的思想政治原因。

中唐诗(下)

1.有人认为《长恨歌》的主题是歌颂李、杨的爱情,也有人认为这是对他们骄奢淫佚的讽刺,你的看法如何?

2.本诗是“元和体”诗的代表作之一,试说明本诗在押韵、格律等方面的一些特点。

晚唐诗

1.唐诗阶段至此已告结束,试比较初、盛、中、晚唐诗主要异同处。

2.李商隐《无题》常被视为爱情诗的同义语,就你学过的两首加上附录中的两首,你同意这种说法吗?

3.杜牧识见高远,联系他的怀古诗说说你的看法。

唐五代词

1.说说唐五代词与同时代的诗除了长短句与齐言的形式不同外,风格上有何不同?

2. 李后主是个没落的封建帝王,何以他的词却感人至深?

北宋词(上)

1. 北宋词以小令居多,但慢词不仅产生,而且在柳永、张先等词人作品中已相当成功,试比较小令、慢词在表情达意上作用有何不同。

2. 北宋词(尤其小令)在结构上常常是上阕写景、叙事,下阕抒情,试举几例说明之。

3. 苏轼以前的北宋词以“婉约”为主导风格,结合课文说说其主要特点。你喜欢婉约词吗?

北宋诗

1. 严羽《沧浪诗话》批评以黄庭坚为代表的宋代诗人以文为诗、以议论为诗、以才学为诗,根据您学过的这些宋诗,说说其利弊得失。

2. 宋诗数量差不多十倍于宋词,何以宋诗成就远逊于宋词?

3. 说说苏黄对宋诗的贡献?

宋代散文

1. 联系写作背景,分析《祭石曼卿》一文中寄寓着作者怎样的感情?

2. 以《祭石曼卿》一文为例,分析散文赋具有哪些艺术特征。

3. 王安石在《祭欧阳文忠公文》中,概括了欧阳修一生哪些成就?

4. 联系欧阳修与王安石交谊,分析《祭欧阳文忠公文》表现了作者对欧阳修怎样的情感?

5. 阅读朗诵《祭欧阳文忠公文》,体味这篇祭文的语言艺术。

北宋词(下)

1. 说说苏轼在中国词史上的地位。

2. 苏轼300多首词中,真正属于“豪放”的词很少,旷达、婉约的词却相当多,试问,我们还可不可以说苏轼词的风格是豪放?

李清照及南宋前期词

1.以李清照、朱敦儒、叶梦得、张元、李纲等为代表的南渡词人,前半生在北宋度过,词风平和、绮丽,身当国难后均以词反映身世之感与家国之恨,多数人自觉不自觉地写出时代的变迁,试就此命题认真阅读书中及课外的有关作品。

2.以女性文学为专题选读书中涉及的女作家及现当代丁玲、宗璞、茹志鹃、张爱玲、李昂、琼瑶、三毛、王安忆、程乃珊、池莉等作家的作品。

陆游及南宋诗

1.古代爱国诗词在内容与表现形式上各有何特点?

2.联系你学过的陆游诗,说说陆游不同题材的诗艺术风格上有何不同?

3.背诵这几篇课文。

辛弃疾及南宋词

1.比较分析辛弃疾与苏东坡词风的异同。

2.试比较本书附录的咏梅、咏花、咏物诗词,找出其共同的特点。

3.试从已学过的词作,说说南宋词与北宋词有何异同。

金元诗词

1.从吴激、蔡松年、元好问等的作品中,可否见出受苏轼影响的痕迹,试作论述。

2.虞集等在元代身居高位,何以有一种亡国遗民之感?试与庾信之诗赋加以比较。

元曲

1. 元代为什么会出现杂剧、散曲及南戏的繁荣?

2. 散曲与词有何异同?

3. 试比较关汉卿《窦娥冤》与《单刀会》风格之异同。

明清散文

1. 明清散文是中国散文史上又一个辉煌时期,请概略说说其总的成就如何。

2. 就附录的《拙效传》写一篇400—600字的读后感。

明清诗词

1. 金陵怀古代有绝唱,高启的这首登临怀古之作有何与众不同之处?

2. 试将吴伟业《圆圆曲》与白居易《长恨歌》比照对读,分析其异同。

3. 纳兰性德的悼亡词在中国词史上“最称卓特”,《金缕曲·亡妇忌日有感》尤堪称绝调。试联系有关作品或文献,谈谈自己的体会。

古代文言小说

1.有人说《山海经》及古代神话故事已是最早的文言小说,《搜神记》、《世说新语》更是如此,也有人认为唐传奇才是最早的文言小说,因为后者才具备记叙文的六要素,你以为如何?

2.以现代文改写这两篇文言小说中的一篇。

古代白话小说

1. 试比较已学过的文言小说与白话小说的异同。

2. 试比较在《野猪林》一场中林冲与鲁智深性格之不同。

3. 试分析《碾玉观音》中秀秀人物形像。

现代散文(上)

1.《雪》对南北方雪不同特点的描写蕴含着作者什么样的思想情感?

2.为什么说《故乡的野菜》贯串全文的线索是作者爱恋故乡的情感流露?

现代散文(下)

1. 朱自清的《桨声灯影里的秦淮河》是如何发挥“桨声灯影”的美学效果的?请比较此文与俞平伯同名散文的异同。

2.《废园外》作者的情感渗透于全文,而且毫不掩饰,请作具体评析。

现代小说(上)

1.《伤逝》中子君、涓生的爱情悲剧有何典型意义?作品中叭儿狗阿随、干辣椒、半株白菜等细节描写有何艺术效果?

2.《迟桂花》中的迟桂花有何象征意义?作者是如何凸现翁莲“撩人”的美的?

现代小说(中)

1.《断魂枪》中的沙子龙、孙老者对传统武艺的不同态度反映了他们什么样的心态?有何典型

意义?老舍小说的语言有何特色?

2.《诗与散文》中主人公桂奶奶身上预示了什么样的社会人生趋向?

现代小说(下)

1. 比较中国现代小说几位代表性作家你读过的若干作品,简单说说他们风格的异同。

2. 你能否以几十个字简略概述一下萧萧的人物个性?

3. 你觉得张爱玲《花凋》一文最显著的特色是什么?张爱玲的作品近年走红文坛,你觉得其原因是什么?

现代新诗

1.《断章》中,诗人是如何处理“你”的形象和“我”的形象的关系?为什么这样做?

2.分析《雨巷》中像“丁香一样”的姑娘的象征意义。

3.具体分析《偶然》微妙而独特的张力结构。

现当代戏剧

1.愫方为什么出走?

2.《北京人》的结构有什么特点?

当代散文

1.在《四方食事》里,汪曾祺写“吃”与前人不同之点主要表现在哪里?

2.《读书示小妹十八生日书》有意识地动用了诸多艺术手段,请作具体分析。

3.如何理解《给后花园点灯》“其一”中所说的那种文绉绉的“感伤”和“舒服的酸痛”? “其二”中引述的关于林文月的谈话以及林文月的文章,与“后花园”有什么关系?

4.你对“其四”中所写台大教授的告示有何评价?迂腐,无能,幼稚,纯真,优雅,可爱,抑或其他的?

当代小说

为什么说《五分》“立意颇深”,请作具体分析。

当代新诗

1.《苹果树下》的爱情描写有什么特点?

2.《惠安女子》为什么运用第二人称?请作具体分析。

3. 具体阐述“卑鄙是卑鄙者的通行证,高尚是高尚者的墓志铭”。

4.为什么说“邮票”、“船票”、“坟墓”、“海峡”四个意象所表达的情感层层递进,越来越深沉?

5. 请比较余光中的《乡愁》与席慕蓉的《乡愁》(附后),体会两首诗在情感和表达手法上的异同。

故乡的歌是一支清远的笛

总在有月亮的晚上响起

故乡的面貌却是一种模糊的怅惘

仿佛雾里的挥手别离

离别后

乡愁是一棵没有年轮的树

永不老去 乡愁 席慕蓉


第二篇:C语言全部章节习题集(本)


C语言程序设计》

练习册

专 业:____________

班 级:____________

学 号:____________

学生姓名:________ _

任课教师:______ ___

计算机学院基础教研室编制

- 1 - 《

1 C语言概述

一、单项选择题

1、一个C程序的执行是从( )。

A.本程序的main函数开始,到main函数结束

B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C.本程序的main函数开始,到本程序文件的最后一个函数结束

D.本程序文件的第一个函数开始,到本程序main函数结束

2、在 C 语言中,每个语句必须以( )结束。

A. 回车符 B. 冒号 C.逗号 D.分号

3、C 语言规定:在一个源程序中,main函数的位置( )。

A.必须在最开始 B.必须在系统调用的库函数的后面

C.可以任意 D.必须在最后

4、一个C 语言程序是由( )。

A. 一个主程序和若干子程序组成 B.函数组成 C.若干过程组成 D.若干子程序组成

5、下列说法中错误的是( )。

A.主函数可以分为两个部分:主函数说明部分和主函数体

B.主函数可以调用任何非主函数的其他函数

C.任何非主函数可以调用其他任何非主函数

D.程序可以从任何非主函数开始执行

6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( )。

A. 生成可执行目标文件 B.生成目标文件 C.输出运行结果 D.自动保存源文件

二、填空题

1、C 语言只有 个关键字和 种控制语句。

2、每个源程序有且只有一个 函数,系统总是从该函数开始执行C语言程序。

3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 符号作为开始标记,以 符号作为结束标记。

4、C 语言中,输入操作是由库函数 完成的,输出操作是由库函数 完成的。

5、系统默认的C 语言源程序文件的扩展名是 ,经过编译后生成的目标文件的扩展名是 ,经过连接后生成的可执行文件的扩展名是 。

6、C 语言的标识符只能由字母、数字和 三种字符组成。

- 2 -

三、判断题

( )1、C源程序是由多个函数组成的,程序的执行是按书写顺序进行的。

( )2、一个C程序可以由一个文件组成,也可由若干文件组成。

( )3、变量xx和XX是一样的。

( )4、C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。 ( )5、简单的C程序由函数组成。

( )6、C 程序的每一行结束都有一个";"。

3 数据类型、运算符与表达式

一、单项选择题

1、以下选项中,不正确的 C 语言浮点型常量是( )。

A. 160. B. 0.12 C. 2e4.2 D. 0.0

2、以下选项中,( )是不正确的 C 语言字符型常量。

A. 'a' B. '\x41' C. '\101' D. "a"

3、 在 C 语言中,字符型数据在计算机内存中,以字符的( )形式存储。

A.原码 B.反码 C. ASCII 码 D. BCD码

4、若x、i、j和k都是int型变量,则计算下面表达式后,x的值是( )。

x=(i=4,j=16,k=32)

A. 4 B. 16 C.32 D.52

5、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为( )。

A. 算术运算、赋值运算、关系运算 B. 算术运算、关系运算、赋值运算

C. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、赋值运算

3ae

6、若有代数式bc ,则不正确的C语言表达式是( )。

A.a/b/c*e*3 B. 3*a*e/b/c C.3*a*e/b*c D. a*e/c/b*3

7、表达式!x||a==b 等效于( )。

A. !((x||a)==b) B. !(x||y)==b C. !(x||(a==b)) D. (!x)||(a==b)

8、设整型变量 m,n,a,b,c,d 均为1,执行 (m=a>b)&&(n=c>d)后, m,n 的值是( )。

A. 0,0 B. 0,1 C. 1,0 D. 1,1

9、 设有语句 int a=3;,则执行了语句 a+=a-=a*=a;后,变量 a 的值是( )。

A. 3 B. 0 C. 9 D. -12

10、在以下一组运算符中,优先级最低的运算符是( )。

A. * B. != C. + D. =

11、设整型变量 i 值为2,表达式(++i)+(++i)+(++i)的结果是( )。

A. 6 B. 12 C. 15 D. 表达式出错

- 3 -

12、若已定义 x 和 y为double 类型,则表达式 x=1,y=x+3/2 的值是( )。

A. 1 B. 2 C. 2.0 D. 2.5

13、sizeof (double)的结果值是( )。

A. 8 B. 4 C. 2 D. 出错

14、设a=1,b=2,c=3,d=4,则表达式:a<b? a : c<d? a : d的结果为( )。

A. 4 B. 3 C. 2 D. 1

15、设a 为整型变量,不能正确表达数学关系:10<a<15的 C 语言表达式是( )。

A. 10<a<15 B. a= =11|| a= =12 || a= =13 || a= =14

C. a>10 && a<15 D. !(a<=10) && !(a>=15)

16、设 f是实型变量,下列表达式中不是逗号表达式的是( )。

A. f= 3.2, 1.0 B. f>0, f<10 C. f=2.0, f>0 D. f=(3.2, 1.0)

17、 表达式18/4*sqrt(4.0)/8值的数据类型是( )。

A. int B. float C. double D. 不确定

18、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句C2=’A’+’6’-‘3’;后c2中的值是( )。

A. D B. 68 C. 不确定的值 D. C

19、以下用户标识符中,合法的是( )。

A. int B. nit C. 123 D. a+b

20、C 语言中,要求运算对象只能为整数的运算符是( )。

A. % B. / C. > D. *

21、若有说明语句:char c='\72';则变量c在内存占用的字节数是( )。

A. 1 B. 2 C. 3 D. 4

22、字符串"ABC"在内存占用的字节数是( )。

A. 3 B. 4 C. 6 D. 8

23、要为字符型变量 a赋初值,下列语句中哪一个是正确的( )。

A. char a="3"; B. char a=’3’; C. char a=%; D. char a=*;

24、下列不正确的转义字符是( )。

A. \\ B. \' C. 074 D. \0

二、填空题

1、C 语言中的逻辑值“真”是用 表示的,逻辑值“假”是用 表示的。

2、若x和n都是int型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为 。

3、设 c='w',a=1,b=2,d=-5, 则表达式 'x'+1>c, 'y'!=c+2, -a-5*b<=d+1, b==a=2的值分别为 、 、 、 。

4、设 float x=2.5,y=4.7; int a=7;,表达式 x+a%3*(int)(x+y)%2/4的值为 。

5、判断变量 a、b 的值均不为 0 的逻辑表达式为 。

6、求解赋值表达式 a=(b=10)%(c=6),表达式值、a、b、c 的值依次为 。

7、求解逗号表达式 x=a=3,6*a 后,表达式值、x、a 的值依次为 。

- 4 -

8、数学式a/(b*c)的 C 语言表达式 。

三、判断题

( )1、C语言中,非0值作为true,0作为false;若表达式取得true值时,结果为1, 取得false值时,为0。

( )2、为了确保表达式n/2的值为float型,可写成float(n/2)。

( )3、若有(float)x,则x变成float型变量。

( )4、若a=3,b=4,c=5,则d=!(a%b)的值是0。

( )5、a是实型变量,进行赋值a=10,因此实型变量中允许存放整型值

( )6、在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式

( )7、 执行表达式a=b后,在内存中a和b存储单元中的原值都将被改变,a的值已由原来的改变为b的值,b的值由原来改变为0

( )8、有a=3,b=5。执行a=b,b=a后,使a的值为5,b的值为3。

( )9、 getchar( )和scanf()均为输入函数,它们之间可通用,没有任何区别。 ( )10、执行语句scanf("%6.3f" ,&a)后,输入123456可使a的值为123.456 。 ( )11、 putchar()函数的作用是输出一串字符 。

( )12、 使用scanf()函数,在输入数据时,若遇非法输入则认为该数据输入结束。 ( )13、在C中所用的变量必须先定义后使用。

( )14、在 C 程序中,运算符%仅能用于整型数的运算。

( )15、APH与aph 分别表示不同的变量。

( )16、设x和y都是int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是交换x和y的值。

( )17、设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c>d)后n的值为0。 ( )18、C语言中无逻辑变量,也无逻辑表达式。

四、编程题:

1、 设长方形的高为 1.5,宽为 2.3,编程求该长方形的周长和面积。

2、 编写一个程序,将大写字母 A转换为小写字母 a。

- 5 -

4 最简单的C程序设计—顺序程序设计

一、单项选择题

1、printf("f=%3.2f%%",3.478);的输出结果是( )。

A. f=3.48% B. f=3.5% C. f=3.48% % D. f=347.8%

2、printf("%c,%d",'a', 'a');的输出结果是( )。

A. a,97 B. a 97 C. 97,a D. 97 a

3、有以下程序段

char c1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar( ); c6=getchar( );putchar(c1);putchar(c2);printf("%c%c\n",c5,c6);

程序运行后,若从键盘输入(从第1列开始):123<回车>45678<回车>。则输出结果是:( )

A.1267 B.1256 C.1278 D.1245

4、若一个 int 类型的数据占 2 字节,则程序段:int x= 1;printf("%u,%d",x,x);的输出结果是( )。

A. 65535, 1 B. 1,65535 C. 32767, 32768 D. 32768,32767

5、在TC 中getchar、putchar、printf、scanf 四个函数,均包含在头文件( )中。

A. math.h B. stdio.h C. stbio.h D. stdlib.h

6、复合语句是用( )括起来的语句组。

A. ( ) B. [ ] C. { } D. < >

7、下列格式符中,哪一个可以用于以八进制形式输出整数( )。

A. %d B. %8d C. %o D. %ld

8、下列格式符中,哪一个可以用于以十六进制形式输出整数( )。

A. %16d B. %8x C. %d16 D. %d

9、a 是int类型变量,c是字符变量,下列输入语句中哪一个是错误的( )。

A. scanf("%d,%c",&a,&c); B. scanf("%d%c",a,c);

C. scanf("%d%c",&a,&c); D. scanf("d=%d,c=%c",&a,&c);

10、要使double x; long a;的数据能正确的输出,输出语句应是( )。

A. printf("%d, %f",a, x); B. printf("%d, %1f",a, x);

C. scanf("%1d, %1f",&a, &x); D. printf("%1d, %lf",a, x);

二、程序改错题

1、以下程序的功能是,从键盘输入一个字符并鸣笛输出。

# include "stdio.h"

mian( )

- 6 -

{ char c

getchar(c);

putchar('007') ; /*鸣笛*/

c=putchar( );

2、以下程序的功能是,输入长方形的两边长(边长可以取整数和实数),输出它的面积和周长。 main

{ int a,b,s,l;

scanf("%d,%d",&a,&b);

s=a*b; l=a+b;

printf("l=%f,s=%f\n",l);

}

三、写出程序运行结果

1、 main( )

{ int a,b;

scanf("%2d%*2s%2d",&a,&b);

printf("%d\n",a+b);

}

运行时输入:12345678 ,输出结果是 。

2、 main( )

{ int a=3,b=5,x,y;

x=a+1,b+6; y=(a+1,b+6);

printf("x=%d\ny=%d\n",x,y);

}

输出结果是 __。

四、编程题

1、输入 3 个整数,计算它们的和与平均值,平均值的结果保留 2 位小数。

- 7 -

2、输入两个实数a,b,然后交换它们的值,最后输出(提示:要交换两个数得借助一个中间变量temp。首先让temp存放a的值,然后把b存入a,再把temp存入b就完成了)。

5 选择结构程序

一、单项选择题

1、假定所有变量均已正确定义,下列程序段运行后x 的值是( )。

a=b=c=0, x=35; if(!a) x--; else if(b); if(c) x=3; else x=4;

A. 34 B. 4 C. 35 D. 3

2、有以下程序段,其输出结果是:( )

inta,b,c; a=10;b=50;c=30; if(a>b) a=b,b=c; c=a; printf("a=%d b=%d c=%d\n",a,b,c);

A.a=10 b=50 c=10 B.a=10 b=50 c=30 C.a=10 b=30 c=10 D.a=50 b=30 c=50

3、有以下程序段,其输出结果是:( )

int x=1,y=2,z=3; if(x>y) if(y<z) printf("%d",++z); else printf("%d",++y);

printf("%d\n",x++);

A.331 B.41 C. 2 D.1

4、程序段int x=5,y=8,max; max=(x>y)?x:y; printf("%d",max);的输出结果是( )。

A. 5 B. 3 C. 8 D. 13

5、程序段 int x=3,a=1;switch(x) {case 4: a++;case 3: a++;case 2: a++;case 1: a++;} printf ("%d",a);的输出结果是( )。

A. 1 B. 2 C. 3 D. 4

6、下列语句应将小写字母转换为大写字母,其中正确的是( )。

A.if(ch>='a'&ch<='z') ch=ch-32; B.if(ch>='a'&&ch<='z')ch=ch-32;

C.ch=(ch>='a'&&ch<='z')?ch-32:’’; D.ch=(ch>'a'&&ch<'z')?ch-32:ch;

7、有以下程序段,其输出结果是:( )

int x=1,y=0,a=0,b=0;

switch(x)

{ case 1:

switch(y){ case 0:a++;break; case 1:b++;break; }

case 2:a++;b++;break;

case 3:a++;b++;

- 8 -

}

printf("a=%d,b=%d\n",a,b);

A.a=1,b=0 B.a=2,b=2 C. a=2,b=1 D. a=1,b=1

二、填空题

1、当a,b,c的值分别为3,4,5时,以下各语句执行后a,b,c的值为多少?

(1)if(a>c) {a=b;b=c;c=a;} else {a=c;c=b;b=a;}

执行后a,b,c的值为___,___,___

(2)if(a<c) a=c; else a=b;c=b;b=a;

执行后a,b,c的值为___,___,___

(3)if(a!=c) ; else a=c;c=b;b=a;

执行后a,b,c的值为___,___,___

2、若整数x分别等于95、87、100、43、66、79,则以下程序段运行后屏幕显示是什么? switch(x/10)

{ case 6:

case 7: printf("Pass\n"); break;

case 8: printf("Good\n"); break;

case 9:

case 10: printf("VeryGood\n"); break;

default: printf("Fail\n");

}

x等于 95时,程序段运行后屏幕上显示

x等于 87时,程序段运行后屏幕上显示

x等于100时,程序段运行后屏幕上显示

x等于 43时,程序段运行后屏幕上显示

x等于 66时,程序段运行后屏幕上显示

x等于 79时,程序段运行后屏幕上显示

三、阅读程序,写出运行结果

1、 void main ( )

{ int a=10, b=4, c=3;

if(a<b) a=b ;

if(a<c) a=c ;

printf("%d, %d, %d\n", a, b, c) ;

}

2、void main ( )

{ int x=100, a=10, b=20, ok1=5, ok2=0 ;

- 9 -

if(a<b) if(b!=15) if(!ok1) x=1; else if(ok2) x=10;

else x=-1;

printf("%d\n", x);

}

3、 int k,a=1,b=2;

k=(a++==b) ? 2:3;

printf("%d",k);

4、void main()

{ int s=1,k=0;

switch (s)

{ case 1: k+=1;

case 2: k+=2;

default: k+=3;

}

printf(“%d”,k);

}

5.void main()

{ int s=1,k=0;

switch (s)

{case1: k+=1;break;

case 2: k+=2;break;

default: k+=3;

}

printf(“%d”,k)

}

四、选做题

1、输入 3 个整数,按从大到小的顺序输出。

- 10 -

2、请将以下语句改写成switch语句。

if((s>0)&&(s<=10))

if((s>=3)&&(s<=6)) x=2;

else if((s>1)||(s>8)) x=3;

else x=1;

else x=0;

6 循环控制

一、单项选择题

1、for(i=1;i<9;i+=1);该循环共执行了( )次。

A. 7 B. 8 C. 9 D. 10

2、int a=2;while(a=0) a--;该循环共执行了( )次。

A. 0 B. 1 C. 2 D. 3

3、执行完循环 for(i=1;i<100;i++);后,i 的值为( )。

A. 99 B. 100 C. 101 D. 102

4、以下 for语句中,书写错误的是 。

A. for(i=1;i<5;i++) B. i=1;for(;i<5;i++)

C. for(i=1;i<5;i++); D. for(i=1;i<5;) i++;

5、( )语句,在循环条件初次判断为假,还会执行一次循环体。

A. for B. while C. do-while D. 以上都不是

6、有以下程序段 int i=5; do{ if(i%3==1) if(i%5==2) {printf("*%d",i); break; } i++; }while(i!=0); 其运行结果是( )

A.*2*6 B. *7 C.*5 D. *3*5

7、i、j已定义为 int 类型,则以下程序段中内循环体的执行次数是( ) 。 for(i=5;i;i--) for(j=0;j<4;j++){?}

A. 20 B. 24 C. 25 D. 30

8、以下不构成无限循环的语句或语句组是( )。

A.n=10; while(n);{n--;} B.n=0; while(1){n++;}

C.n=0; do{++n;}while(n<=0); D.for(n=0,i=1;;i++)n+=i;

9、有以下程序段int y=9; for(y>0;y--) if(y%3==0) printf("%d",--y);其运行结果是( )。

A. 875421 B.963 C.852 D. 741

10、有以下程序段:int i,j;for(i=3;i>=1;i--){for(j=1;j<=2;j++) printf("%d",i+j);printf("\n");}

其运行结果是( )。

A.2 3 4 B.4 3 2 C.2 3 D.4 5

- 11 -

3 4 5 5 4 3 3 4 3 4

4 5 2 3

二、判断题

( )1、do {??} while(0); 程序块至少会执行一次

( )2、语句 for(i=0;i=10;i++) {??}; 至多循环10次

( )3、for( ; ; )表示无限循环。

( )4、下面的循环不能正常结束: for (s=0,i=1; i<=10; ) { s=s+i; i++; } ( )5、continue语句是终止整个循环的执行。

( )6、对for(表达式1;;表达式3;)可理解为for(表达式1;1;表达式3;)。

( )7、下列程序段执行循环二次 x=-1; do {x=x*x;}while(!x);

( )8、下列程序段能计算s=10!的值 i=1;s=1; do {s=s*i;i++;} while(i<=10); ( )9、下列程序段将输出3和0 , int x=3; do{printf(“%d\n”,x-=2);}while(!--x));

三、程序填空题

1.有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天后卖完? main( )

{ int day,x1,x2;

day=0; x1=1020; while( ) { x2= ; x1= ; day++; }

printf("day=%d\n",day);

}

2.输入若干个字符,分别统计数字字符的个数、英文字母的个数,当输入换行符时输出统计结果,运行结束。

#include <stdio.h>

void main( )

{ int s1=0,s2=0;

char ch; while(( )!='\n')

{ if(ch>='0'&&ch<='9') s1++; if(ch>='a'&&ch<='z' || ) s2++;

} printf(“%d,%d”,s1,s2);

}

3.下面程序的功能是计算1-3+5-7+??-99+101的值,请填空。

- 12 -

#include <stdio.h>

main( )

{ int i=1,t=1,s=0;

for(i=1;i<=101; i=i+2 ) { ; ;}

printf(“%d\n”,s);

}

四、阅读下列程序,写出程序运行的输出结果

1.void main( )

{ int y=9;

for( ;y>0; y--)

if(y%3==0) { printf("%d", --y); continue;}

}

程序运行后输出结果为

2. main( )

{ int n1,n2;

scanf("%d",&n2);

while(n2!=0)

{ n1=n2%10; n2=n2/10; printf("%d",n1); }

}

程序运行后,如果从键盘上输入1298;则输出结果为

3. main ( )

{int s,i;

for(s=0,i=1;i<3;i++,s+=i);

printf("%d\n",s);

}

程序运行后输出结果为

4. #include <stdio.h>

void main( )

{ int s=1,t=1,a,n;

scanf("%d%d",&a,&n);

for(int i=1;i<n;i++)

{ t=t*10+1; s=s+t; }

s*=a; printf("SUM=%d\n",s);

}

程序运行后,如果从键盘上输入2,4;则输出结果为

- 13 -

五、程序改错

1、以下程序是显示[200,300]所有能被7整除的数,每行显示5个数,此程序有 5处错。 main( )

{ int i,n=0; /*n用来记录每行已打印数的个数*/

while(i<300)

{ if(i%7==0) break;

printf("%5d",i);

n=n+1;

if(n=5)/*满5个换行*/

{ printf("\n"); n=0; }

}

}

2、以下程序是求 1!+2!+3!+4!+5!+6!+7!的值,其中有 3 处错误。

main()

{ int i,s,t=0;

for(i=1;i<=7;i++)

{ s=0; t=t*i; s=s+t; }

printf("sum=d\n",s);

}

六、选做题

1.求序列2/1,3/2,5/3,8/5,13/8,21/13,的前20项之和。

2.请完成用一元人民币换成一分、两分、五分的所有兑换方案。

- 14 -

7 数组

一、单项选择题

1、int a[4]={5,3,8,9};其中 a[3]的值为( )。

A. 5 B. 3 C. 8 D. 9

2、以下 4 个字符串函数中,( )所在的头文件与其他 3 个不同。

A. gets B. strcpy C. strlen D. strcmp

3、以下 4 个数组定义中,( )是错误的。

A. int a[7]; B. #define N 5 long b[N]; C. char c[5]; D. int n,d[n];

4、字符数组进行初始化,( )形式是错误。

A. char c1[ ]={'1', '2', '3'}; B. char c2[ ]=123;

C. char c3[ ]={ '1', '2', '3', '\0'}; D. char c4[ ]="123";

5、在数组中,数组名表示( )。

A. 数组第 1 个元素的首地址 B.数组第 2 个元素的首地址

C. 数组所有元素的首地址 D.数组最后 1 个元素的首地址

6、若有以下数组说明,则数值最小的和最大的元素下标分别是( )。

int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12};

A. 1,12 B. 0,11 C. 1,11 D. 0,12

7、若有以下说明,则数值为 4 的表达式是( )。

int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’, d, g ;

A. a[g-c] B. a[4] C. a['d'-'c'] D. a['d'-c]

8、设有定义:char s[12] = "string" ; 则printf( "%d\n",strlen(s)); 的输出是( )。

A. 6 B. 7 C. 11 D. 12

9、设有定义:char s[12] = "string"; 则printf("%d\n ", sizeof(s)); 的输出是( )。

A. 6 B. 7 C. 11 D. 12

10、合法的数组定义是( )。

A. char a[ ]= "string " ; B. int a[5] ={0,1,2,3,4,5}; C. char a= "string " ;

D. char a[ ]={0,1,2,3,4,5}

11、合法的数组定义是( )。

A. int a[3][ ]={0,1,2,3,4,5}; B. int a[ ][3] ={0,1,2,3,4};

C. int a[2][3]={0,1,2,3,4,5,6}; D. int a[2][3]={0,1,2,3,4,5,};

12、下列语句中,正确的是 ( )。

A. char a[3][ ]={'abc', '1'}; B. char a[ ][3] ={'abc', '1'};

C. char a[3][ ]={'a', "1"}; D. char a[ ][3] ={ "a", "1"};

13、下列定义的字符数组中,输出 printf("%s\n", str[2]) ;的输出是( )。

static str[3][20] ={ "basic", "foxpro", "windows"};

- 15 -

A. basic B. foxpro C. windows D. 输出语句出错

14、下列各语句定义了数组,其中哪一个是不正确的( )。

A. char a[3][10]={"China","American","Asia"}; B. int x[2][2]={1,2,3,4};

C. float x[2][ ]={1,2,4,6,8,10}; D. int m[][3]={1,2,3,4,5,6};

15、数组定义为 int a[3][2]={1,2,3,4,5,6},值为6的数组元素是( )。

A. a[3][2] B. a[2][1] C. a[1][2] D. a[2][3]

16、下面的程序中哪一行有错误( )。

#include <stdio.h>

main()

{

float array[5]={0.0}; //第A行

int i;

for(i=0;i<5;i++)

scanf("%f",&array[i]);

for(i=1;i<5;i++)

array[0]=array[0]+array[i];//第B行

printf("%f\n",array[0]); //第C行

}

A. 第A行 B. 第B行 C. 第C行 D. 没有

17、下面哪一项是不正确的字符串赋值或赋初值的方式( )。

A. char *str; str="string"; B. char str[7]={'s','t','r','i','n','g'};

C. char str1[10];str1="string"; D. char str1[]="string",str2[]="12345678";

18、若有以下说明和语句,则输出结果是哪一项( )。 (strlen(s)为求字符串s的长度的函数)

char s[12]="a book!"; printf("%d",strlen(s));

A. 12 B. 8 C. 7 D. 11

19、若有以下说明和语句,则输出结果是( )。

char sp[]="\t\v\\\0will\n"; printf("%d",strlen(sp));

A. 14 B. 3 C. 9 D. 字符串中有非法字符

20、若有以下说明和语句,则输出结果是( )。

char str[]="\"c:\\abc.dat\""; printf("%s",str);

A. 字符串中有非法字符 B. \"c:\\abc.dat\"

C. "c:\abc.dat" D. "c:\\abc.dat"

二、填空题

1、C 语言中,数组的各元素必须具有相同的 ,元素的下标下限为 ,下标必须是正整数、0、或者 。但在程序执行过程中,不检查元素下标是否 。

2、C 语言中,数组在内存中占一片 的存储区,由 代表它的首地址。数组名是一个 常量,不能对它进行赋值运算。

- 16 -

3、执行 static int b[5], a[ ][3] ={1,2,3,4,5,6}; 后,b[4] = ,a[1][2] = 。

4、设有定义语句 static int a[3][4] ={{1},{2},{3}}; 则 a[1][0]值为 ,a[1][1] 值为 ,a[2][1]的值为 。

5、如定义语句为 char a[ ]= "windows",b[ ]= "95";,语句 printf("%s",strcat(a,b));的输出结果为 。

6、根据以下说明,写出正确的说明语句:men是一个有10个整型元素的数组。 step是一个有4个实型元素的数组,元素值分别为1.9, -2.33, 0, 20.6。 grid是一个二维数组,共有4行,10列整型元素。

7、 array是一个一维整形数组,有10个元素,前6个元素的初值是9,4,7,49,32,-5,正确的说明语句为: 。该数组下标的取值范围是从 到 (从小到大)。用scanf函数输入数组的第二个元素表示为: 。用赋值语句把39存入第一个元素表示为: 。把第六个和第四个元素之和存入第一个元素表示为: 。

8、 写出以下初始化数组的长度:

①int chn[3];数组chn的长度为 。

②float isa[]={1.0,2.0,3.0,4.0,5.0};数组isa的长度为 。

③int doom[8];数组doom的长度为 。

④float pci[4][2];数组pci的长度为 。

⑤int ast[3][3];数组ast的长度为 。

⑥int att[3][4];数组att的长度为 。

⑦float dell[][3]={{1,4,7},{2,5},{3,6,9}};数组dell的长度为 。

9、 若有以下整型的a数组,数组元素和它们得值如下所示:

数组元素: a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

元素的值: 9 4 12 8 2 10 7 5 1 3

①请写出对该数组的说明,并赋以上初值。

②该数组的最小下标值为 ,最大下标值为 。

③写出下面各式的值:a[a[9]]的值为 ;a[a[4]+a[8]]的值为 。

10、 字符串"ab\n\\012/\\\""的长度为 。

三、判断题

( )1、C允许对数组的大小作动态定义,即可用变量定义数组的大小。

( )2、字符数组不要求它的最后一个字符为‘\0’,甚至可以不包含‘\0’。

( )3、数组定义 int a[10]; 也可以写成 int a(10); 。

( )4、在对全部数组元素赋初值时,可以不指定数组长度。

( )5、定义s为5×6(5行6列)的数组可写成 float a[5,6];

( )6、数组定义 int a[10]; 表示数组名为a,此数组有10个元素。

( )7、数组定义 int a[10]; 表示数组名为a,此数组有10个元素,第10个元素为a[10]。 ( )8、static char c[]={“a book”}; 与static char c[]=“a book”; 等价。

( )9、static char c[]={'a' ,' ','b','o','o','k','\0'};与 static char c[]={'a' ,'

- 17 -

' ,'b','o','o','k'}; 等价。

( )10、设已有说明:static char c1[10],c2[10]; 下面程序片段是合法的。c1={“book”}; c2=c1;

四、程序填空题

1、输入 20 个数,输出它们的平均值,输出与平均值之差的绝对值为最小的数组元素。请填空。

#include <stdio.h>

void main( )

{

float a[20],pjz=0,s,t; int i,k;

for(i=0;i<20;i++) pjz+=a[i];

s=fabs(a[0]-pjz);

for(i=1;i<20;i++)

if(fabs(a[i]-pjz)<s)

{

s=fabs(a[i]-pjz); t=a[i];

}

}

2、以下程序以每行 10个数据的形式输出 a 数组,请填空。

void main( )

{

int a[50],i;

printf("输入50个整数:"); for(i=0; i<50; i++) scanf( "%d", );

for(i=1; i<=50; i++) { if( ) printf( "%3d\n" , ) ;

printf( "%3d",a[i-1]);

}

}

3、下面程序的功能是输出数组 s 中最大元素的下标,请填空。

void main( )

{

- 18 -

int k, p;

int s[ ]={1,-9,7,2,-10,3};

for(p=0,k=p; p<6; p++) if(s[p]>s[k]) ;

printf("%d\n" ,k);

}

4、这个程序输入了20个数存放在一个数组中,并且输出其中最大者与最小者、20个数的和及它们的平均值。请填空。

void main()

{ char array ;

int max,min,average,sum;

int i; for(i=0;i< ;i++)

{

printf("请输入第%d个数:",i+1); scanf("%d", );

}

max=array[0];

min=array[0]; for(i=0;i<= ;i++)

{

if(max<array[i])

if(min>array[i]) sum= ;

} average = ;

printf("20个数中最大值是%d,",max);

printf("最小值是%d,",min);

printf("和是%d,",sum);

printf("平均值是%d.\n",average);

}

五、选做题

1、阅读程序,分析程序的功能。

#include <stdio.h>

- 19 -

#include <string.h>

void main( )

{

char s[80];

int i ;

for(i=0; i<80; i++)

{

s[i]=getchar( );

if(s[i]=='\n') break;

}

s[i]='\0'; i=0;

while(s[i]) putchar(s[i++]);

putchar(‘\n’);

}

2、阅读程序,分析程序的功能。

#include <stdio.h>

#include <string.h>

void main( )

{

char str[10][80], c[80];

int i;

for(i=0; i<10; i++) gets(str[i]);

strcpy(c, str[0]) ;

for(i=1; i<10; i++) if(strlen(c) <strlen(str[i])) strcpy(c,str[i]); printf( "%s\n", c);

printf( "%d\n", strlen (c));

}

3、阅读程序,分析程序的功能。

#include <stdio.h>

#include <string.h>

void main( )

{

char a[10][80], c[80];

int i, j, k;

for(i=0; i<10; i++) gets(a[i]);

for(i=0; i<9; i++)

{

k=i ;

for(j=i+1; j<10; j++)

- 20 -

if(strcmp (a [j], a[k])<0) k=j;

if(k!=i )

{strcpy(c,a[i]) ; strcpy(a[i], a[k]); strcpy(a[k],c);} // 字符串交换

}

for(i=0; i<10; i++) puts (a[i]);

}

4、阅读程序,写出运行结果

#include <stdio.h>

void main( )

{

int a[6]={12,4,17,25,27,16},b[6]={27,13,4,25,23,16},i,j; for(i=0;i<6;i++)

{

for(j=0;j<6;j++) if(a[i]==b[j])break;

if(j<6) printf("%d ",a[i]);

}

printf("\n");

}

5、阅读程序,写出运行结果。

#include <stdio.h>

void main( )

{

char a[8],temp; int j,k; for(j=0;j<7;j++) a[j]='a'+j; a[7]='\0';

for(j=0;j<3;j++)

{

temp=a[6];

for(k=6;k>0;k--) a[k]=a[k-1];

a[0]=temp;

printf("%s\n",a);

}

}

6、阅读下列程序,写出程序运行的输出结果。

#include <stdio.h>

#include <string.h>

void main( )

- 21 -

{

char str1[ ]="*******";

for(int i=0;i<4;i++)

{

printf("%s\n",str1);

str1[i]=' ';

str1[strlen(str1)-1]='\0';

}

}

7、该程序的运行结果是: min= ,m= ,n= 。

void main()

{

float array[3][4]={

{3.4,-5.6,56.7}, {56.8,999.,-.0123}, {0.45,-5.77,123.5}, {43.4,0,111.2} }; int i,j;

int min;

int m,n;

min = array[0][0];

m=0;n=0;

for(i=0;i<3;i++)

for(j=0;j<4;j++)

if(min > array[i][j])

{

min = array[i][j];

m=i;n=j;

}

printf("min=%d,m=%d,n=%d\n",min,m,n);}

8、写出下面这个程序的输出结果:

void main()

{

char str[]="ABCDEFGHIJKL";

printf("%s\n",str); 屏幕上显示

printf("%s\n",&str[4]); 屏幕上显示

str[2]=str[5];

printf("%s\n",str); 屏幕上显示

str[9]='\0';

printf("%s\n",str); 屏幕上显示

}

- 22 -

8 函数

一、单项选择题

1、C 语言总是从( )函数开始执行。

A. main B. 处于最前的 C.处于最后的 D. 随机选一个

2、函数在定义时,省略函数类型说明符,则该函数值的类型为( )。

A. int B. float C. long D. double

2、以下( )函数,真正地没有返回值。

A. int a(){int a=2;return (a);} B. void b(){printf("c");}

C. int a(){int a=2;return a;} D. 以上都是

3、在 C 语言中,有关函数的说法,以下正确的是( )。

A. 函数可嵌套定义,也可嵌套调用 B. 函数可嵌套定义,但不可嵌套调用

C. 函数不可嵌套定义,但可嵌套调用 D. 函数不可嵌套定义,也不可嵌套调用

4、以下函数调用语句中,含有实参的个数为( )。

fun((2,3),(4,5+6,7));

A. 1 B. 2 C. 5 D. 6

5、函数调用可以在( )。

A. 函数表达式中 B. 函数语句中 C. 函数参数中 D. 以上都是

6、被调函数返回给主调函数的值称为( )。

A. 形参 B. 实参 C. 返回值 D. 参数

7、 ( ),可以不进行函数类型说明。

A. 被调函数的返回值是整型或字符型时 B. 被调函数的定义在主调函数定义之前时

C. 在所有函数定义前,已在函数外预先说明了被调函数类型 D. 以上都是

8、被调函数通过( )语句,将值返回给主调函数。

A. if B. for C. while D. return

9、被调函数调用结束后,返回到( )。

A.主调函数中该被调函数调用语句处

B.主函数中该被调函数调用语句处

C.主调函数中该被调函数调用语句的前一语句

D.主调函数中该被调函数调用语句的后一语句

10、以下对 C语言函数的有关描述中,正确的是( )。

A. 在 C 中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B. C函数既可以嵌套定义又可递归调用

C. 函数必须有返回值,否则不能使用函数

D. C程序中有调用关系的所有函数必须放在同一个源程序文件中

11、C 语言中函数的隐含存储类型是( )。

A. auto B. static C. extern D. 无存储类型

12、能把函数处理结果的两个数据返回给主调函数,在下面的方法中不正确的是( )。

- 23 -

A. return 这两个数 B.形参用两个元素的数组

C. 形参用两个这种数据类型的指针 D.用两个全局变量

13、C语言可执行程序从什么地方开始执行 ( )。

A. 程序中第一条可执行语句 B. 程序中第一个函数

C. 程序中的main函数 D. 包含文件中的第一个函数

14、有一个函数原型为abc(float x,float y);,则该函数的返回类型为( ) 。

A. void B. double C. int D. float

二、填空题

1、变量的作用域主要取决于变量 ,变量的生存期既取决于变量 ,又取决于变量 。

2、说明变量时,若省略存储类型符,系统默认其为 存储类别,该存储类别的类型符为: 。

3、静态型局部变量的作用域是 ,生存期是 。

4、函数中的形参和调用时的实参都是数组名时,传递方式为 ,都是变量时,传递方式为 。

5、函数的形式参数的作用域为 ,全局的外部变量和函数体内定义的局部变量重名时, 变量优先。

6、若自定义函数要求返回一个值,则应在该函数体中有一条 语句,若自定义函数要求不返回一个值,则应在该函数说明时加一个类型说明符 。

7、若函数的形式参数是指针类型,则实参可以是 或 。

8、函数的参数为 char *类型时,形参与实参结合的传递方式为 。

9、函数的实参为常量时,形参与实参结合的传递方式为 。

10、下面这个函数的功能是求两个整数的积,并通过形参传回结果,请填空。

void mul(___x,___y,___result)

{ =x*y;

}

三、判断题

( )1、函数说明指的是在程序中设定一个函数模块。

( )2、形参只有在被调用时才分配存储空间。

( )3、在C的函数中,最好使用全局变量。

( )4、在调用函数时,实参传值给形参,调用结束时,形参值传给实参。

( )5、所有函数定义都是并行的,相互独立的。

- 24 -

( )6、函数的隐含存储类型是extern。

( )7、形参可以是常量、变量或表达式。

( )8、函数调用可以作为一个函数的形参。

( )9、C语言规定,实参应与其对应的形参类型一致。

( )10、定义函数时,形参的类型说明可以放在函数体内。

四、程序填空题

1、对数组按值从大到小的顺序排序后输出,请填空。

#include <stdio.h>

void main()

{

float a[7]={2,6,3,8,3,12,9};

int i ;

void sort(float*,int); ;

for(i=0;i<7;i++) printf("%f ",a[i]);

printf("\n");

} void sort( )

{

int i,j,k; float t;

for(i=0;i<n-1;i++)

{

k=i;

for(j=i+1;j<n;j++) if( ) k=j;

{ t=*(p+i); *(p+i)=*(p+k); *(p+k)=t; }

}

}

2、下列函数在 n 个元素的一维数组中,找出最大值、最小值并传送到调用函数,请填空。 #include <stdio.h>

void find(float *p, int max, int min, int n)

{

int k; *max=*p;

for(k=1;k<n;k++)

{

- 25 -

t=*(p+k); if( ) *max=t; if(t<*min) *min=t; }

}

五、选做题

1、写出下列程序运行结果

main()

{

int i=1,p;

p=fun(i,i+1);

printf("%d\n",p);

}

int fun(int a,int b)

{

int f;

if(a>b)

f=1;

else if(a==b)

f=0;

else

f=-1;

return f;

}

2、键盘输入 abcdef<CR>

#include <stdio.h>

void fun( )

{

char c ;

if((c=getchar( ))!='\n') fun( ) ;

putchar(c);

}

void main( )

{ fun( ); }

3、写出下列程序运行结果

#include <stdio.h>

- 26 -

#define C 5

int x=1,y=C;

void main( )

{

int x;

x=y++; printf("%d %d\n", x,y);

if(x>4) { int x ; x=++y; printf("%d %d\n",x,y) ; } x+=y--;

printf("%d %d\n",x,y);

}

4、写出下列程序运行结果

#include <stdio.h>

int c , a=4 ;

func(int a , int b)

{ c=a*b ; a=b-1 ; b++ ; return (a+b+1) ; } void main( )

{

int b=2 , p=0 ; c=1 ;

p=func(b , a) ;

printf("%d,%d,%d,%d\n", a,b,c,p) ;

}

5、写出下列程序运行结果

unsigned fun6(unsigned num)

{

unsigned k=1;

do { k*=num%10; num/=10; }

while(num);

return k;

}

void main( )

{

unsigned n=26;

printf("%d\n", fun6(n));

}

6、写出下列程序运行结果

#include <stdio.h>

int max(int a,int b);

- 27 -

main()

{

int x,y,z,t,m;

scanf("%d,%d,%d",&x,&y,&z);

t=max(x,y);

m=max(t,z);

printf("%d",m);

}

int max(int a,int b)

{

if(a>b)

return(a);

else

return(b);

}

运行时若输入:10,15,9 则输出:

运行时若输入:300,129,300 则输出:

7、写出下列程序运行结果

#include <stdio.h>

long sum(int a,int b);

long factorial(int n);

main()

{

int n1,n2;

long a;

scanf("%d,%d",&n1,&n2);

a=sum(n1,n2);

printf("a=%1d",a);

}

long sum(int a,int b)

{

long c1,c2;

c1=factorial(a);

c2=factorial(b);

return(c1+c2);

}

long factorial(int n)

{

long rtn=1;

int i;

- 28 -

for(i=1;i<=n;i++)

rtn*=i;

return(rtn);

}

运行时若输入:2,3 则输出:

运行时若输入:0, 5 则输出:

8、

#include <stdio.h>

int s();

int x,y;

main()

{

int n;

x=1;y=2;

n=s();

printf("x=%d,y=%d,n=%d",x,y,n);

}

int s()

{

int z;

x=3;y=4;

z=x+y;

return(z);

}

程序运行后输出:

9 预处理命令

一、单项选择题

1、 以下不正确的叙述是( )

A.宏替换不占用运行时间。 B.宏名无类型。

C.宏替换只是字符替换。 D.宏名必须用大写字母表示。

2、 C语言的编译系统对宏命令的处理( )

A.在程序运行时进行的。

B.在程序连接时进行。

C.和C程序中的其它语句同时进行编译的。

- 29 -

D.在对源程序中其它语句正式编译之前进行的。

3、以下程序的输出结果是( )

A.15 B.100 C.10 D.150

#define MIN(x,y) (x)<(y)?(x):(y)

void main( )

{

int I,j,k;

i=10;j=15;k=10*MIN(i,j);

printf(“%d\n”,k);

}

4、以下叙述中正确的是( )

A.用#include包含的文件的后缀必须是“.h”。

B.若一些源程序中包含某个头文件;当该文件有错时,只需对该头文件进行修改,包含此头.文件的所有源程序不必重新进行编译。

C.宏命令行可以看作是一行C语句。

D.预处理是在编译之前进行的。

5、以下叙述中正确的是( )

A.源程序中所有的行都参加编译。

B.宏定义常量与const定义常量是一样的。

C.宏定义可以嵌套定义,即在宏定义中的字符串可以引用另一个宏定义的标识符。

D.以上都不正确。

二、填空题

1、以下程序中for 循环执行的次数是 。

#define N 2

#define M N+1

#define NUM (M+1)*M/2

void main()

{

int i;

for(i=1;i<=NUM;i++);

printf(“%d\n”,i);

}

2、以下程序的输出结果是 。

#define A 3

#define B(a) ((A+1)*a)

void main()

{

int x;

- 30 -

x=3*(A+B(7)); printf(“x=%d\n”,x);

}

三、判断题

( )1、宏替换时先求出实参表达式的值,然后代入形参运算求值。

( )2、宏名无类型,其参数也无类型。

( )3、使用宏次数多时,宏展开后源程序不会变长。

( )4、调用函数只能得到一个返回值,而用宏可以得到几个结果。

( )5、在一被包含文件中又可以包含另一被包含文件,文件包含是可以嵌套的。

( )6、用一个指定的标识符来代表一个字符串,它的一般形式为 #define 标识符 字符串;

( )7、在宏定义#define PI 3.l4l59中,如果将1误输成小写的L,则编译时不出错,运行时出错。

( )8、取消PI的宏定义为 #undef PI 0

( )9、#include和 #define不是C语句。

10 指针

一、单项选择题

1、若有定义:int x,*pb;则以下正确的表达式是( )

A.pb=&x B.pb=x C.*pb=&x D.*pb=*x

2、以下程序的输出结果是( )

A.因变量无定义输出不定值 B.0 C.-1 D.1

#include<stdio.h>

void main()

{printf(“%d\n”,NULL);}

3、以下程序的输出结果是( )

A.5,2,3 B.-5,-12,-7 C.-5,-12,-17

#include<stdio.h>

void sub(int x,int y,int *z)

{*z=y-x;}

void main()

{

int a,b,c;

sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);

printf(“%d,%d,%d\n”,a,b,c); D.5,-2,-7

- 31 -

}

4、以下程序的输出结果是( )

A.4 B.6 C.8 D.10

#include<stdio.h>

void main()

{

int k=2,m=4,n=6;

int *pk=&k,*pm=&m,*p;

*(p=&n)=*pk*(*pm);

printf(“%d\n”,n);

}

5、已知指针p的指向(图一)的a[1],则执行语句*p++;后,*p的值是(

A.20 B.30 C.21 D.31

C语言全部章节习题集本

6、已知指针p的指向(图一)的a[1],则表达式*++p的值是( )。

A.20 B.30 C.21 D.31

7、已知指针p的指向(图一)的a[1],则表达式++*p的值是( )。

A.20 B.30 C.21 D.31

8、以下程序的输出结果是( )。

A.23 B.24 C.25 D.26

#include<stdio.h>

void prtv(int *x)

{printf(“%d\n”,++*x);}

void main()

{

int a=25;prtv(&a);

}

9、以下程序的输出结果是( )。

A.运行出错 B.100 C.a的地址 D.b的地址

#include<stdio.h>

void main()

{

int **k,*a,b=100;

a=&b;k=&a;

printf(“%d\n”,**k);

}

10、以下程序运行后,输出结果是( )。

A. 8 B. 7 C. 6 D.5 。

- 32 - )

#include<stdio,h>

ss(char *s)

{ char *p=s;

while(*p) p++;

return(p-s);

}

main()

{ char *a="abded";

int i;

i=ss(a);

printf("%d\n",i);

}

二、填空题

1、若有定义:char ch;

(1)使指针p指向变量ch的定义语句是 。

(2)若已定义char *p;,使指针p指向变量ch的赋值语句是 。

(3)在(1)的基础上,通过指针p给变量ch读入字符的scanf调用语句是 。

(4)在(1)的基础上,通过指针p给变量ch赋字符’a’的语句是 。

(5)在(1)的基础上,通过指针p用格式输出函数输出ch中字符的语句是 。

2、以下程序输出的是 。

void main( )

{ int i=3, j=2;

char *a="DCBA";

printf("%c%c\n",a[i],a[j]);

}

3、以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。

void exchange(int *x, int *y)

{ int t; t=*y; *y= ; *x= ;

}

三、判断题

( )1、若定义 int a[5],*p=a; 则 *&a[5] 是对a数组元素的正确引用。

( )2、若定义 int a[2][3]; 则 *(*(a+i)+j) 是对a数组第i行第j列元素的正确引用。

- 33 -

( )3、指针变量用于存放指针所指对象的地址。

( )4、指针就是变量的地址。

( )5、通过指针可以间接引用指针所指的变量。

( )6、“指针”与“指针变量”是同一个概念。

( )7、一个指针变量只能指向同一类型的变量。

( )8、可以给指针变量赋一个整型值。

( )9、所谓数组的指针就是指数组元素的地址。

五、选做题

程序填空:

1、下面程序的输出结果是 。

char b[]="ABCD";

void main()

{ char *chp;

for(chp=b; *chp: chp+=2) printf("%s",chp); printf("\n");

}

2、下面是一个字符串连接函数,请补充完整。

void mystrcat(char *s1,char *s2)

{

char *p,*q;

for(p=s1; ; );

for( ;*q;q++) ;

;

}

- 34 -

更多相关推荐:
解题报告范例

IOI20xx国家集训队第二次作业GCJ09Final解题报告江苏省常州高级中学吴翼DoublysortedGridGCJ09FinalProblemC简要描述给出一个NM的方格纸在方格内可以任意填写字母a到z...

结题报告范例

潍坊学院毕业论文结题报告

面试题范例

面试题范例此时有宇宙飞船你会进去吗您可能已经读过求职方面的书并在心里反复温习了面试标准问题的答案但是面试官提的是其他问题一些你没有想到的问题这时该怎么办这样的问题可能是最难的因为它们会表明你的思维敏捷程度它们可...

面试题范例

面试题范例此时有宇宙飞船你会进去吗您可能已经读过求职方面的书并在心里反复温习了面试标准问题的答案但是面试官提的是其他问题一些你没有想到的问题这时该怎么办这样的问题可能是最难的因为它们会表明你的思维敏捷程度它们可...

提供两个结题报告范例

提供两个结题报告范例以供参考多元文化背景下学生生活方式及价值观教育研究课题研究方案课题主持人南京师大教科院冯建军一问题的提出与过去单一稳定封闭的环境不同当今社会的开放使我们已经进入了一个多元文化的时代文化的多元...

面试题范例

HR工具文本范例面试题范例此时有宇宙飞船你会进去吗您可能已经读过求职方面的书并在心里反复温习了面试标准问题的答案但是面试官提的是其他问题一些你没有想到的问题这时该怎么办这样的问题可能是最难的因为它们会表明你的思...

销售人员轮训培训工作总结

销售人员轮训第一期班培训工作总结9月22日至9月24日人保财险宁波市分公司销售人员轮训第一期培训班在奉化银龙山庄培训基地举办这是公司为提高销售队伍素质和业务技能提升销售能力而举办的一次覆盖式培训是落实销售队伍团...

局办轮训人员工作总结

局办轮训人员工作总结办文认真做好各类公文的草拟修改工作主要草拟了20xx年年中院长交流会通知及区领导讲话稿20xx年度年终院长绩效考核通知及细则7期番禺区医改简报医院创三甲工作省市领导讲话稿区卫生系统文化建设调...

20xx年新员工轮训总结报告

20xx年新员工轮训总结报告备注要求提交电子版20xx字以上并留存政工人事部备案

轮训工作总结

轮训工作总结,内容附图。

基层党组织书记集中轮训情况汇报

星子县关于开展基层党组织书记加强和创新社会管理集中轮训工作的情况总结根据市委组织部关于开展全市基层党组织书记加强和创新社会管理集中轮训工作的通知要求县委组织部科学谋划部署精心组织实施于4月底圆满完成全县437名...

轮值轮训工作总结

轮值轮训工作总结轮值轮训gt工作总结一年11月3日18日我有幸参加了县局本年度第二期轮值轮训战训合一学习班的总结轮值轮训是为民警的理论充电是对民警素质的再一次提高是为了提高广大民警基础知识基本体能基本技能和战术...

同题集中(6篇)