C语言博客作业03--函数
0.展示PTA总分:
1.本章学习总结.
1.1学习内容总结.
1.11函数:
--函数是C语言程序的基本组成单元,迄今为止编写的每一个程序都需要用到函数,如main(),printf(),scanf()等函数.充分发挥函数功能,可以使程序容易编写,阅读,调试和修改.
--它是一个完成特定工作的独立程序模块,包括库函数和自定义函数两种.
--从函数实现计算功能角度来看,C的函数与数学上的函数概念十分接近.
其一般定义格式如下:
函数类型 函数名 (形式参数表)
{
函数实现过程
}
--函数的形参必须是变量,用于接收实参传递过来的值;实参可以是常量,变量或变量表达式,其作用是把常量,变量或变量表达式的值传递给形参.
--函数结果返回时,若表达式的值与函数类型不一致,以函数类型为准.
--函数类型中有一种不返回结果的,void.在函数体中可以使用没有表达式的return语句,也可以省略return,其虽然不直接返回一个值,但它的作用通常以屏幕输出等方式体现.
注:>充分理解函数调用与返回的实现过程,对学好函数程序设计至关重要
1.12结构化程序设计思想
--结构化程序设计强调程序设计的风格和程序结构的规范化,提倡清晰的结构,其基本思路是将一个复杂问题的求解过程划分为若干阶段,每个阶段要处理的问题都容易被理解和处理.
--其包括按自顶向下的方法对问题进行分析,模块化设计和结构化编程3个步骤.
--适合规模较大的程序设计.
--自顶向下分析问题的方法:
面对一个复杂的问题,首先进行上层的整体的分析,依照组织或功能不断将问题分解成子问题,直到处理对象相对简单,容易处理为止
--模块化设计:
在这个阶段,需要将模块组织成良好的层次系统,顶层模块调用下层模块以实现程序的完整功能(模块化设计时要使模块之间的联系尽量简单)
(1)一个模块只完成一个指定的功能.
(2)模块之间只通过参数进行调用.
(3)一个模块只有一个入口和一个出口.
(4)模块内慎用全局变量.
这样的设计使程序结构清晰利于设计和理解
--结构化编码的主要原则:
(1)经模块化设计后,每一个模块都可以独立编码.
(2)对常量,变量,函数等命名时要见名知意.
(3)在程序中增加必要的注释,以增加可读性.
(4)有良好的程序视觉组织
(5)语句构造要简单直接.
(6)程序要有良好的交互性.
1.13局部变量与全局变量
--局部变量:
-C语言中把定义在函数内部的 变量称为局部变量.
-局部变量的有效适用范围最大程度上确保了各函数之间的独立性,避免函数间的相互干扰.
-此外C语言还允许定义作用于复合语句中的局部变量,同样其只能定义在开始处,
--全局变量:
-定义在函数外而不属于任何函数的变量称为全局变量
-由于其作用范围是从定义开始到程序所在文件的结束,所以全局变量能够解决多个函数间的变量共用.
注:当局部变量与全局变量同名时,局部变量的优先级高于全局变量
1.14静态变量与变量生存周期
--变量生存周期:
-变量从定义开始分配存储单元.到运行结束存储单元被回收,整个过程被称为变量生存周期
-因此,全局变量的生存周期是整个函数执行周期.而局部变量只在被调函数被调用时存在.
--静态局部变量:
-不会因函数调用的结束而被系统回收的的变量被称作静态局部变量
-其存放于静态存储区
-静态变量赋初值只在函数第一次调用时起作用,若没有符初值,系统将自动赋零.
1.2本章学习体会
(1)通过学习函数,发现编程要想实现大规模的程序设计,就必须学会琢磨透问题的本质,对问题精准划分
(2)将问题分析到基本层面后,就考验基本功了,发现自己基本功并不扎实,例如随机数,时间函数都没掌握,使我在做综合作业时很吃力
(3)通过学习局部与全局变量,静态变量等知识,使我认识到计算机实现一系列花里胡哨的东西的机制原来是这样
(4)了解了结构化的思想让我认识到编程也是讲究美学的,写代码不仅是一种思想的过程也是一种审美的过程
1.21本次综合作业代码量:356.
2.综合作业
2.1综合作业函数关系图:
2.2函数功能及全局变量介绍
该界面显示的是全部变量及全部函数的定义和将实现的功能
其中,other0,other1,other2,为辅助函数,用于省去一些需要重复处理的问题;rdm()是随机数函数.
gradeone,two,three,三个函数及其所包含的各个函数为主要功能实现函数,其所包含的不同函数对应着不同的题型
\
这里显示的是main()函数
\
other0函数主要是为了保证用户能正确进入系统,这里我特地用了百度到的吸收字符的scanf("%[^\n]%c");语句
这里实现了用户对不同题型的需求,虽然界面清晰明了,但后续对各个分支的细节处理并不是很好
这就是具体的各个题型函数的实现,由于各个函数使用的结构大差不差,自己的编程能力有限,所以对其具体功能实现不佳
3.运行结果截图
一年级:
二年级:
三年级:
PS:由于代码的交互性做的很差,这里只展示了每个年级的三个题型,下次会更加努力的!
5.调试遇到的问题及解决办法:
1.随机数相同的问题:
解决方法:百度,由于使用时间函数返回值的单位导致产生的两个随机数一样,所以去除srand()函数即可
2.代码重复度过高
解决方法:千方百计地绞尽脑汁地构造函数
3.时间限制,中途退出,部分计算功能等由于能力有限,现并未解决这些问题,希望我在接下来的学习中能逐步解决.
6.综合作业总结
这次作业让我认识到,自己也是有能力编写一些小程序的,但是要耐得下性子,细心分析问题,慢慢转换到自己所学的知识,通过这种训练,我觉得不仅会使同学们渐渐爱上代码,也会是同学们养成良好的学习习惯.
写完这个程序,就像老师说的那样,还是有那么一点成就感的,虽然编写的不怎么滴,但是我真的体会到那种一步步解决问题的乐趣与兴奋.在这个过程中,也逐渐加深了对编程的认识,真心想对那些利用编程造福人类的码农们说:你们是最棒的!同时我也认识到:自己也应该向他们学习,默默积累,坚持打代码,磨练自己的编程技能.