一、实验作业

注意:

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. 申请Jetbrain教育帐号,免费使用一年

    JetBrains是一家捷克的软件开发公司.旗下IDE产品有(不限于):(1) IntelliJ,IDEA  Java集成开发工具:(2) PHPStorm,PHP 集成开发工具:(3) PyChar ...

  2. 自定义WIZ文档模板

    WIZ文档模板 1.在wiz笔记里面新建一个笔记,并将其做成一个模板 例子: 2.该作为模板的笔记制作完成后,右键-高级-另存为  导出为html格式 3.将导出的文件和文件夹(有时候只有一个htm文 ...

  3. Maven 搭建 SSM 项目 (oracle)

    简单谈一下maven搭建 ssm 项目 (使用数据库oracle,比 mysql 难,所以这里谈一下) 在创建maven 的web项目时,常常会缺了main/java , main/test 两个文件 ...

  4. Bzoj4237:稻草人

    题面 传送门 Sol \(CDQ\)分治 先对\(x\)排序,对\(y\)在\(CDQ\)分治是从大到小排序 从大到小加入,右边用单调栈维护\(x\)递增,\(y\)递减的序列 左边就是找到\(x\) ...

  5. sudo解决方案企业级应用实战

    visudo 编辑sudo配置文件 which  查找命令所在路径 例:touch /etc/oldboy.txt  没证件 sudo touch /etc/oldboy.txt  可以 内置命令没路 ...

  6. 服务器 Disk full

    General error: 1021 Disk full (/tmp/#sql_24a3_0.MAI); waiting for someone to free some space... (err ...

  7. 互联网产品mysql数据库设计总结

    mysql数据库性能不比oracle数据库,所以设计上,和oracle有一些不同.下面总结一些互联网产品的数据库设计. 1.主键 主键可以使用bigint(20) unsigned也可以使用varch ...

  8. C# Redis实战(一)

    一.初步准备 Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库.Redis的出现,很大程度补偿了memcached这类key/va ...

  9. PHP+MySQL分页原理实现

    功能简介:包含上一页.下一页.首页.尾页.跳转页面等功能. 编码寄语:化繁为简,则豁然开朗. 运行截图: 关键步骤: 创建数据库 CREATE TABLE `page` ( `ID` ) NOT NU ...

  10. IO模式和IO多路复用

    网络编程里常听到阻塞IO.非阻塞IO.同步IO.异步IO等概念,总听别人装13不如自己下来钻研一下.不过,搞清楚这些概念之前,还得先回顾一些基础的概念. 1 基础知识回顾 注意:咱们下面说的都是Lin ...