




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章编程基本功,想要成为一名优秀的程序员或者计算机工作者,就必须在实践中一点一滴地去积累编程的经验,多编程序,敢编程序,而且不应急于求成,从最基本的程序编起。作为初学者,最重要的就应当是夯实编程的基本功,充分掌握程序语言的基本知识,掌握编程的基本技巧,这样一点点积累起来最终成为一个编程高手。本章就是特意为基础一般的读者编写的。它通过一些比较基础的编程实例向读者揭示了如何编写一个地道的C程序。同时帮助读者复习巩固已有的C语言知识和编程技巧。如果你是一个学过C语言但是编程实践不多的人,或是很久没有编程的人士,那么建议你学习本章。,4.1字符类型统计器,题目要求:请编写一个C程序,在终端用键盘输入字符串,以Ctrl+Z的组合键表示输入完毕,统计输入的字符串中空格符,制表符,换行符的个数,并显示统计的结果。题目分析:这是一类在面试中或计算机考试中常考的题目,具有一定的普遍性。本例题涉及的知识点是字符串的输入输出方法以及字符的判断等知识。程序设计的关键是如何辨认出从终端输入的字符哪个是空格符,哪个是制表符,哪个是换行符。然后在字符串输入的过程中,通过不同的变量记录下来每一种字符的个数即可。解决字符的分类问题可以通过字符的ASCII码进行判断,因为不同的字符对应不同的ASCII码。通过查表可知空格符的ASCII码为32,制表符的ASCII码为9,换行符的ASCII码为10。可以通过它们不同的ASCII码来区分出它们。,4.2计算字符的ASCII码,题目要求:编写一个程序,在终端输入一个字符,输出它的ASCII码。题目分析:解决本题的关键在于理解字符在内存中的存储方式。通过C语言的学习我们知道,一个字符在内存中的存放形式是以它的ASCII码形式存放的,大小为8位(bits),一个字节。例如空格符的ASCII码为32,那么在内存中32对应的8位二进制数100000就代表一个空格符。根据这个道理就不难解决上述问题。只要变换一种输出的形式就可以显示出该字符的ASCII码。,4.3嵌套if-else语句的妙用,学校进行成绩分级管理,取消分数制,改为成绩分级评定。具体办法是:小于60分为“E”类;60分至70分(不含70分)为“D”类;70分至80分(不含)为“C”类;80分至90分(不含)为“B”类;90分以上为“A”类。设计一个程序,对输入的成绩进行等级划分。,4.4基于switch语句的译码器,应用switch嵌套语句实现的译码算法,可以只扫描一遍0/1代码串就可以翻译出全部内容。算法的具体结构要依赖于码表的定义。应用switch嵌套语句来实现该译码算法,优点在于简单直观,很容易理解,且翻译效率较高。缺点在于代码量较大,如果码表庞大,代码量也会随之增大,而且比较机械,缺乏灵活性。这里旨在用以说明switch语句的嵌套使用。,4.5判断闰年,题目要求:输入一个年份,判断该年是否是闰年。题目分析:这是一道公司面试和各种C语言考试中常考的题目。虽然这道题目十分简单,但是作为一个专业的程序员这是必备的常识。所谓闰年,是要符合下面两个条件之一:(1)该年份能被4整除,但不能被100整除;(2)该年份能被4整除,又能被400整除。只要符合以上的两条件之一的年份都是闰年。最简单的判断闰年的方法是用条件判断语句(if-else语句)配合逻辑表达式进行判断,充分地利用逻辑表达式进行判断可使程序的可读性更好,效率更高。,4.6指针变量作参数,题目要求:编写一个函数inputArray,该函数被主函数调用,通过该函数实现向主函数中定义的数组输入数据。题目分析:程序设计结构化要求将具有特定功能的程序块编写成函数,这样程序结构清晰,可读性强,易于调试,代码的复用性强。因此把向数组中输入数据这样的程序块单独编写成为一个函数,通过主函数调用实现其功能,这样符合结构化程序设计的要求。但是这里重要的一点是如何通过被调函数改变主函数中的值。我们知道,函数的调用是在内存的堆栈中实现的。因此,一旦函数调用完毕,该函数内部的所有局部变量都会被释放掉。,4.7矩阵的转置运算,题目要求:用键盘从终端输入一个3行4列的矩阵,编写一个函数对该矩阵进行转置操作。题目分析:这个问题的解决关键是要解决两个问题:(1)数据在内存中的存储问题,也就是数据结构的问题;(2)如何通过函数来实现矩阵的转置运算。显然,可以用一个二维数组来存储矩阵的数据,通过将二维数组的指针作为函数的参数进行传递,来实现矩阵转置函数的功能。,4.8矩阵的乘法运算,题目要求:有两个矩阵A1和A2,分别如下:编写一个程序,实现这两个矩阵的乘积。题目分析:从上面的计算法则中不难看出,要计算两个矩阵的乘积需要三重循环。即:A矩阵的第m行和B矩阵的第n列各元素相乘,得到cmn。A矩阵的第m行分别和B矩阵的第1k列相乘,得到cm1,cm2.cmk。A矩阵的第1i行分别与矩阵的n列相乘,得到最终结果。因此,解决矩阵相乘的问题的一种比较简单的方法就是用三重循环嵌套语句。,4.9巧用位运算,题目要求:用位运算操作实现两个整数的交换。例如x1=5,x2=10;交换后x1=10,x2=5。题目分析:一般情况下要实现两个变量a,b的内容交换,多采用设置一个临时变量t,通过t=a;a=b;b=t;的方法实现。其实还有一种更好更有效的方法实现这个功能,就是采用位运算的方法。具体的作法是:a=ab;b=ba;a=ab;其中为安位异或运算。这样同样可以达到a、b两值互换的目的。,4.10文件的读写,题目要求:创建一个后缀名为txt的文件,并向该文件中写入一个字符串,保存起来。再打开该文件,读出文件中的内容。题目分析:本题主要考查对文件的读写操作。C库函数中提供了一组对文件操作的函数,即I/O函数,通过调用这些函数程序员可以编写程序操纵磁盘上的文件,来实现软件特定的功能。I/O函数也叫输入输出函数,是C标准库函数中十分重要的一类函数。所有I/O函数都定义在的头文件中。因此,在编写程序时要将头文件包含在源程序的文档中。,4.11计算文件的大小,题目要求:编写一个C程序,用来计算指定文件的大小。题目分析:计算指定文件大小的方法很多。最直观的方法是通过扫描整个文件计算出文件的字节数。但是这种方法对系统的开销很大,比较浪费时间。可以巧妙地利用I/O库中提供的函数来进行文件大小的判定。,4.12记录程序的运行时间,题目要求:任意编写一段程序,要求纪录并输出该段程序执行的时间。题目分析:在调试程序,分析代码和算法的性能,查找系统瓶颈等时候,经常要统计一段代码或者一个模块执行的时间,通过观察代码执行的时间来分析代码的复杂度,效率和性能。因此知道如何记录程序运行的时间是一个程序员的基本功。,4.13十进制/二进制转化器,题目要求:编写一个程序,将输入的十进制数转化为二进制表示。例如:输入十进制数64,输出二进制数表示1000000。题目分析:将一个十进制数转化为二进制数一般采取“除2取余”的方法。例如将十进制数62转化为二进制表示,方法如下:,4.14打印特殊图案,题目要求:在应用C语言开发程序时,有时为了程序运行界面的美观,需要在屏幕上用字符构成一些特殊的图案用以装饰。请设计一个C程序,实现在屏幕上输出一个类似于下面的图案:*题目分析:这种关于特定格式输出的问题,最重要的一点是理解输出格式的规律。只要理解了输出格式的规律,通过简单的循环语句就可以显示出希望得到的图案。,4.15打印杨辉三角,题目要求:在屏幕上打印出一个6阶杨辉三角。题目分析:杨辉三角又称为贾宪三角,是我国北宋数学家贾宪于1050年首先发现并使用的。而后南宋数学家杨辉在详解九章算法一书中记载并保存了“贾宪三角”。因此贾宪三角又被称为杨辉三角。杨辉三角的发现是我国数学史上光辉灿烂的一页,它要比法国数学家帕斯卡发现的“帕斯卡三角”(即杨辉三角)早600多年。,4.16复杂级数的前n项和,题目要求:求级数的前10项和S10。题目分析:本题要求级数的前10项和,将级数展开,实际就是求S10=(1/2)+(1/2)22!+(1/2)1010!。直观地看,最简单的解决方法就是应用循环。最外层的循环控制每一项的相加运算;内层包含两个循环体,一个是计算1/2的n次方,一个是计算n的阶乘。,4.17寻找矩阵中的“鞍点”,题目要求:在一个矩阵中,可能会有这样的元素:它在该行中最大,而在该列中最小。我们把这样的元素称为“鞍点”。一个矩阵中也可能没有鞍点。任意输入一个5*5的矩阵,寻找该矩阵中的鞍点,并将它在矩阵中的位置(行,列)输出。题目分析:仔细分析鞍点的定义可知,在一个矩阵中,最多出现一个鞍点。因此在设计寻找鞍点的算法时,可以逐行寻找鞍点。先找出某行中最大的元素(要求同行中只能有一个最大的元素),再将该元素与同列中的其他元素进行比较,如果该元素为同列中最小的元素,则该元素即为该矩阵的鞍点,于是返回它在矩阵中的位置,程序结束;否则继续对下一行进行上述的操作。,4.18n阶勒让德多项式求解,题目要求:n阶勒让德多项式定义为:编写程序,输入正整数n和任意数x,求出勒让德多项式的值Pn(x)。题目分析:显然勒让德多项式的定义是一种递归形式的定义。因此要求出n阶的勒让德多项式的值,最简单的方法就是编写一个递归函数实现。,4.19递归反向输出字符串,题目要求:编写一个递归函数,实现将输入的任意长度的字符串反向输出的功能。例如输入字符串:“ABCD”,输出字符串“DCBA”题目分析:本题就是利用递归方法解决这类问题的一个代表。要将一个字符串反向地输出,我们一般采用的方法是将该字符串存放到一个数组中,然后将数组元素反向地输出即可。,4.20一年中的第几天,题目要求:输入某年某月某日,判断这一天是这一年的第几天?题目分析:要判断某年某月
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南充市2025四川南充市妇幼保健生育服务中心引进高层次人才考核招聘7人笔试历年参考题库附带答案详解
- 2025河南新乡某国有企业招聘20人笔试参考题库附带答案详解
- 2025广东龙川县国资系统企业岗位竞聘12人笔试参考题库附带答案详解
- 2025年融通科研院社会招聘笔试参考题库附带答案详解
- 2025年甘肃兰州新区金融投资控股集团有限公司招聘40人笔试参考题库附带答案详解
- 2025四川华丰科技股份有限公司招聘客服经理等岗位6人笔试参考题库附带答案详解
- 2025上半年云南日报报业集团招聘34人笔试参考题库附带答案详解
- 危险行业安全培训内容课件
- 地质学重点讲解课件
- 地质勘察设计院安全培训课件
- 山东C类人员安全考核模拟练习题及参考答案解析
- 中通规章管理制度
- 茶山管理协议书
- 代办土地证协议书
- 创意美术课程教学大纲
- 2025年生物性污染对人体健康的危害与生物安全防控措施
- 现代文献检索与利用3-文献检索技术
- GB/T 45542-2025工业锅炉综合能效评价技术规范
- DB11 396-2006 地理标志产品 平谷大桃
- 2025年小学数学新教材培训
- 2025胃癌诊疗规范
评论
0/150
提交评论