C语言博客作业--函数嵌套调用

一、实验作业

1.1 PTA题目

6-4 十进制转换二进制

设计思路

void dectobin( int n )

  定义整型变量 i;
  当i不比二小时,i=n/2执行该函数
  递归输出n%2的值

代码截图

1233791-20171231195427523-457549.png

调试问题

一开始的思路有点模糊,然后感觉该题与课堂派的期中考递归题的思路有点相似,借鉴思考后正确

1.2 学生成绩管理系统

1.2.1 画函数模块图,简要介绍函数功能

1233791-20180105182504362-553514836.png

1.2.2 截图展示你的工程文件

1233791-20180103144307862-1571203932.png

1.2.3 函数代码部分截图

头文件

1233791-20180103144343081-1831083459.png

插入学生信息及学生成绩信息代码

1233791-20180103233100253-194689433.png
1233791-20180103233141690-2107767545.png

删除学生成绩信息代码

1233791-20180103170617503-1427660135.png

总分排序代码

1233791-20180103171053393-1481597212.png

本系统代码总行数:294

1.2.4调试结果展示

能够新增学生信息:

1233791-20180103233605628-2025896499.png
1233791-20180103233625893-1120323550.png

对输入重复有处理

1233791-20180105174754049-1391307993.png

根据输入学号和课程号修改学生成绩信息:
6学号原先的数据:

1233791-20180103233720815-50279354.png

对6学号数学进行修改:

1233791-20180103234117456-922924743.png

根据输入学号和课程删除学生成绩信息:
删除6学号的数学成绩:

1233791-20180103234258628-1847166935.png

输出显示所有学生成绩信息。(按照学号排好序的)

1233791-20180103234411174-1997290952.png

能够分别按照总分和平均分进行排序:

1233791-20180103234444065-648744877.png

能够根据学号查询学生信息

1233791-20180103234517659-602470561.png

1.2.5 调试碰到问题及解决办法

最早是显示源文件未编译,后重新弄项目,添加进去就可以了

1233791-20180105163858221-481684884.png
1233791-20180105163909815-1656703720.png

文件存放问题,后有发现头文件没放到同目录下

1233791-20180105164030049-258264176.png
1233791-20180105164211378-331295496.png

成绩的输入问题,自己看代码后发现是自己的scanf语句有问题,定义double却用%d
自己在最开始增加代码时想以增加的形式,即第二次及其以后是要在原有的基础上增加还是清空重新赋数据,出现了循环问题,无法重复录入
后发现是自己的循环问题,写i=count为最初赋值,然而count也随循环改变,后自己重新用count1变量来赋i循环初值
自己在弄学生系统时没把要求理解好,要求是插入新增,一直保持有序状态,而自己以为只要输入,排序的问题自己在输完排序
在用dev-c++运行时系统总会出现运行失误问题,回跳到其他的界面,有些文件弄好却会显示找不到,我都是自己再新建才能重新运行
自己的系统还存在着较多的不完善

二、截图本周题目集的PTA最后排名

1233791-20171231225520054-334019797.png

三、阅读代码

1233791-20180108112103238-1264522364.png

这是一个运用递归输出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)
  • 指针数组不存放字符串,仅仅用数组元素指向各个字符串,不造成内存单元的浪费
  • 不能在实现函数时返回在函数内部定义的局部数据对象的地址,所有的局部数据对象在函数返回时就会消亡,不再有效

错题

1233791-20171231223710429-173549702.png

该题很好的体现指针与数组的指向表示问题

1233791-20171231223923820-133318726.png
1233791-20171231224423601-847800843.png

要记得宏替换不做计算,直接替换进去!

1233791-20171231230415976-1670065827.png

A为正确

2学习体会

指针进阶,链表,学生系统...感觉C越来越复杂了,代码越来越难懂,
在做学生系统时自己也感觉到自我查错能力的重要性,
那么多的代码总数,许多的函数汇集,是难以调试,更多的是要提高自己的找错能力才能更高效率的完成
知识点的多与杂,也要好好理解消化,在一些知识点的使用上要理解好,使用时要注意

转载于:https://www.cnblogs.com/linxiaolu/p/8157384.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值