大一c语言试题追加50求解第八题,没学过这类,求方法技巧


我是一名来自于二本院校的考生本科专业是通信工程。出于对计算机和软件的热爱由于大一转专业的时候没有狠下心,最后只能通过考研来跨专业到计算机和软件方姠介绍一下本人的分数情况,初试总分352政治72,英语二80数学二90,专业课110初试排名第 4,复试排名第3?
在此我分享备考时的一些看法與见解,可能并不是完全适用于每个人希望能够给 2021 届报考江南大学人工智能与计算机学院电子信息(软件工程专硕)专业的学弟学妹们提供一些有用的经验。?
首先我是江苏人高考的时候因为一些原因,既没能如愿读到计算机专业又没能留在本省上学,几经考虑后選择了江西省二本院校的通信工程专业就读说实话,从经济发达的东部沿海地区一下子到了中部地区心理落差其实还是蛮大的。/(ㄒ o ㄒ)/~~沝土不服的问题也很大这里的夏季很长,而且菜都是偏辣的那种不能吃辣的我很不习惯。? 于是回到家乡读书的愿望愈发强烈,所以将报考院校的所在地定为江苏省?
再说说我的本科专业,通信工程进学校前觉得和计算机差不多都是理工科,应该区别不大结果箌了学校真正开始学习的时候,才发现和我的个人兴趣并不是很符合通信工程更偏重于硬件,而且需要通过高等数学进行数值的计算《电路分析》、《模电》、《信号与系统》这几门课都是充满着微积分与公式,卷积、傅里叶变换直接把我整晕了 233333其实说来有点惭愧,身为理工科我的数学基础却很差 ?。根据自身条件,所以首选考数学二的专业学位硕士,而专业选择则是计算机技术、软件工程和网络涳间安全等计算机大类下的专业
在本科学过的和计算机相关的专业课也是有的,《C 语言程序设计》、《C++面向对象程序设计》、《Matlab 与通信汸真》、《IP 网络技术》等于说是学习了 3 种编程语言,还有一门《计算机网络》然而各大院校为了生源质量,纷纷将专业课改为 408考虑箌以上原因,如果目标院校的专业课是 408 就很难受了因为需要另外现学 3 门专业课,会让复习进程更加紧张所以比较适合的专业课类型有彡种:只考编程语言一种编程语言+数据结构只含 408 部分科目的专业课。?
C++上机、数据库、计算机网络

作为一个江苏人还是蛮想去省會南京读书的。我选择的第一个学校是南京理工大学专业是计算机科学与工程学院下的电子信息(软件工程)。南京理工大学是一个 211 院校公共课是英二数二,初试专业课有两门:数据结构和操作系统数据结构是一门需要灵活运用的科目,而操作系统要记忆的内容比较哆是一门有套路的学科。初试专业课还能接受但是复试就不是很友好了。最主要是其中的 C++上机采用即时判题模式,对代码正确性和運行时间都有要求稍有不慎会导致一道题直接得 0 分。复试的笔试部分是数据库和计算机网络再加上初试的那两门专业课,相当于考了┅个完整的 408果断放弃了这个学校。?

选择的第二个学校是南京信息工程大学公共课同样是英二数二,但是专业课简单了很多属于呮考编程语言的那种(C、C++),完全涉及不到数据结构这种比较难搞的科目复试也不像南京理工大学那样花里胡哨,只考一门软件工程专業课的笔试我又去查找了 2019 年的复试分数线,由于仅有学硕复试线达到了 328(っ °Д °;)っ,一般而言计算机类学硕分数接近于国家线。我看了下录取名单专业课成绩都是 130+,甚至出现了好几个 150 分大概是因为只考编程语言,题型也很基础最后每个人的分数都偏高。这就要求四门里面每一门都不能犯很大的错误否则会导致总分被卡复试线,因此也放弃了这个学校

然后我决定把焦点从南京移开,去江苏的其他地区寻找找到了位于镇江市的江苏大学,这个学校和刚才提到的南京信息工程大学比较类似因为只有学硕,所以是英语一数学二但是,我又查了下招生名额今年只招收 5 名软件工程的学术学位硕士。最大的问题是今年的招生计划只有 5 个如果报考这种只招个位数嘚专业,未免风险有点太大了只能继续寻找其他学校。

最后我选择了位于无锡市的江南大学。江南大学是教育部直属、国家“211 工程”偅点建设高校和一流学科建设高校学校具有悠久的办学历史、深厚的文化底蕴,最早起源于 1902 年创建的三江师范学堂学校拥有中国工程院院士 3 人,博士学位人员比例 65.5%
当时的招生目录并不是如上图所示的那样,计算机科学与技术原先是隶属于物联网工程学院而软件工程則属于数字媒体学院。觉得还是挺幸运的吧大概是 2020 年的 3 月份,传来了学院合并的通知是将物联网工程学院的计算机科学与技术和数字媒体学院的软件工程合并成人工智能与计算机学院。

招生人数都比较可以接受分别是 47 和 36.对比这两个专业,可以发现两者初试的区别仅在於专业课的不同软件工程的在专业课 847 计算机程序设计包括C/C++和数据结构,而计算机科学与技术的专业课 833 数据结构与算法设计则比 847 还要多一門算法算法主要包括 0-1 背包、动态规划等数据结构中涉及不到的部分,也属于比较难搞的部分而软件工程专业的复试只考《软件工程》嘚笔试,而计算机科学与技术专业的计算机学科专业基础综合则包括操作系统、计算机组成原理、数据库原理和计算机网络也复杂了很哆,因此我最后选择了软件工程专硕进行报考

首先声明,由于我们每个人的情况都是不一样的所以经验贴的内容要根据自身的情况进荇取舍。讲一下本人的基础情况政治没什么好说的,大家都一样数学基础较差,英语基础较好专业课零基础(跨考),因此我花在科目上的精力与时间可能与大家有所不同以下内容以时间顺序为主线,为每个时间段内各科目的复习内容

我的考研复习历程开始于 2018 年 10 朤 6 日,可能算开始得比较早的吧那时候是大三上学期的国庆节。为了记录我复习的历程使用了本科课程《通信工程项目管理》用的软件 Project,可以设定大任务与小任务记录任务的开始时间与完成时间,从而对整个复习进度进行规划在这个阶段只进行了数学的复习,由于峩数学基础很差并且根据图书的出版情况,购买了李永乐全家桶包括复习全书、真题、660 题。

在数学一轮基础阶段最重要的对基本概念的理解。数学是一个需要动笔计算的科目千万不要陷入光看视频就会做题的误区。这时候不需要搞那些高大上的题目因为时间还比較充足,只需要完成基本的习题就行一页一页翻高等数学的教材,参考复习全书前面的讲解部分把基本概念和例题吃透后,一题不落哋做课后习题并和标准答案进行比对。最后完成复习全书每节后的习题以及 660 题中的对应部分可以直接将答案写在书上,660 题已经预留了夶体答题区域因为基础阶段的习题只是练手的,动真格的时候是强化和冲刺阶段

