一、实验作业

注意:

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语言--函数嵌套的更多相关文章

  1. C语言函数嵌套调用作业总结

    成绩管理系统作业小结 devc中出现"ID Return"问题,我帮很多同学看完后发现,大部分还是自身程序问题,如全局变量大小写错误.没有添加c文件进工程等等.所以对于" ...

  2. C语言函数嵌套调用作业

    一.实验作业 1.1 PTA题目:6-4 十进制转换二进制 设计思路 如果n大于1 对n/2继续进行该函数运算 输出n%2的值 代码截图 调试问题 我第一次做的时候判断的边界条件是大于0继续进行运算, ...

  3. C语言--函数嵌套调用

    一.实验作业(6分) 本周作业要求: 选一题PTA题目介绍. 学习工程文件应用,设计实现学生成绩管理系统. 学生成绩管理系统要求 设计一个菜单驱动的学生成绩管理程序,管理n个学生m门考试科目成绩,实现 ...

  4. Swift2.0语言教程之函数嵌套调用形式

    Swift2.0语言教程之函数嵌套调用形式 Swift2.0语言函数嵌套调用形式 在Swift中,在函数中还能够调用函数,从而形成嵌套调用.嵌套调用的形式往往有两种:一种是在一个函数中调用其它函数:还 ...

  5. c语言函数的嵌套使用和矩阵运算

    这段时间,听刚刚学习c的同学说函数嵌套运用不太熟练,想做一个简单的程序进行练习,我也就当练练手了,哈哈.虽然说是比较简单,但是其中的思维也是值得思考的. 一.函数的嵌套使用 简单说明题目:对于等式 y ...

  6. iOS学习05C语言函数

    本次主要是学习和理解函数,函数树状图如下: 1.函数的声明和定义 函数定义的四要素分别为: 返回值类型 :函数的结果值类型,函数不能返回数组. 指定返回类型是void类型说明函数没有返回值. 函数名 ...

  7. 不使用回调函数的ajax请求实现(async和await简化回调函数嵌套)

    在常规的服务器端程序设计中, 比如说爬虫程序, 发送http请求的过程会使整个执行过程阻塞,直到http请求响应完成代码才会继续执行, 以php为例子 $url = "http://www. ...

  8. python基础—函数嵌套与闭包

    python基础-函数嵌套与闭包 1.名称空间与作用域 1 名称空间分为: 1 内置名称空间   内置在解释器中的名称 2 全局名称空间   顶头写的名称 3 局部名称空间 2 找一个名称的查找顺序: ...

  9. python基础----函数的定义和调用、return语句、变量作用域、传参、函数嵌套、函数对象、闭包、递归函数

    1.函数的定义: 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可 ...

随机推荐

  1. [mysql] 2进制安装和简单优化

    ##################################mysql 2进制安装和简单优化################################################## ...

  2. 用winscp从本地上传文件到服务器上出现复制文件到远端时错误。

    用winscp从本地上传文件到服务器上出现复制文件到远端时错误. 错误码:4 服务器返回的错误消息:write failed 报错如下图所示: 分析过程: 1.刚开始以为是权限不够,后面上网查了一下是 ...

  3. zookeeper选举

    什么时候开始进行选举 1.服务器初始化启动的时候2.服务器运行期间连接不上leader的时候 初始化选举过程 进行leader选举至少需要两台服务器,我们这里举例为5台服务器(1,2,3,4,5)1. ...

  4. C#图解教程 第七章 类和继承

    类和继承 类继承访问继承的成员所有类都派生自object类屏蔽基类的成员基类访问使用基类的引用 虚方法和覆写方法覆写标记为override的方法覆盖其他成员类型 构造函数的执行 构造函数初始化语句类访 ...

  5. linux用户和群组

    1.用户的主要群组和次要群组   切换用户:su -username 查看群组:#vi /etc/passwd         //主要群组                  #vi /etc/gro ...

  6. 微信退款 - tp5

    原文:http://www.upwqy.com/details/19.html 1 微信退款官方文档  https://pay.weixin.qq.com/wiki/doc/api/app/app.p ...

  7. 空间金字塔池化(Spatial Pyramid Pooling, SPP)原理和代码实现(Pytorch)

    想直接看公式的可跳至第三节 3.公式修正 一.为什么需要SPP 首先需要知道为什么会需要SPP. 我们都知道卷积神经网络(CNN)由卷积层和全连接层组成,其中卷积层对于输入数据的大小并没有要求,唯一对 ...

  8. SpringBoot初探之Swagger配置

    Swagger是一个用于描述和测试restful接口的工具,只要在定义restful接口时增加一些类和方法的描述注解,通过很简单的配置就可以得到一个展示接口定义页面,也可以在页面上设置参数提交测试接口 ...

  9. wpf 研究之道 winform or wpf,u choose who?

    很久以前,我们用winform做过一个五子棋的程序,当时用winform的画图,先画出棋盘...后来项目的研究阶段,偶尔用winform做个小工具.闲暇之余,看到介绍wpf的资料,只知道它采用了xam ...

  10. 反射、Attribute

    1.发射是对类或者对象,查看其类内部的构造. 2.类的组成:属性(PropertyInfo).方法(MethodInfo).字段(FiedInfo).构造函数(ConstructorInfo).事件( ...