C语言博客作业--函数嵌套调用
一、实验作业
1.1 PTA题目
6-4 十进制转换二进制
设计思路
void dectobin( int n )
定义整型变量 i;
当i不比二小时,i=n/2执行该函数
递归输出n%2的值
代码截图
调试问题
一开始的思路有点模糊,然后感觉该题与课堂派的期中考递归题的思路有点相似,借鉴思考后正确
1.2 学生成绩管理系统
1.2.1 画函数模块图,简要介绍函数功能
1.2.2 截图展示你的工程文件
1.2.3 函数代码部分截图
头文件
插入学生信息及学生成绩信息代码
删除学生成绩信息代码
总分排序代码
本系统代码总行数:294
1.2.4调试结果展示
能够新增学生信息:
对输入重复有处理
根据输入学号和课程号修改学生成绩信息:
6学号原先的数据:
对6学号数学进行修改:
根据输入学号和课程删除学生成绩信息:
删除6学号的数学成绩:
输出显示所有学生成绩信息。(按照学号排好序的)
能够分别按照总分和平均分进行排序:
能够根据学号查询学生信息
1.2.5 调试碰到问题及解决办法
最早是显示源文件未编译,后重新弄项目,添加进去就可以了
文件存放问题,后有发现头文件没放到同目录下
成绩的输入问题,自己看代码后发现是自己的scanf语句有问题,定义double却用%d
自己在最开始增加代码时想以增加的形式,即第二次及其以后是要在原有的基础上增加还是清空重新赋数据,出现了循环问题,无法重复录入
后发现是自己的循环问题,写i=count为最初赋值,然而count也随循环改变,后自己重新用count1变量来赋i循环初值
自己在弄学生系统时没把要求理解好,要求是插入新增,一直保持有序状态,而自己以为只要输入,排序的问题自己在输完排序
在用dev-c++运行时系统总会出现运行失误问题,回跳到其他的界面,有些文件弄好却会显示找不到,我都是自己再新建才能重新运行
自己的系统还存在着较多的不完善
二、截图本周题目集的PTA最后排名
三、阅读代码
这是一个运用递归输出1,2,3的所有排列方式的代码
我认为该代码用递归的方式比较简洁,若以以往的思维罗列,那将大大复杂化且易出错,该代码函数的使用、调用与条件应好好思考
四、本周学习总结
1.介绍本周学习内容
宏基本定义:
define 宏明 宏定义字符串
- 宏定义尾号无需跟分号,如果跟分号视为宏替换内容
- 宏定义字符串可以是任意字符串,中间可以有空格,以回车结束
- 当# define后面跟杠符表示该行未结束,与下一行合起来成为完整一行,但一般不提倡把整个C语句简写成宏
- C语言允许宏嵌套定义
如:# define PI 3.1415
# define S PI*r*r
- 宏替换不做计算,直接替换进去,要避免计算问题,要增加括号
文件包含
- 格式:# include <需包含的文件名> 或 # include "需包含的文件名"
- 使用<>时表示使用C语言的标准头文件,使用“”表示到当前工作文件夹寻找或再到系统include文件夹中寻找,适用于编程者自己的包含文件
编译预处理
- 功能主要包括文件包含( # include)、宏定义( # define)、条件编译
- 条件编译
#define FLAG 1
# if FLAG
程序段1
# else
程序段2
#endif
外部变量
- 声明格式:extern 变量名表
字符串之间的比较与赋值不能直接进行,要记得调用函数
指针数组
- 一维指针数组:类型名 * 数组名[数组长度];
- 指向指针的指针定义(二级指针):类型名 * * 变量名;
- 二维数组的指针形式:a+i是第i行的地址,* (a+i)是i行首元素的地址,* ( * a+i )第i行首元素的值,a[i][j]等同于* ( * (a+i)+j )或* (a[i]+j)
- 指针数组不存放字符串,仅仅用数组元素指向各个字符串,不造成内存单元的浪费
- 不能在实现函数时返回在函数内部定义的局部数据对象的地址,所有的局部数据对象在函数返回时就会消亡,不再有效
错题
该题很好的体现指针与数组的指向表示问题