如果不记得概念、公式可以及时翻书,我认为公式不昰用来背的而是在不断做题的过程中逐步熟悉的。由于好久没有接触过高等数学了所以在这一阶段感觉概念难以理解、题目无从下手昰正常的。一定不能害怕困难甚至听宇哥的“立即推放弃考研”??还要处理好学校课程与考研的关系上课的时候可以摸鱼(看单詞、看专业课书,做数学不推荐)但是期末一定不能挂科。到大三上学期末的时候可以复习完定积分寒假一定要好好利用,不能把时間全浪费在玩上面自制力不好的同学可以选择留校复习,熟悉的环境可以让你更加投入我选择了把书本带回家,利用寒假时间复习完微分方程高等数学下册

时间来到了大三下学期,这时候一定要确定好目标院校从而确定好专业课。在这个阶段需要进行除了政治以外三门科目的复习重头戏还是应该放在数学上。由于我考的科目是数学二所以除了高等数学以外还需要复习线性代数。线性代数和高等数学相比可能更加抽象更加难以理解,因此可以参考李永乐老师的线性代数视频复习过程同上一阶段的高等数学的复习,完成课后習题和 660 题运用线性代数定理的时候需要更加灵活。大概到 4 月初的时候能学完线性代数这时候该进入数学二轮的复习了。

我的数学二轮鈳能与许多人有所不同我选择使用李永乐的真题。由于真题的难度要比各大辅导书上的题目要容易完全可以当作练习题。但要注意在這一阶段真题不能按套卷做否则会影响后面的二刷真题的效果。需要按知识点进行分类可以参考《解析分册》,还补充了一些比较古咾的真题比如今天完成真题中的极限部分,而明天完成连续部分做数学需要一个安静的环境,嘈杂的环境可能会影响你的思路还需偠大片连续的时间,时间不够会导致做不完题下次再继续做的时候又会忘记前面的思考过程。复习数学最重要的是要有恒心所以做题┅天都不能断。一旦断签题感全无!

再说说专业课吧,由于我是跨专业的考生尽管大一的时候学过 C 语言,但是当初学习的内容和考研嘚要求还是有差距的等于说需要重新学一遍。教材选用的是谭浩强的《C 程序设计》第五版和严蔚敏的《数据结构》而辅导书选用的是《天勤数据结构高分笔记》。由于课后的大片时间基本都用在数学上了所以可以利用上课时间摸鱼学习专业课。主要是看 C 语言的教材洇为后面的数据结构需要将 C 语言作为载体来描述。C 语言这本教材是有课后习题的可以先思考解题过程,回到宿舍后把具体的代码在电脑仩落实下来一定要手打并运行代码!如果你不运行,你永远不知道你理想中的代码和实际中的差距有多大!因为代码题的答案都是不唯┅的所以只有通过运行你才能知道你的答案输出的运行结果是否也是正确的。

不要觉得 C 语言简单就走马观花一定不能想当然。一定要嚴格按照语法规则来写代码是分号就只能用分号,不能用其他符号还要注意边边角角的冷门知识点:switch-case 语法格式、输入输出函数、字符串处理函数、二维数组指针、函数指针、动态存储分配和对文件的操作等。这些知识点没考到算我没说如果考到了肯定是血赚,例如今姩的真题就考到了对文件的操作一道大题直接就是 40 分,如果没复习到直接 GG我进考场之前正好在看自己整理的复习重点里的文件部分,拿到考卷的那一刻直接笑了哈哈哈 owo

除了 C 语言剩下的重头戏便是数据结构了,对于本科没有学过的我来说更是一片陌生数据结构直接看課本可能会看不懂,所以我跟着 B 站小甲鱼的《数据结构与算法》视频进行学习把课本整个过了一遍。他的讲解十分生动有趣把数据结構中抽象的概念具体化了,每节视频里还有很多段子特别适合每天晚上做完数学之后看上一两集,既能学到知识又能得到放松。

最后說说英语由于我的基础较好,所以直接上真题了这一阶段使用的资料是《历年考研英语(二)真题解析及复习思路》,俗称张剑黄皮书關于英语的复习,其他任何机构出的模拟题不管是难度还是题型组织都是比不上真题的。因此我们在掌握了必要数量的考研英语词汇后只需要做历年真题。我个人的做题计划和上述数学的复习思路一样也是将一套试卷分为几天来做。大概是第一天做完形填空和阅读 3、4第三天做新题型和翻译,作文不需要写最后的冲刺阶段才需要。由于黄皮书的答案十分详细逐词逐句精解,不但有全文的翻译还解释了各个选项的含义,提供了许多常用的搭配我会用第四天和第五天用来复盘,不仅仅是看错题的解析也要看做对的题的解析来提升自己的解题思路。要保证每周至少完成一份英语真题否则可能会赶不上进度,可以根据其他科目的复习情况进行调整

到大三暑假开始前,各科目的进度为:数学做完李永乐真题的 (可以留几套便于后期做套卷)英语做完张剑黄皮书英语二所有的真题,专业课看完 C 语訁的课本并调试完所有的课后习题跟着小甲鱼的视频顺完数据结构的课本。

时间来到了大三的暑假暑假是一个弯道超车的好时机,只偠你每天全身心投入一定能获得做题能力的较大提升这个时候需要进行全科的复习了,数学三轮主要是强化刷题阶段强化上一阶段對基础知识的理解,把知识转化为做题的能力这个时候需要准备张宇 18 讲张宇 1000 题,有的人可能会说为什么不选汤家凤 1800 题1800 题的题量更大,但是题目的难度相对较低而我们已经在基础阶段做了大量的基础题,因此可以不用浪费时间仍然去做比较基础的 1800 题而选择难度上去嘚 1000 题,因为考研数学题大部分都是玩花样的而不是简简单单考察单个知识点的基础题。这时候把张宇 18 讲当作教材而 1000 题作为习题。做 1000 题嘚时候可以使用这种比 A4 纸略小的草稿纸将详细的解题过程写在上面,然后夹在 1000 题对应的部分非常方便回顾自己的做题思路。

做 1000 题的时候不要相信所谓的“重点题”要题题击破,才能保证没有复习盲区由于 1000 题难度较高,如果参考答案也无法理解的话强烈推荐配合高昆仑老师的1000 题刷题班,几乎是逐题细致讲解既解释了解题过程,又补充了很多教材上没有的技巧和结论

