




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章第四章 编程基本功编程基本功想要成为一名优秀的程序员或者计算机工作者,就必须在想要成为一名优秀的程序员或者计算机工作者,就必须在实践中一点一滴地去积累编程的经验,多编程序,敢编程序,实践中一点一滴地去积累编程的经验,多编程序,敢编程序,而且不应急于求成,从最基本的程序编起。作为初学者,最重而且不应急于求成,从最基本的程序编起。作为初学者,最重要的就应当是夯实编程的基本功,充分掌握程序语言的基本知要的就应当是夯实编程的基本功,充分掌握程序语言的基本知识,掌握编程的基本技巧,这样一点点积累起来最终成为一个识,掌握编程的基本技巧,这样一点点积累起来最终成为一个编程高手。编程高手。本章就是特意为
2、基础一般的读者编写的。它通过一些比较本章就是特意为基础一般的读者编写的。它通过一些比较基础的编程实例向读者揭示了如何编写一个地道的基础的编程实例向读者揭示了如何编写一个地道的C程序。同程序。同时帮助读者复习巩固已有的时帮助读者复习巩固已有的C语言知识和编程技巧。如果你是语言知识和编程技巧。如果你是一个学过一个学过C语言但是编程实践不多的人,或是很久没有编程的语言但是编程实践不多的人,或是很久没有编程的人士,那么建议你学习本章。人士,那么建议你学习本章。4.1 字符类型统计器字符类型统计器题目要求:题目要求:请编写一个请编写一个C程序,在终端用键盘输入字符串,以程序,在终端用键盘输入字符串,以C
3、trl+Z的的组合键表示输入完毕,统计输入的字符串中空格符,制表符,换组合键表示输入完毕,统计输入的字符串中空格符,制表符,换行符的个数,并显示统计的结果。行符的个数,并显示统计的结果。题目分析:题目分析:这是一类在面试中或计算机考试中常考的题目,具有一定的这是一类在面试中或计算机考试中常考的题目,具有一定的普遍性。本例题涉及的知识点是字符串的输入输出方法以及字符普遍性。本例题涉及的知识点是字符串的输入输出方法以及字符的判断等知识。程序设计的关键是如何辨认出从终端输入的字符的判断等知识。程序设计的关键是如何辨认出从终端输入的字符哪个是空格符,哪个是制表符,哪个是换行符。然后在字符串输哪个是空格
4、符,哪个是制表符,哪个是换行符。然后在字符串输入的过程中,通过不同的变量记录下来每一种字符的个数即可。入的过程中,通过不同的变量记录下来每一种字符的个数即可。解决字符的分类问题可以通过字符的解决字符的分类问题可以通过字符的ASCII码进行判断,因为不同码进行判断,因为不同的字符对应不同的的字符对应不同的ASCII码。通过查表可知空格符的码。通过查表可知空格符的ASCII码为码为32,制表符的,制表符的ASCII码为码为9,换行符的,换行符的ASCII码为码为10。可以通过它们。可以通过它们不同的不同的ASCII码来区分出它们。码来区分出它们。4.2 计算字符的计算字符的ASCII码码题目要求:
5、题目要求:编写一个程序,在终端输入一个字符,输出它的编写一个程序,在终端输入一个字符,输出它的ASCII码。码。题目分析:题目分析:解决本题的关键在于理解字符在内存中的存储方式。解决本题的关键在于理解字符在内存中的存储方式。通过通过C语言的学习我们知道,一个字符在内存中的存放形式语言的学习我们知道,一个字符在内存中的存放形式是以它的是以它的ASCII码形式存放的,大小为码形式存放的,大小为8位位(bits),一个字节,一个字节。例如空格符的。例如空格符的ASCII码为码为32,那么在内存中,那么在内存中32对应的对应的8位位二进制数二进制数100000就代表一个空格符。根据这个道理就不难就代表
6、一个空格符。根据这个道理就不难解决上述问题。只要变换一种输出的形式就可以显示出该字解决上述问题。只要变换一种输出的形式就可以显示出该字符的符的ASCII码。码。4.3 嵌套嵌套if-else语句的妙用语句的妙用学校进行成绩分级管理,取消分数制,改为成绩分级评定。具学校进行成绩分级管理,取消分数制,改为成绩分级评定。具体办法是:小于体办法是:小于6060分为分为“E”E”类;类;6060分至分至7070分(不含分(不含7070分)为分)为“D”D”类;类;7070分至分至8080分(不含)为分(不含)为“C”C”类;类;8080分至分至9090分(不含)为分(不含)为“B”B”类;类;9090分
7、以上为分以上为“A”A”类。设计一个程序,对输入的成绩进行等级划类。设计一个程序,对输入的成绩进行等级划分。分。4.4基于基于switch语句的译码器语句的译码器应用应用switch嵌套语句实现的译码算法,可以只扫描一嵌套语句实现的译码算法,可以只扫描一遍遍0/1代码串就可以翻译出全部内容。算法的具体结构要依代码串就可以翻译出全部内容。算法的具体结构要依赖于码表的定义。应用赖于码表的定义。应用switch嵌套语句来实现该译码算法,嵌套语句来实现该译码算法,优点在于简单直观,很容易理解,且翻译效率较高。缺点在优点在于简单直观,很容易理解,且翻译效率较高。缺点在于代码量较大,如果码表庞大,代码量也
8、会随之增大,而且于代码量较大,如果码表庞大,代码量也会随之增大,而且比较机械,缺乏灵活性。这里旨在用以说明比较机械,缺乏灵活性。这里旨在用以说明switch语句的嵌语句的嵌套使用。套使用。4.5 判断闰年判断闰年题目要求:题目要求:输入一个年份,判断该年是否是闰年。输入一个年份,判断该年是否是闰年。题目分析:题目分析:这是一道公司面试和各种这是一道公司面试和各种C语言考试中常考的题目。虽语言考试中常考的题目。虽然这道题目十分简单,但是作为一个专业的程序员这是必备然这道题目十分简单,但是作为一个专业的程序员这是必备的常识。所谓闰年,是要符合下面两个条件之一:的常识。所谓闰年,是要符合下面两个条件
9、之一:(1)该年份能被)该年份能被4整除,但不能被整除,但不能被100整除;整除;(2)该年份能被)该年份能被4整除,又能被整除,又能被400整除。整除。只要符合以上的两条件之一的年份都是闰年。最简单只要符合以上的两条件之一的年份都是闰年。最简单的判断闰年的方法是用条件判断语句(的判断闰年的方法是用条件判断语句(if-else语句)配合逻语句)配合逻辑表达式进行判断,充分地利用逻辑表达式进行判断可使程辑表达式进行判断,充分地利用逻辑表达式进行判断可使程序的可读性更好,效率更高。序的可读性更好,效率更高。4.6 指针变量作参数指针变量作参数题目要求:题目要求:编写一个函数编写一个函数inputA
10、rray,该函数被主函数调用,通,该函数被主函数调用,通过该函数实现向主函数中定义的数组输入数据。过该函数实现向主函数中定义的数组输入数据。题目分析:题目分析:程序设计结构化要求将具有特定功能的程序块编写成程序设计结构化要求将具有特定功能的程序块编写成函数,这样程序结构清晰,可读性强,易于调试,代码的复函数,这样程序结构清晰,可读性强,易于调试,代码的复用性强。因此把向数组中输入数据这样的程序块单独编写成用性强。因此把向数组中输入数据这样的程序块单独编写成为一个函数,通过主函数调用实现其功能,这样符合结构化为一个函数,通过主函数调用实现其功能,这样符合结构化程序设计的要求。程序设计的要求。但是
11、这里重要的一点是如何通过被调函数改变主函数但是这里重要的一点是如何通过被调函数改变主函数中的值。我们知道,函数的调用是在内存的堆栈中实现的。中的值。我们知道,函数的调用是在内存的堆栈中实现的。因此,一旦函数调用完毕,该函数内部的所有局部变量都会因此,一旦函数调用完毕,该函数内部的所有局部变量都会被释放掉。被释放掉。4.7 矩阵的转置运算矩阵的转置运算题目要求:题目要求:用键盘从终端输入一个用键盘从终端输入一个3行行4列的矩阵,编写一个函数列的矩阵,编写一个函数对该矩阵进行转置操作。对该矩阵进行转置操作。题目分析:题目分析:这个问题的解决关键是要解决两个问题:(这个问题的解决关键是要解决两个问题
12、:(1)数据在)数据在内存中的存储问题,也就是数据结构的问题;(内存中的存储问题,也就是数据结构的问题;(2)如何通)如何通过函数来实现矩阵的转置运算。显然,可以用一个二维数组过函数来实现矩阵的转置运算。显然,可以用一个二维数组来存储矩阵的数据,通过将二维数组的指针作为函数的参数来存储矩阵的数据,通过将二维数组的指针作为函数的参数进行传递,来实现矩阵转置函数的功能。进行传递,来实现矩阵转置函数的功能。4.8 矩阵的乘法运算矩阵的乘法运算题目要求:题目要求:有两个矩阵有两个矩阵A1和和A2,分别如下:,分别如下: 编写一个程序,实现这两个矩阵的乘积。编写一个程序,实现这两个矩阵的乘积。题目分析:
13、题目分析:从上面的计算法则中不难看出,要计算两个矩阵的乘积需要从上面的计算法则中不难看出,要计算两个矩阵的乘积需要三重循环。即:三重循环。即:A矩阵的第矩阵的第m行和行和B矩阵的第矩阵的第n列各元素相乘,得到列各元素相乘,得到cmn。A矩阵的第矩阵的第m行分别和行分别和B矩阵的第矩阵的第1k列相乘,得到列相乘,得到cm1,cm2.cmk。A矩阵的第矩阵的第1i行分别与矩阵的行分别与矩阵的n列相乘,得到最终结果。列相乘,得到最终结果。因此,解决矩阵相乘的问题的一种比较简单的方法就是用三因此,解决矩阵相乘的问题的一种比较简单的方法就是用三重循环嵌套语句。重循环嵌套语句。1123456A210234
14、1566890A 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;其中其中为安位
15、异或运算。这样同样可以达到为安位异或运算。这样同样可以达到a、b两值互换的目的。两值互换的目的。4.10 文件的读写文件的读写题目要求:题目要求:创建一个后缀名为创建一个后缀名为txt的文件,并向该文件中写入一个字的文件,并向该文件中写入一个字符串,保存起来。再打开该文件,读出文件中的内容。符串,保存起来。再打开该文件,读出文件中的内容。题目分析:题目分析:本题主要考查对文件的读写操作。本题主要考查对文件的读写操作。C库函数中提供了一库函数中提供了一组对文件操作的函数,即组对文件操作的函数,即I/O函数,通过调用这些函数程序员函数,通过调用这些函数程序员可以编写程序操纵磁盘上的文件,来实现软件
16、特定的功能。可以编写程序操纵磁盘上的文件,来实现软件特定的功能。 I/O函数也叫输入输出函数,是函数也叫输入输出函数,是C标准库函数中十分重要标准库函数中十分重要的一类函数。所有的一类函数。所有I/O函数都定义在函数都定义在的头文件中。因的头文件中。因此,在编写程序时要将头文件此,在编写程序时要将头文件包含在源程序的文档包含在源程序的文档中。中。4.11 计算文件的大小计算文件的大小题目要求:题目要求:编写一个编写一个C程序,用来计算指定文件的大小。程序,用来计算指定文件的大小。题目分析:题目分析:计算指定文件大小的方法很多。最直观的方法是通过计算指定文件大小的方法很多。最直观的方法是通过扫描
17、整个文件计算出文件的字节数。但是这种方法对系统的扫描整个文件计算出文件的字节数。但是这种方法对系统的开销很大,比较浪费时间。可以巧妙地利用开销很大,比较浪费时间。可以巧妙地利用I/O库中提供的库中提供的函数来进行文件大小的判定。函数来进行文件大小的判定。4.12 记录程序的运行时间记录程序的运行时间题目要求:题目要求:任意编写一段程序,要求纪录并输出该段程序执行的任意编写一段程序,要求纪录并输出该段程序执行的时间。时间。题目分析:题目分析:在调试程序,分析代码和算法的性能,查找系统瓶颈在调试程序,分析代码和算法的性能,查找系统瓶颈等时候,经常要统计一段代码或者一个模块执行的时间,通等时候,经常
18、要统计一段代码或者一个模块执行的时间,通过观察代码执行的时间来分析代码的复杂度,效率和性能。过观察代码执行的时间来分析代码的复杂度,效率和性能。因此知道如何记录程序运行的时间是一个程序员的基本功。因此知道如何记录程序运行的时间是一个程序员的基本功。4.13 十进制十进制/二进制转化器二进制转化器题目要求:题目要求:编写一个程序,将输入的十进制数转化为二进制表示编写一个程序,将输入的十进制数转化为二进制表示。例如:输入十进制数。例如:输入十进制数64,输出二进制数表示,输出二进制数表示1000000。题目分析:题目分析:将一个十进制数转化为二进制数一般采取将一个十进制数转化为二进制数一般采取“除
19、除2取余取余”的方法。例如将十进制数的方法。例如将十进制数62转化为二进制表示,方法如下:转化为二进制表示,方法如下:4.14 打印特殊图案打印特殊图案题目要求:题目要求:在应用在应用C语言开发程序时,有时为了程序运行界面的美观,语言开发程序时,有时为了程序运行界面的美观,需要在屏幕上用字符构成一些特殊的图案用以装饰。请设计一个需要在屏幕上用字符构成一些特殊的图案用以装饰。请设计一个C程序,实现在屏幕上输出一个类似于下面的图案:程序,实现在屏幕上输出一个类似于下面的图案:* * * * * * *题目分析:题目分析:这种关于特定格式输出的问题,最重要的一点是理解输出这种关于特定格式输出的问题,
20、最重要的一点是理解输出格式的规律。只要理解了输出格式的规律,通过简单的循环语句格式的规律。只要理解了输出格式的规律,通过简单的循环语句就可以显示出希望得到的图案。就可以显示出希望得到的图案。4.15 打印杨辉三角打印杨辉三角题目要求:题目要求:在屏幕上打印出一个在屏幕上打印出一个6阶杨辉三角。阶杨辉三角。题目分析:题目分析:杨辉三角又称为贾宪三角,是我国北宋数学家贾宪于杨辉三角又称为贾宪三角,是我国北宋数学家贾宪于1050年首先发现并使用的。而后南宋数学家杨辉在年首先发现并使用的。而后南宋数学家杨辉在详解详解九章算法九章算法一书中记载并保存了一书中记载并保存了“贾宪三角贾宪三角”。因此贾宪三。
21、因此贾宪三角又被称为杨辉三角。杨辉三角的发现是我国数学史上光辉角又被称为杨辉三角。杨辉三角的发现是我国数学史上光辉灿烂的一页,它要比法国数学家帕斯卡发现的灿烂的一页,它要比法国数学家帕斯卡发现的“帕斯卡三角帕斯卡三角”(即杨辉三角)早(即杨辉三角)早600多年。多年。4.16 复杂级数的前复杂级数的前n项和项和题目要求:题目要求:求级数的前求级数的前10项和项和S10。题目分析:题目分析:本题要求级数的前本题要求级数的前10项和,将级数展开,实际就是求项和,将级数展开,实际就是求S10=(1/2)+(1/2)22!+(1/2)1010!。直观地看,最简单的解决。直观地看,最简单的解决方法就是应
22、用循环。最外层的循环控制每一项的相加运算;方法就是应用循环。最外层的循环控制每一项的相加运算;内层包含两个循环体,一个是计算内层包含两个循环体,一个是计算1/2的的n次方,一个是计算次方,一个是计算n的阶乘。的阶乘。4.17 寻找矩阵中的寻找矩阵中的“鞍点鞍点”题目要求:题目要求:在一个矩阵中,可能会有这样的元素:它在该行中最大,而在一个矩阵中,可能会有这样的元素:它在该行中最大,而在该列中最小。我们把这样的元素称为在该列中最小。我们把这样的元素称为“鞍点鞍点”。一个矩阵中也。一个矩阵中也可能没有鞍点。任意输入一个可能没有鞍点。任意输入一个5*5的矩阵,寻找该矩阵中的鞍点,的矩阵,寻找该矩阵中
23、的鞍点,并将它在矩阵中的位置(行,列)输出。并将它在矩阵中的位置(行,列)输出。题目分析:题目分析:仔细分析鞍点的定义可知,在一个矩阵中,最多出现一个鞍仔细分析鞍点的定义可知,在一个矩阵中,最多出现一个鞍点。点。因此在设计寻找鞍点的算法时,可以逐行寻找鞍点。先找出因此在设计寻找鞍点的算法时,可以逐行寻找鞍点。先找出某行中最大的元素(要求同行中只能有一个最大的元素),再将某行中最大的元素(要求同行中只能有一个最大的元素),再将该元素与同列中的其他元素进行比较,如果该元素为同列中最小该元素与同列中的其他元素进行比较,如果该元素为同列中最小的元素,则该元素即为该矩阵的鞍点,于是返回它在矩阵中的位的元
24、素,则该元素即为该矩阵的鞍点,于是返回它在矩阵中的位置,程序结束;否则继续对下一行进行上述的操作。置,程序结束;否则继续对下一行进行上述的操作。4.18 n阶勒让德多项式求解阶勒让德多项式求解题目要求:题目要求:n阶勒让德多项式定义为:阶勒让德多项式定义为:编写程序,输入正整数编写程序,输入正整数n和任意数和任意数x,求出勒让德多项,求出勒让德多项式的值式的值Pn(x)。题目分析:题目分析:显然勒让德多项式的定义是一种递归形式的定义。因显然勒让德多项式的定义是一种递归形式的定义。因此要求出此要求出n阶的勒让德多项式的值,最简单的方法就是编写阶的勒让德多项式的值,最简单的方法就是编写一个递归函数实现。一个递归函数实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消防救援行动中的决策机制及应对效果研究试题及答案
- 医护人士的团队合作试题及答案
- 答疑指导 2024年高级审计师考试试题及答案
- 医疗设备采购中的金融策略研究
- 航空器维修检查单填写试题及答案
- 评估2024年高级审计师审计技术应用的有效性试题及答案
- 科学备考方法无人机驾驶员考试试题及答案
- 中级会计考试与审计的联系与学习策略试题及答案
- 高级会计职业道德与规范试题及答案
- 施工现场安全责任试题及答案
- 2024年爱数技术认证工程师考试题目
- 北师大版 2024-2025学年四年级数学上册典型例题系列第六单元:商的变化规律和商不变的性质专项练习(原卷版+解析)
- 2024年英语B级考试真题及答案
- 空调维护保养“三措两案”及空调维修保养方案
- 人教版五年级英语123单元测试卷名校版含答案
- 施工升降机安装拆卸安全教育
- 农村土地承包法知识讲座
- 采购培训总结报告
- 草木缘情:中国古典文学中的植物世界
- 中国绝缘材料产品及应用手册
- 擒拿格斗课件
评论
0/150
提交评论