C语言--函数嵌套
一、实验作业
注意:
1.可以先初始化2个结构体数组数据以便测试。
2.要求用模块化方式组织程序结构,合理设计各自定义函数。同时,程序能够进行异常处理,检查用户输入数据的有效性,用户输入数据有错误,如类型错误或无效不会中断程序执行,具有一定的健壮性。
1.1 PTA题目 十进制转换二进制
设计思路
主函数:
定义变量n存放十进制数
输入n
调用函数dectobin
被调函数:
如果n<2输出n
否则
dectobin(n/2);
输出n取2的余数
代码截图
调试问题
一开始使用的判断条件是n!=0,但是0这个测试点没有输出,添加0的输出后非0数值转换结果又错了,后来改用n<2为判断条件答案正确
1.2 学生成绩管理系统
代码总行数:340
1.2.1 画函数模块图,简要介绍函数功能。
1.2.2 截图展示你的工程文件
1.2.3 函数代码部分截图
头文件
插入学生信息及学生成绩信息代码
【只实现了基础功能,合法性没有判断】
删除学生成绩信息代码
【题目是删除成绩,觉得这样操作和修改成绩的代码其实没有区别了】
总分排序代码
(通过输出实现代码注释方便使用操作)
1.2.4 调试结果展示
录入数据
命令1:新增学生信息
新增学生是否已存在
命令3:删除学生信息
命令2:修改学生信息
命令4:输出所有信息
命令5:按总分,平均分排序输出
命令6:查询学生信息
找不到该学生
命令7:退出系统
1.2.5 调试碰到问题及解决办法。
(1)开始建的是c++项目,一加函数就提示结构体重定义,重建项目还是不行,后来重写了结构体,建立新项目,这个问题解决了,但是又出现全局变量函数中提示未定义,改用c项目后解决。
(2)
插入新学生时,循环中数组下标使用了i,而i初值设为0,导致第一组数值被覆盖,换用count后解决
(3)忘记定义的是字符数组,排序时用整型比较的方式寻找输入学号,导致排序一直错误,后改正
二、截图本周题目集的PTA最后排名
三、阅读代码
找一篇优秀代码贴图展示,先描述题目,再贴代码,可自己在里面加注释。
说明该代码功能是什么,优点是什么?
代码本次要求找递归相关代码。代码长度至少10行以上。
内容不能太泛,一定是有针对性讲出代码优势,自己可以从里面怎么学习。
功能:主函数控制输出格式,被调函数利用递归计算数列元素的值
优点:(1)主函数里动态申请变量空间,不浪费内存空间
(2)斐波拉契数列是比较典型的使用递归的例子,如果使用循环,另外判断n=1和n=2时的情况是可以的,但是从第三项起,要计算第n-2项和第n-1项之和就有点不好操作了,是不是还得用数组存放数值?代价就有点大了。而递归将这种重复性的一样的操作直接丢给计算机去做,代码思路看上去也清晰很多
四、本周学习总结
1.介绍本周学习内容
1.1while(1)可以实现永久循环,通过循环体中的break语句结束循环
1.2#define宏定义将固定不变的系数定义成符号常量,保证符号常量不变性,也增加程序可读性
1.3宏定义格式:#define 宏名 宏定义字符串 【行尾无需加分号,常用大写字母串做宏名,中间可有空格,回车符结束】
1.4在程序编译时,所有出现宏名的地方,都会用宏定义字符串来替换,即宏替换,只替换不做运算。
1.5宏要在一行内完成,可实现简单的函数功能,如 #define MAX(a,b) a>b?a:b
另外如果#define最后跟的“\”表示改行未结束,与下一行合起来成为完整一行
1.6宏嵌套定义:#define PI 301415926
#define S PIrr
1.7文件包含的指定的文件名如果使用尖括号<>将使用C语言的标准头文件,编译系统在系统设置好的文件夹中把指定文件包含进来。使用“”则从当前工作文件夹中寻找被包含文件,找不到再到系统中寻找。
1.8条件编译
1.9
01.外部变量格式:extern 变量名表
1)只起说明作用,不分配储存单元,对应的储存单元在定义时分配
2)全局变量只能在某个模块中定义一次,如果其他模块要使用该全局变量,需要外部变量的声明
02.函数的外部声明
1)格式:extern 函数类型 函数名
2)实现在一个模块中调用另一个模块中的函数
2.1一维数组
(1)一般格式:类型名 *数组名【数组长度】
(2)指针数组是由指针变量构成的数组,在操作中既可以对数组元素进行赋值和引用,也可以间接访问数组元素所指向的的单元内容,改变或引用该单元的内容
2.2二维数组
(1)二维数组相当于二级指针,即指向指针
(2)指向指针一般定义:类型名 * *变量名
(3)二级指针指向一级指针,代表同一个单元,值是相等的
2.3二维数组a中三个层次的指针等价关系
(1)a是行元素数组的首地址,又称为行地址,二级指针;a是首行第一个元素的地址,又称列地址,一级指针
(2)a[i][j]等价于((a+i)+j)或(a[i]+j)
2.4定义二维字符数组必须指定列长度大于最长字符串的有效长度,由于各个字符串的长度一般不相同,会造成内存单元的浪费。而指针数组并不存放字符串,仅仅用数组元素指向各个字符串,没有类似问题
2.5所有的局部数据对象在函数返回就会消亡,其值不再有效,所以不能实现函数时返回在函数内部定义的局部数据对象的地址,一般都返回全局数据对象或主调函数中数据对象的地址
2.6 函数名可以做函数的实参,函数指针做函数的形参
2.学习体会
学的比较零散,所以做系统的时候有点乱了阵脚,知道整个框架要怎么做,但是具体到细节就不确定了,一直在改错误,改不完的感觉,叹气,做系统真的很考验学习的扎不扎实。这周学的东西更体会到知识点的联系的重要性。系统写不出来的时候有挫败感,有点担心期末的课程设计。
C语言--函数嵌套的更多相关文章
- C语言函数嵌套调用作业总结
成绩管理系统作业小结 devc中出现"ID Return"问题,我帮很多同学看完后发现,大部分还是自身程序问题,如全局变量大小写错误.没有添加c文件进工程等等.所以对于" ...
- C语言函数嵌套调用作业
一.实验作业 1.1 PTA题目:6-4 十进制转换二进制 设计思路 如果n大于1 对n/2继续进行该函数运算 输出n%2的值 代码截图 调试问题 我第一次做的时候判断的边界条件是大于0继续进行运算, ...
- C语言--函数嵌套调用
一.实验作业(6分) 本周作业要求: 选一题PTA题目介绍. 学习工程文件应用,设计实现学生成绩管理系统. 学生成绩管理系统要求 设计一个菜单驱动的学生成绩管理程序,管理n个学生m门考试科目成绩,实现 ...
- Swift2.0语言教程之函数嵌套调用形式
Swift2.0语言教程之函数嵌套调用形式 Swift2.0语言函数嵌套调用形式 在Swift中,在函数中还能够调用函数,从而形成嵌套调用.嵌套调用的形式往往有两种:一种是在一个函数中调用其它函数:还 ...
- c语言函数的嵌套使用和矩阵运算
这段时间,听刚刚学习c的同学说函数嵌套运用不太熟练,想做一个简单的程序进行练习,我也就当练练手了,哈哈.虽然说是比较简单,但是其中的思维也是值得思考的. 一.函数的嵌套使用 简单说明题目:对于等式 y ...
- iOS学习05C语言函数
本次主要是学习和理解函数,函数树状图如下: 1.函数的声明和定义 函数定义的四要素分别为: 返回值类型 :函数的结果值类型,函数不能返回数组. 指定返回类型是void类型说明函数没有返回值. 函数名 ...
- 不使用回调函数的ajax请求实现(async和await简化回调函数嵌套)
在常规的服务器端程序设计中, 比如说爬虫程序, 发送http请求的过程会使整个执行过程阻塞,直到http请求响应完成代码才会继续执行, 以php为例子 $url = "http://www. ...
- python基础—函数嵌套与闭包
python基础-函数嵌套与闭包 1.名称空间与作用域 1 名称空间分为: 1 内置名称空间 内置在解释器中的名称 2 全局名称空间 顶头写的名称 3 局部名称空间 2 找一个名称的查找顺序: ...
- python基础----函数的定义和调用、return语句、变量作用域、传参、函数嵌套、函数对象、闭包、递归函数
1.函数的定义: 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可 ...
随机推荐
- MySql获取所有表名
如何获取MySql中所有表的的表名? sql语句是:show tables 返回结果如下: 不仅仅返回了所有的表名,更返回了视图的名字.
- @SuppressWarnings("unchecked")(解决标准的后台HttpServletRequest request, HttpServletResponse response)格式
在springmvc的应用中有些限制会出现必须是 public void save(HttpServletRequest request, HttpServletResponse response) ...
- freemark标签从后台接过来数据Boolean在前台还是Boolean输出(四)
FREEMARK标签中输出BOOLEAN值 private boolean showHeader=true; public boolean getShowHeader(){ return this.s ...
- 修复TortoiseGit文件夹和文件图标不显示
原文:http://blog.moocss.com/tutorials/git/1823.html 一. 我的运行环境: 操作系统 Windows 7/8 32bit TortoiseGit (1.7 ...
- VirtualBox 创建com对象失败 应用程序被中断
安装VirtualBox后,打开,报错: 解决方法: 1,注册VBoxC.dll 控制台切换到VirtualBox目录 E:\VirtualBox>VBoxSVC /ReRegServer E: ...
- [Luogu2463][SDOI2008]Sandy的卡片
BZOJ权限题qwq Luogu sol "两个子串长度相同且一个串的全部元素加上一个数就会变成另一个串" 其实就是差分一波以后完全相同 所以对输入的数据进行差分,同时记一下每一个 ...
- NOIP2010题解
所有题目链接均来自洛谷 T1机器翻译 原题戳这里 自古T1是水题 因为每一个数字都小于1000,所以对于是否在队列中可以开数组查询 对于大小的限制,弄一个队列维护大小即可(水题呀...) 这题在Win ...
- Django Middleware简介
1 前言 Django使用非常熟练了,各种API接口不在话下,全都搞定.为方便定位问题在每个API接口的的开始和返回的地方都加上了log打印,记录入参和返回值. 但是这样有一个问题,需要每个 ...
- Session和Cookie总结
一.Session和Cookie 1.Cookie 1.cookie创建于服务器,保存于浏览器,保存了特定网站操作记录和资料凭证的信息. 2.未设置cookie期限的时候,默认是关闭浏览器后cooki ...
- 关于word2016中mathtype无法使用以及“由于宏安全设置,无法找到宏或宏已被禁用”的解决方案
版本描述: 系统:win10 64位 word: 2016版 32位 Mathtype: 6.9d (6.9b也出现相同问题,应该可以通过相同的方法解决) 问题描述: 自从在一次win10更新之后,w ...