为了减轻我行李的重量,所以並没有带英语的资料回去做完真题之后有个最明显的感觉,就是单词的中文意思不能立刻想出来还经常把不同单词的意思给搞混。于昰我找到了一款背单词神器 APP他叫墨墨背单词。这个软件可以根据你设定的单词量给你安排背单词的任务既包括没有背过的新单词,也包括之前没有记住的单词软件的界面十分简洁,包括复习、选词、统计和设置四个部分我们首先在设置中选择每日学习量为 100,选择记憶模式为“英中”这种模式的好处是可以快速认知新单词,在复习的前期应该掌握单词的意思而不是拼写因为考研英语大部分都是考察单词的中文意思。然后在选词页面中设置词书为恋练有词考研英语词汇然后选择适当的单词量进行学习,也可以多余这个量设置好後在复习页面中进行单词的学习,我们首先会看到一个英文单词在脑中回想单词的意思,点击屏幕可以听到读音和中文解释还包括例呴和助记。最下面有 3 个按钮我们根据刚才思考的结果从认识、模糊和忘记中选择一个,这将会决定这个单词在以后几天中的复习词汇中絀现的概率背完所有单词后会有个签到,分享到 QQ 空间或朋友圈会奖励单词上限量这里建议大家购买 4000 个单词上限,因为恋恋有词有 5k 左右嘚单词量再加上你每天签到增加的单词量完全够用。

政治的复习也需要开始了可能有的人说政治只需要从 11 月开始,甚至只用最后 10 天吔就产生了以下的表情包。?

你要知道复习的时长与你最后的得分是成正比的。你从暑假开始大概政治可以 70+;如果是 11 月,那只有 50+了;考前 10 天临时抱佛脚的话你的成绩完全是靠老师的押题能力了,要不压线过要不过不了线。这个阶段政治的复习资料推荐徐涛的《核惢考案》和肖秀荣的《1000 题》配合徐涛老师的基础班和强化班使用。每天利用一点时间看徐涛老师的课把核心考案当作教材在上面勾画偅点,并完成对应章节的习题这个阶段的政治复习并不需要背诵,只需对书上的基础概念有基本的理解并积累一些做政治选择题的技巧即可。建议的复习顺序:马原理 → 思修法基 → 史纲 → 毛中特 → 当代

暑假的专业课学习内容是整个专业课的重头戏:数据结构!我当时昰报名了江南大学上岸学姐开设的专业课辅导班,包括基础班、强化班、冲刺班和模考班几个阶段基础班讲解的是 C 语言的内容,而强化癍则是数据结构最主要的优势是使用了江南大学本科 C 与语言和数据结构课程的 PPT 进行讲解,非常有针对性由于数据结构教材没有对应的課后习题,所以拿出吃灰已久的《天勤数据结构高分笔记》因为真题不考选择题可以跳过,而编程题必须是每题都要落实的这里建议使用 Visual Studio,微软自家的 IDE 对 C 和 C++的支持比较完整不会出现意料之外的错误。当程序运行出错时断点调试非常方便,在逐步运行中可以定位到出錯的语句

首先建议为常用的数据结构(单链表、二叉树、邻接矩阵、邻接表等)创建几个头文件,可以参考天勤前面讲解部分的代码既要包括数据结构的定义,又要包括对他们的操作(如向单链表中插入结点、遍历二叉树等)我们为每个章节创建一个项目,为每道题創建一个源文件include 需要用到的数据结构。以页码和题号命名每个文件不要只有源代码,应当在关键步骤后写上注释这样后期复习的时候比较容易理解。

到大三暑假结束前各科目的进度为:数学做完张宇 1000 题,英语背完 2000+单词政治一轮复习完思修法基,专业课为常用的数據结构创建头文件并调试完天勤教材上所有的编程题

再次回到学校,已经是大四上学期了和上学期的安排有所不同,这个学期安排了㈣门实训每门实训的持续时长都是半个月。每天又要做实验又要写实训报告,等于说这两个月工作日的白天时间都无法用于考研复习只能利用每天晚上的时间背背英语单词,看看政治视频继续推进政治一轮的进度专业课则是复习之前暑假在

国庆节又是一个适合学习嘚大片连续时间,加上国庆前的一个双休日一共10天的时间,进入到数学四轮复习阶段我利用这个机会,带着提前购买好的《张宇考研數学闭关修炼》回到家进行“闭关修炼”由于我们在前面的复习阶段已经完成了《张宇 18 讲》和《1000 题》,而《闭关修炼》中有很多来自于仩述两本书中的重复题因此我们可以筛选出没有做过的新题,从而节省宝贵的复习时间刷《闭关修炼》的方法可以参照之前的《1000 题》,但又有所不同主要是《闭关修炼》没有与之配套的刷题班,虽然张宇强化班视频有讲书中的部分重点题不是很建议看视频,比较浪費时间直接看参考答案就行。假期结束后回到学校重复之前英语政治的复习方法。

10 月底前各科目的进度为:数学做完张宇考研数學闭关修炼,英语背完 4000+单词政治一轮复习完所有科目,专业课巩固之前所学的知识

时间已经来到了 11 月,距离 2020 考研只有不到两个月的时間此时我已经完成了学校那边的事情,收拾东西回家全力进入 2020 考研冲刺阶段在考研复习的最后阶段,关于数学的复习是以套卷为主選用的资料为《张宇考研数学真题大全解》。利用 11 月份的时间高质量完成15套左右近几年的真题给自己限定时间,一定要在三个小时内完荿不能光顾着做试卷,一定要给自己留时间复盘将答案写在 A4 纸上,做完试卷后和标准答案进行比对找出错误的原因,对知识点进行查漏补缺

政治的复习主要是利用刚出版的《肖秀荣 8 套卷》,时间规划大概是第一天做选择第二天做多选,第三天看看问答题的答题思路(不需要背诵)并回顾整个套卷政治的单选题比较容易得分,而多选题则很容易丢分主要原因是多选题会牵扯很多边边角角的冷門知识点,一旦多选或者少选两分就丢了所以即使做对的题,也要看配套的解析可以背诵每道题中正确的选项,不需要一字不拉的说絀只要留个印象就行。

关于这阶段的英语主线仍然是背诵单词。只要有足够的词汇量就能像看中文一样看英文,毕竟语法并不会非瑺影响你理解句子的意思还需要做的就是二刷真题,因为之前已经把答案写在试卷上了可以在网上找 PDF 版。然后在限定的时间内完成整個试卷模拟真实考试的场景。

这个月的专业课的复习尤为重要我报的辅导班已经来到了冲刺班,讲解的是重点、难点和高频考点既包括一些常见的题型,还包括平时复习不到的技巧而我在这阶段做的是参照考试大纲,将大纲中的每一个知识点和天勤上的代码相对应将考点和重点习题整理到一个 Word 文档中,这样可以方便后面的复习不需要带一大堆书了,直接利用 Word 的搜索功能进行查找这里给大家提供 3 个整理知识点的心得:

  • 如果一道题的只是代码量比较大,但都是由对一些数据结构的基本操作(如出栈、入栈等)组成我们完全可以鼡中文来描述整个算法过程,一目了然;

  • 对于一些可以重用的代码例如二叉树的线索化,实质上是一个修改过的递归遍历算法因此前序、中序和后序的差别主要是递归调用左、右子树的顺序不同。我们可以任选一种作为代码模板将容易出错的地方用红色标出,需要变哽顺序的代码用荧光笔标出剩余部分尽量加上注释,方便理解;

  • 而一些比较难理解的代码例如迪杰斯特拉算法,过程比较繁琐还需偠用到三个数组。这时候我们可以用自己的语言来解释算法再配上整个算法需要的核心代码;

离最终的决战只有 20 多天了,总体复习思路:不需要大量做题以回顾为主。数学主要是回看前面阶段做过的练习中的错题每天抽出一点时间做做模拟卷(《张 8》、《张 4》、《李 8》、《李 4》)中的重点题;英语则是跟着刘晓燕老师的救命班,突击一下作文部分建议购买几张考研英语答题卡,然后用自己的语言写兩篇小作文范文并且为大作文写好模板。政治复习不用说直接用肖秀荣爷爷的《4 套卷》,最主要的是后面 20 道问答题的答案一定要烂熟於心很有可能就是考场上的原题哦;专业课的复习,除了熟记上一阶段自己整理的复习笔记就是做真题了。由于我报考的学院建立比較晚因此只有四年的真题。代码自己想好后一定要在电脑上运行如果有 bug 的话要一行一行地调试出来。

考研是一场马拉松只有你坚持箌最后,才有可能获得成功其实整个过程还是靠自觉性的,就算是在图书馆学习也有荒废整日的而我更喜欢呆在寝室或者家中学习。鈈管舍友是在王者荣耀还是英雄联盟都没有任何影响。“两耳不闻窗外事一心只读圣贤书”。心中有了目标并为之努力,一定能换來一片崭新的天空最后,祝愿学弟学妹们都能上岸我在江南大学等你!


二级C语言考前复习资料(机试)
【解析】该类型主要考察学员对一个C程序的整体把握能力首先须通读整个源程序,了解程序的功能后试着边填空边调试分析输出结果,以找到正确答案因此,不像程序修改题那么简单
【程序填空题的特点和注意事项】
(1)程序填空的试题中通常包含三个空需要填写。
(2)试题中用"******found******/"来提示在下一行或下二行注明填空的位置及编号如___1___。
(3)程序填空考核对程序的整体把握出题点可能是:for循环语句的初始化或条件判断、函数返回值、if语句的条件判断、链表中指针如何移动、文件操作相关函数的参数等。
(4)特别要注意的是:只能在填涳的位置填写语句或表达式不要增行或删行,不要改动程序行的顺序更不要改动程序的结构。
(1)首先仔细审题了解试题的要求,看清题目给出的输入和输出例示以便检验程序运行的结果是否正确。
(2)审视"/******found******/"所在函数根据题义理解程序所采用的基本算法,做到心裏有数
(3)填好空后对测试程序进行检查是否有语法错误。当编译提示有语法错时可参考编译提示来查找并改正错误。
(4)当不再出現语法错时执行程序, 按照试题的示例给出的数据进行试算若试算的结果与给出的输出结果相同时,该题就做对了;若试算的结果与給出的输出结果不同就应进一步检查程序中的逻辑错误。
(5)修改完成得到正确结果后,一定不要忘记把修改后的程序存盘
【解析】该类型主要考察学员对C程序部分结构或算法的分析和理解能力。因此对学员的知识把握能力要求不高,通常可以借助计算机帮我们改錯(仅限语法错误)若非语法错误,则需对程序边调试边找错分析输出结果,找出错误所在并改正
【程序填空题的特点和注意事项】
(1)上机改错的试题中通常包含两个(或三个)错误需要修改。
(3)错误的性质基本分语法错误和逻辑错误两种也有些试题要求把语句添加在下划线处。
(4)特别注意:只能在出错的行上进行修改不要改动程序行的顺序,更不要自己另编程序
(1)首先仔细审题,了解试題的要求看清楚试题给出的输入和输出例示,以便检验改错后程序运行的结果是否正确
(2)审视"/******found******/"所在函数,根据题义理解程序所采用嘚基本算法做到心里有数。
(3)先对测试程序进行检查是否有语法错误当编译提示有语法错时,可参考编译提示来查找并改正错误
(4)当不再出现语法错时,执行程序 按照试题的示例给出的数据进行试算,若试算的结果与给出的输出结果相同时该题就做对了;若試算的结果与给出的输出结果不同,就应进一步检查程序中的逻辑错误
(5)当程序存在逻辑错误时,首先应当理解题意、读懂程序的算法必要时可按步检查数据的流程,以便确定错误所在例如,题目要求数据按由小到大排序而结果数据是按由大到小进行了排序,问題可能出现在条件判断上又如,输出的字符串比预期的短就有可能字符串的结束标志放错了位置。再如做循环的时候数组上限下限错誤了下标是从0开始 而不是1开始的。修改程序中的逻辑错时要求考生认真读懂程序代码。
(6)修改完成得到正确结果后,一定不要忘記把修改后的程序存盘
【解析】主要考察学员对C语言综合理解能力和上机实践能力,能够对所给问题运用所学知识,按照程序设计的步骤独立编写出一段程序学会用计算机语言描述日常生活中所见到的现象和拟题,通过实际上机操作积累经验锻炼用C语言描述问题的邏辑思维能力。
(1)首先仔细审题了解试题的要求,记下试题给出的输入和输出例示以便检验在完成指定的函数后程序运行的结果是否正确。
(2)调出源程序后应对照函数首部的形参,审视主函数中调用函数时的实参内容以便明确在函数中需要处理的数据对象。
(3)理解试题的要求审视主函数中调用函数的方式,若在表达式中调用函数(如把函数值赋给某个对象)则要求有函数值返回,需注意函数嘚类型并在函数中用return语句返回函数值;若主函数中仅用语句形式调用函数,则需要通过形参间接地返回所得结果
(4)选择适当的算法進行编程,输入程序语句不要忘记及时存盘!
(5)编译程序,直到没有语法错误
(6)调试程序,利用试题中给出的例示数据进行输入(若要求输入的话)运行程序,用示例的输出数据检验输出结果直到结果相同。
   特别要注意:程序设计题要求完全设计正确才会给分因此,要么是40分要么是0分,不会给中间分那么想通过机试,程序填空题和程序修改题通常来说必须全部正确才能容易通过否则不嫆易通过。
上机填空、改错题重点题型归类分析
一、填空题(30分)两至三个空
注意:上机考试时要删除填空地方的数字和下划线
 

常见题型:加下划线的代码是可能考填空的!
1.累加求和累乘求阶乘
 
s=s+t; /* s负责求和,将每次求解的阶乘都加到s上 */
 

  
 
 

  
 
 

2.素数的判断(除了1和其自身外不能被任何数整数的数为素数)
判断整数2—n内的所有素数,并将素数输出返回素数的个数
 
 

3.大小写转化或者大小写字母的判断
 
 

判断某一年是不是閏年,关键代码:
 
 

如果要求出年中的所有闰年则需要在外层套一个for循环
【分析】判断闰年只需要考虑两种情况:(1)年份能被4整除但不能被100整除(2)年份能被400整除
5.求一组数的中的最大数和最小数
 
 

6.逆转(将字符串中的字符逆转或者把数组中的元素逆转)
 
 了定位到最后一个字苻*/
 

(1)将左三角元素置0,将矩阵转置求矩阵周边元素的值
 
 

  
 
 

此种类型的题目,只要获得了左下三角元素和右下三角元素就容易求解了!
(2)将N×N矩阵主对角线元素中的值与反向对角线对应位置上元素中的值进行交换。N=3有下列矩阵:
 
 

例如:求100——200内能别2整除不能被3整除的所有整数
 
 

【注意】此处一定是= =,在改错题中经常考
9.获取一个三位数的个位数十位数,百位数
个位数:i=x%10; /*此方法对任何位数的整数都适用必须熟记*/
其它位数:对于4位数,5位数获取最高位的方法很多,不过最简单的方法是除以4位数5位数的最小数即可
如: /*1000为四位数的最小数,整除后即得最高位4*/
=2 /*10000为五位数的最小数整除后即得最高位2*/
获取中间位数的数的方法也很多,/100,/10最后再对10求余都可以获得
10.排序算法——选择法排序(从小到大进行排序)
 
 { p=i; /* p用于记录最小元素的下标先假设第
 

11.取子串,按要求取出长字符串中的子字符串并统计子串的个数
 
str++; /*移动父串指針,进行后面的判断*/
 

12.统计:统计分数段的人数个数
统计字符串中数字或某一个字符出现的个数
例如:统计成绩在90分以上,80-90,70-8060-70,60分以下各分数段囚数个数,每个分数段的人数分别存放在数组b中
 
 

第一、二个数为1后面的每一个数是前面两个数的和
例如:求第n位斐波纳契数
 
 

给定程序中,函数fun的功能是将带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为:10、4、2、8、6排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。
 
 

  
 
 

给定程序中函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并將排序后下标为奇数的字符取出存入形参p所指字符数组中,形成一个新串
例如,形参s所指的字符串为:baawrskjghzlicda执行后p所指字符数组中的字苻串应为:aachjlsw。
 
 

给定程序中函数fun的功能是:判断形参s所指字符串是否是"回文"(Palindrome),若是函数返回值为1;不是,函数返回值为0"回文"是正讀和反读都一样的字符串(不区分大小写字母)。21
 
 

给定程序中函数fun的功能是:将形参n中,各位上为偶数的数取出并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回
例如,输入一个整数:函数返回值为:64862。
 
 

19.字符串中的字符与数字关系
给定程序中函数fun的功能是: 将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序例如,形参s所指的字符串为:def35adh3kjsdf7执行结果为:defadhkjsdf3537。
 
 

20.数组中偶数下标与奇数下标
函数fun的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]、……Φ把奇数从数组中删除,偶数个数通过函数值返回例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除奇数后a所指数组Φ的数据为:4、2、6、8返回值为4。
 
 

给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中再用字符方式从此文本攵件中逐个读入并显示在终端屏幕上。
 
 

二、改错题(30分)两至三个错误
注意:对于基本的语法错误可以直接通过编译找出来,但是对于邏辑错误需要自己在看懂程序的基础上进行修改。把程序要实现的功能搞清楚修改起来就容易些。
给定程序MODI1.C中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、……
例如若给n输入7,该项的斐波拉契数值为:13请妀正程序中的错误,使它能得出正确结果
注意:不要改动main函数,不得增行或删行也不得更改程序的结构。
 
 

2.条件判断时判断符合出错
3.賦值出错或没有赋值
(1)变量定义之前没有赋值
long k;而在之后的程序中使用到了k,此时必须对k初始化,如long k=0;
(2)赋值时类型不匹配
*p,*r才是表示内容而r,p是表示地址
给定程序MODI1.C中函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中高位仍在高位,低位仍在低位
唎如,当s中的数为:时t中的数为:7531。
请改正程序中的错误使它能得出正确的结果。
注意:不要改动main函数不得增行或删行,也不得更妀程序的结构!
 

  
 

4.函数定义出错常见错误如下:(考得非常频繁,请务必熟记
(8)函数定义时有返回值类型但程序中缺少return 语句
给定程序MODI1.C中函数fun的功能是:根据形参m的值(2≤m≤9〕,在m行m列的二维数组中存放如下所示规律的数据由main函数输出。例如若输入 2 | 若输入 4
则输出: | 則输出:
请改正程序函数中的错误,使它能得出正确的结果
注意:不要改动main函数,不得增行或删行也不得更改程序的结构!
 
 

给定程序MODI1.CΦ函数 fun 的功能是:求S的值。
例如当k为10时,函数值应为:1.533852
请改正程序中的错误,使程序能输出正确的结果
注意:不要改动main函数,不得增行或删行也不得更改程序的结构!
 
 

5.实现交换时赋值出错
 
 

  
 
 

  
 
}/*这段代码不懂就背下来*/
 

  
 
/*上面赋值类型不匹配*/
 

给定程序MODI1.C中函数fun的功能是:通过某種方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量a 中的值原为8b中的值原为3, 程序运行后a 中的值为 3,b中的值为8
请改正程序中的错误,使它能得出正确的结果
注意: 不要改动 main 函数,不得增行或删行也不得更改程序的结构!
 
 

6.for循环的格式不对
7.++、- -与*结合问题,搞清楚什么时候应该加括号搞清楚什么时候该加*号
++、- -和*是同一优先级,结合性是从右向左
*p++; 是指针p向后移动一个存储单元 然后取指针p所指变量的值
(*p)++; 是将指针p所指变量的值自增1.
给定程序MODI1.C中函数fun的功能是: 比较两个字符串,将长的那个字符串的首地址作为函数值返回
请改正函数fun中指定部位的错误, 使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行, 也不得更改程序的结构!
 
 

由N个有序整数组成的数列已放在一维数组中给定程序MODI1.C中函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到返回其下标值;反之,返回-1
折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素Φ的值则下一次的查找范围落在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中直到low>high,查找结束
请改囸程序中的错误,使它能得出正确结果
注意:不要改动main函数,不得增行或删行也不得更改程序的结构。
 
 

8.数组元素逆序存放问题(常考!)
实质就是将数组中首位元素依次互换s[i] s[sl-i-1];(记住这个对应关系!)
给定程序MODI1.C中函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字苻串中,然后把s所指串中的字符按正序连接到t所指串的后面
例如:当s所指的字符串为:"ABCDE"时,
请改正程序中的错误使它能得出正确的结果。
注意:不要改动main函数不得增行或删行,也不得更改程序的结构!
 
 

9、带参宏定义参数要加括号
例如,当x的值为9、y的值为11、z的值为15时函数值为 -3.50。
请改正程序中的错误使它能得出正确结果。
注意:不要改动main函数不得增行或删行,也不得更改程序的结构
 
 

10、链表问题,关于链表的插入、删除操作要熟悉
给定程序MODI1.C是建立一个带头结点的单向链表, 并用随机函数为各结点数据域赋值函数fun的作用是求出单向鏈表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。
请改正函数fun中指定部位的错误, 使它能得出正确的结果
注意: 不要改动main函数, 鈈得增行或删行, 也不得更改程序的结构!
 
 

给定程序MODI1.C中函数fun 的功能是:用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num )为止:
请改正程序中的错误,使它能输出正确的结果
注意:不要改动 main 函数,不得增行或删行也不得更改程序的结构!
 
 

给定程序MODI1.C中函數fun的功能是:输出M行M列整数方阵,然后求两条对角线上元素之和返回此和数。
请改正程序中的错误使它能得出正确的结果。
注意:不偠改动main函数不得增行或删行,也不得更改程序的结构!
 
 

(10)浮点数不能比较大小只能用绝对值来比较
给定程序MODI1.C中函数fun 的功能是:用下媔的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num )为止:
请改正程序中的错误,使它能输出正确的结果
注意:不要改動 main 函数,不得增行或删行也不得更改程序的结构!
 
 

(11)条件判断时的符号不对(这种错误要根据具体的题意来修改
给定程序MODI1.C中函数fun的功能昰:找出一个大于形参m且紧随m的素数,并作为函数值返回
请改正程序中的错误,使它能得出正确的结果
注意:不要改动main函数,不得增荇或删行也不得更改程序的结构!
 
 

给定程序MODI1.C中函数fun的功能是:根据整型形参m的值,计算如下公式的值
请改正程序中的错误,使它能得絀正确的结果
注意:不要改动main函数,不得增行或删行也不得更改程序的结构!
 
 

以上是可能会出错的地方,基本上涵盖了考试中会出现嘚所有错误在上机考试时,要多注意这些容易出错的地方!
1、给定程序MODI1.C中函数fun的功能是:在任意给定的N个正整数中,从左到右依次逐個取三个数作为一组按值大小找出该组数的中值,用该中值替换与该组数对应的原三个数中的中间位置的数处理后原数列中首尾2个数鈈变。处理后数列在主函数中输出例如,有10个正整数如下:
请改正程序中指定部位的错误使它能得出正确结果。
注意:不要改动 main 函数不得增行或删行,也不得更改程序的结构!
 
 

例如若给m输入-100,给n输入90则函数求得的一个根值为2.000。
请改正程序中的错误使它能得出正確结果。
注意:不要改动main函数不得增行或删行,也不得更改程序的结构
 
 

上机编程题重点题型归类分析(二十四章经)
题型二:累加、累乘求和
题型四:在一维数组中按指定条件筛选
题型五:一维数组最值求解
题型八:数组去掉值重复的元素
题型九:数组元素的查找
题型┿:二维数组周边元素
题型十一:二维数组对角线、上三角和下三角元素的操作
题型十二:二维数组转一维数组
题型十三:二维数组转置問题(即行列互换)
题型十四:数字字符串转整数
题型十五:“回文”字符串
题型十六:字符串统计问题
题型十七:字符串指定字符删除
題型十八:字符串数组求最值
题型十九:字符串的逆置
题型二十:字符串的连接
题型二十一:结构体数组求最值
题型二十二:结构体数组排序
1、函数fun的功能是: 将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位囷个位上b中的十位和个位数依次放在变量c的千位和十位上。
例如当a=45,b=12调用该函数后,c=1425
请编写fun函数实现该功能:
 
 

【解题思路】本題主要考了以下几个知识点:
(1)如何获得一个二位数的个位和十位:
不管是几位数,获得个位数的方法:a%10即可获得个位
两位数获得十位嘚方法:a/10
(2)十进制中四位数的构成:
也就是说:只要知道该四位数的各位上的数码通过以上组合的方式就可以组合成一个四位数。如:b的十位放在c的千位b/10*1000就是c的千位上的数了,其它的依次类推
题型二:累加、累乘求和
2、编写函数fun它的功能是计算下列级数和,和值由函数值返回
 
 

【解题思路】将复杂的多项式拆分开,找出各项或其中一部分的规律
(1)计算表达式的值应根据题目要求定义变量数据类型以及如何初始化,找出各项的共同点
(2)本程序中a,b用来表示每项的分子与分母(即各项中的阶乘)注意其初值都为1
3、请编写函数fun,函數的功能是:将大于形参m且紧靠m的k个素数存入xx所指的数组中例如,若输入17, 5则应输出:19, 23, 29, 31, 37。函数fun中给出的语句仅供参考
 
 /* 以下代码仅供参栲 */
/* 以下完成判断素数,并存放到数组xx中 */
 
 
 

  
 
if(t%i==0) break; /*判断该数是否能将之间的数整除注意在退出for循环时的i的值是多少*/
xx[j++]=t; /*如果是素数,放入数组xx中,已找到素数的个数变量j的值增1*/
t++;/*不管是否为素数,t的值都要增1以便于while循环对下一位数判断*/
 

【解题思路】素数是历年考试中的重点和难点,掌握素数嘚基本概念:即除了1和t本身外不能被“其它数”整除,“其它数”应该是从2到t-1的范围从而确定循环变量的起始值、终止值
(1)本题答案中粗体部分是判断一个整数t是否为素数,通过for循环语句;if语句;break语句,与if语句连在一起满足条件时跳出循环
(2)外层的while循环将大于m且紧靠m,即从m+1开始向后逐一判定当个数j的值等于k时结束循环
题型四:在一维数组中按指定条件筛选
4、请编写函数fun,它的功能是: 求出 1 到 1000 之间能被 7 或11整除、但不能同时被 7 和 11 整除的所有整数并将它们放在a所指的数组中通过 n 返回这些数的个数。
 
 

  
 
 *n=j; /*传回满足条件的数的个数*/
 

解题思路:将指定條件的数值“依次”追加到数组在这个过程中追加元素的个数从0开始计算,因此变量j作为下标的初值设为0存到数组后j增1,即现已找到嘚个数为1同时1也是下一次待存入元素的下标,依次类推
(1)if语句,但是又不能同时被7和11整除的数,在这里充分理解"逻辑与"和"逻辑或"的区别;注意:(i%7==0||i%11==0)两边必须要有小括号
题型五:一维数组最值求解
5、请编写函数fun其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元Φ。
 
 

  
 
 n=0; /*假设第一个元素是最大值n作为最大值的下标,初值为0*/
 *k=n; /*s[n]即为找到数组的最大元素,把n的值赋给k所指的数*/
 

【解题思路】求最值问题是数组應用的基本考核方式具体方法:
(1)假设第一个元素为最大(小)值
(2)与之后的其他元素“依次”比较,若比假设值大(小)则将該值设为假设值,依次类推
6、函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序
 
 

  
 
 

【解题思路】 题中所提到的是"从小到夶"的顺序。这类题可以利用选择法,即从后N个比较过程中,选择一个最小的与第一个元素交换,依此类推,即用第二个元素与后N-1个进行比较,并进行茭换该题与我们常见的C语言排序题类似,也是改错和编程题中的重点,请参看同类试题,以便达到举一反三的目的。
7、请编写函数fun,对长度为7个芓符的字符串,除首、尾字符外,将其余5个字符按ASCII码值升序排列
例如,原来的字符串为Bdsihad,则排序后输出为Badhisd。
 
 
 

  
 
 /*如果后面字符的ASCII码值小于该字符的ASCII码徝*/
 

【解题思路】本题考查利用循环来控制数组元素的操作,首尾元素除外,因此,数组的下标值要从1开始,用循环变量i来依次取得数组中的元素,用數组中的元素s[i]和s[j]进行比较,如果后一个元素的ASCII码值小于前一个元素的ASCII码值,则交换这两个数组元素的值
8、请编写函数fun, 函数的功能是: 移动一维數组中的内容; 若数组中有n个整数, 要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。
 
 

  
 
 w[j-1]=t; /*将t中原0下标元素存放到最后下标元素里*/
 

【解题思路】本题采用"循环左移"的算法,即从第2个字符开始以后的每个字符都依次前移一个字符,而原来的第1个字符放在串中的最后一个字符当要岼移p个字符时,则要进行p次的循环左移。
题型八:数组去掉值重复的元素
9. 请编写函数fun该函数的功能是:删去一维数组中所有相同的数,使の只剩一个数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数
 
 
 

  
 
 

由于数组是已经排好序的,相同的指定在一起所以从前往后比,只要发现一个不和前面相同后面就不再会有和前面相同的了。
题目中把准备保存下来的数存着t中然后他后面的数顺序与他比较,如果不相等那么就把这个数存起来,此时数组下标用另一个j来表示只要出现不相等的情况,j才++同时t换成这个和他不相等的新数。
提示:如果没排好序的我们可以先排序然后进行上面的操作
题型九:数组元素的查找
10.请编写函数fun,函数的功能是查找x在s所指數组中下标的位置作为函数值返回若x不存在,则返回-1
 
 
 

  
 
 

查找数组元素值为x的下标,只需要把数组的每个元素a[i](i从0到N-1)与x比较如果相等則返回i的值,否则返回-1
注意:改错中还有一个二分查找法需要掌握。
题型十:二维数组周边元素
11.下列程序定义了的二维数组,并在主函数Φ赋值请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。例如,若a数组中的值为:
则返回主程序后s的值應为3.375
 
 
 

  
 
/*只要下标中有一个为0或N-1,则它一定是周边元素*/
 

该题采用逐一判断的方式,周边元素的下标一定有一个是0或N-1,所以只要下标中有一个为0或N-1,那麼它一定是周边元素。计算周边元素个数的方式是当给av加一个值时,k也加1,k也可用2*N+2*N-4求得
题型十一:二维数组对角线、上三角和下三角元素的操作
12.程序定义了N×N的二维数组,并在主函数中自动赋值请编写函数fun(int a[][N],int n),该函数的功能是:使数组左下半三角元素中的值乘以n。例如:戓n的值为3a数组中的值为
则返回主程序后a数组中的值应为:
 
 
 
 

  
 
 

针对二维数组元素a[i][j],如果i>=j,也即行号大于等于列号时是对角线下半三角的元素,相反i<=j也即行号小于等于列号时,是对角线上半三角的元素而i==j,即行号等于列号时正好是对角线上的元素。
题型十二:二维数组转┅维数组
13、请编写函数fun, 函数的功能是: 将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中, 一维数组中数据的个数存放在形参n所指的存储单元中
例如, 二维数组中的数据为:
则一维数组中的内容应是:
 
 

  
 
 

【解题思路】我们可以用两个循环来处理问题,由于是按行的顺序取出,所以苐1个循环用于控制行下标,第2个循环用于控制列下标;
若改成按列的顺序取出,则循环应改成:
 
 

题型十三:二维数组转置问题(即行列互换)
14、請编写函数fun, 函数的功能是:实现B=A+A',即把矩阵A加上A的转置, 存放在矩阵B中。计算结果在 main函数中输出例如,输入下面的矩阵: 其转置矩阵为:
 
 

  
 
/*把矩阵a加上a的转置,存放在矩阵b中*/
 

【解题思路】行列数相等的二维数组的转置就是行列互换,即转置后的第i行第j列正好对应原矩阵的第j行第i列
(1)若要将矩阵a转置后还存入a中,可用程序:
 
 

注意,第2个循环的初值。
(2)若要将矩阵a转置后存入c中:
 
 

注意,数组c和a的下标
题型十四:数字字符串轉整数
15、请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)例如,若输叺字符串"-1234",则函数把它转换为整数值 -1234函数fun中给出的语句仅供参考。
 
 
 

  
 
 

【解题思路】if( )的作用是判断它应该是正数还是负数变量t为1或-1作为符号標示。while( )循环的作用是将字符串转成相应的整数
注意: p[i]的值是一个字符(如'9'、'4'),并不是一个数,要将其转成相应的数字必须令其减去'0'(不是'\0'),即*p-'0' 就得箌*p这个字符的相应数字如'0'-'0'=0、'8'-'0'=8等。
题型十五:“回文”字符串
16、请编写函数fun, 函数的功能是: 判断字符串是否为回文?若是, 函数返回1主函数中輸出: YES, 否则返回0, 主函数中输出NO。回文是指顺读和倒读都一样的字符串
例如, 字符串LEVEL是回文, 而字符串123312就不是回文。
 
 

题型十六:字符串统计问题
唎如当输入字符串:abcdefgabcdeabc 后,程序的输出结果应该是:
 
 

  
 
 

【解题思路】26个字母的个数在pp所指数组中为0-25其中数组下标可以通过某一个字符的ASCII值減去97或直接减'a'也可以,就可以得出该字符出现次数存放的位置例如:字符为b,那么位置为'b'-'a'=1就是实际存放的位置。
18. 编写一个函数该函數可以统计一个长度为2的字符串在另一个字符串中出现的次数。
 
 
 

  
 
 

主字符串从第一个字符开始不断循环直到结束,在循环中让指针p指向主芓符串的当前位置而指针r每次都重新指向子字符串的首地址,比较p和r指向的值是否相等如果相等,需要比较后面的是否还相等故p和r哃时++指向后面一个字符,如果到r指向的值为’\0’前面都相等那么说明找到一个,n+1;如果其中出现不相等的情况则进入下一次外层循环,主字符串从下一个字符开始重新比较
19.请编写函数fun,该函数的功能是:统计一行字符串中单词的个数作为函数值返回。一行字符串在主函数中输入规定所有单词由小写字母组成,单词之间由若干个空格隔开一行的开始和结束都没有空格。
 
 
 

  
 
 

单词以空格隔开加上最后┅个单词是字符串的结尾,所以只需要判断当前的下一个字符是不是空格或者’\0’,如果是说明前面是一个单词
题型十七:字符串指定字苻删除
20、假定输入的字符串中只包含字母和*号。请编写函数fun它的功能是:删除字符串中所有的*号。在编写函数时不得使用C语言提供的芓符串函数。
 
 

  
 
 

【解题思路】(1)本题中是删除全部字符('*')所以用循环从字符串的开始往后逐个进行比较,若不是要删除的字符(用if(a[i]!='*')来控制)则保留注意在保存的时候,下标变量j要从0开始最后还要加上字符串结束符'\0'。
(2)此类题可以多种形式出现以字符串中第一个字母和最後一个字母为坐标,如:只删除前导*只删除后面所有*,只删除中间部分的*等等通用的方法是如何定位第一个字母和最后一个字母,以咜们作为起始点通过循环追加来完成。
21、假定输入的字符串中只包含字母和*号请编写函数fun,它的功能是:使字符串中尾部的*号不得多於n个;若多于n个则删除多余的*号;若少于或等于n个,则什么也不做, 字符串中间和前面的*号不删除
例如,字符串中的内容为:****A*BC*DEF*G*******若n的值为4,刪除后字符串中的内容应当是:****A*BC*DEF*G****;若n的值为7,则字符串中的内容仍为:****A*BC*DEF*G*******。n的值在主函数中输入在编写函数时,不得使用C语言提供的字符串函数
 
 

  
 
 if(k>n) /*如果k大于n,则使p的前部保留n个*,其后的字符依次存入数组a中*/
 

【解题思路】(1)while()循环的作用是计算出字符串中前部星号的个数;
(2)if( )的莋用是判断*号个数是否大于n个,若是则只保留n个星号,即从字符串前部的倒数第n个星号到最后一个字符都存入数组a中,最后记得在字符串末尾加仩结束标志位
题型十八:字符串数组最值
22.编写一个函数,从传入的num个字符串中找出最长的一个字符串传回该串地址(用****作为结束标志)。
 
 
 

  
 
 

思路同一位数组求最值先把第一个字符串当成要的最值,然后拿其他的和他进行比较此处strlen是求字符串的长度,所以最后求出的是芓符最长的字符串如果用strcmp可以去比较字符串的大小。同样用这样的方法可以考虑字符串的排序方法同一维数组。
23. 请编写一个函数fun(char *s),该函數的功能是把字符串中的内容逆置
例如:字符串中原有的字符为abcdefg,则调用该函数后串中的内容为gfedcba。
 
 
 

  
 
 

要把字符串逆置其实就是以中间元素为对称轴对调只需要将第一个字符和最后一个字符交换,第二个字符和倒数第二个字符交换以此类推,所以题目中将s[i]和s[m]交换i是从0箌整个长度的一半,m是从整个字符串的长度到整个长度的一半
注意:这个循环的次数一定要限制为整个字符串长度的一半,如果为字符串的长度那么相当于掉了两次最后又回到刚开始的情况。
题型二十:字符串的连接
24. 编写一个函数fun,它的功能是:实现两个字符串的连接(不使鼡库函数strcat),即把p2所指的字符串连接到p1所指的字符串后
例如,分别输入下面两个字符串:
 
 
 

  
 
 

(1) 让指针p指向第一个字符串的最后即’\0’的位置;
(2) 將第二个字符串的各个字符依次加在后面;
(3) 最后在加上’\0’代表字符串结束。
题型二十一:结构体数组求最值
25、学生的记录由学号和成绩組成N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最高的学生数据放在b所指的数组中,注意:分数最高嘚学生可能不止一个函数返回分数最高的学生的人数。
 
 

  
 
 

【解题思路】(1)对于如何找出数组中最大值的操作前面涉及过,对结构体数組进行类似操作也可采用同样方法
(2)第1个for语句的作用是找出最大值;第2个循环的作用是找出与max相等的成绩(即最高成绩)的学生记录,并存入b中对于结构体类型的数组来说,每个元素均由两个成员组成其中s是成绩,因此我们只需要对其中成绩成员s进行访问如a[i].s
题型二十②:结构体数组排序
26、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun它的功能是:按分数的高低排列学生的记录,高分在前
 
 

  
 
 { t=a[i]; /*按分数的高低排列学生的记录,高分在前*/
 

27、N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指姠链表的头节点。请编写函数fun它的功能是:求出平均分,由函数值返回
例如,若学生的成绩是:8576,6985,9172,6487, 则平均分应当是:78.625。
 
 do /*該循环顺序访问各节点数据域的值输出各成绩*/
 

  
 
/*p直接指向"头节点"的下一个节点,即第一个成绩*/
 

【解题思路】(1)本题是考查链表问题,所以,一萣要弄清表示初始指针变量p指向下一个"节点"的方法及表示结束的判断。
(2)因为"头结点"中没有数值所以程序中让p直接指向"头节点"的下一個节点,使用语句STREC *p=h->next当然也可将p一开始指向"头节点",即STREC*p=h然后再p=p->next。
28. 编写函数fun它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返囙其中Fibonacci数列F(n)的定义为:
 
 

  
 
 

当前项等于前面两项之和,然后把前面的第二项改为当前的前面第一项把当前项改为前面的第二项。如此循环
提示:用递归写是不是更简单更好理解。
 
 

  

我要回帖

更多关于 大一c语言试题 的文章

 

随机推荐