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

一、PTA题目

6-4 十进制转换二进制

1.设计思路

定义一个整数a,代表n对2取余的余数。
若(n<2)
则为递归出口,输出a。
否则
递归公式,dectobin(n/2)
输出a。

2.代码截图

3.调试问题

  • 一开始对递归函数的位置与输出的位置放的不对。
    解决方法:改变位置,先进入递归再输出。

二、学生成绩管理系统

1.画函数模块图,简要介绍函数功能。

2.截图展示你的工程文件

3.函数代码部分截图

main.c

modify.c

delete.c

search.c

input_output.c

aver_sort.c

  • 本系统代码总行数:250

4.调试结果展示

输入

显示

修改成绩

根据学号查询学生信息

删除学生信息

5.调试碰到问题及解决办法

  • 1.在创建工程的过程中由于工程建立的不当已经过多的c文件互相影响导致工程无法运行。
    解决方法:询求老师帮助,建立了基本的工程。
  • 2.新建信息一开始i=0,导致创建新信息之后之前的信息就会消失。
    解决方法:将i=0改为i=count,i<count+n。
  • 3.排序功能和按学号排序还未完善。
  • 4.对于一些非法输入还未健全判断方法,以及系统的交互还不够友好,操作失误就要重新输入。

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

四、阅读代码

写一个计算斐波那契数列的通项f(n),已知f1=1,f2=1,以后每项都是前两项的和。

template <typename T>  
T f(T n)  //递归函数  
{  
    if (n == 1 || n == 2)  
    {  
        return 1;  
    }  
    else  
    {  
        return f(n - 1) + f(n - 2);  
    }  
}  
int _tmain(int argc, _TCHAR* argv[])  
{  
    int n;  
    cout << "Please input n:" << endl;  
    cin >> n;  
    cout << "n! = " << f(n) << endl;  
  
    return 0;  
}  

本题通过递归函数计算斐波那契数列,有了递归的算法, 用程序实现实在再简单不过了,很直观的表示出了各个通项之间的关系,不仅简洁而且不会出错。如果使用正常的函数写法会使代码量增加。递归虽然较为难以理解,但很多东西用递归却更加简单,这就是递归的重要之处。

五、本周学习总结

1.介绍本周学习内容

  • 1.学会了基本的函数嵌套调用,懂得如何模块化使得代码可读性增强,实现复杂问题结构化程序。
  • 2.递归函数中递归出口和递归式子是要点,掌握式子的关系即可不要深究过程,不然会混乱。
  • 3.宏定义格式 #define 宏名 宏定义字符串
    宏还能实现简单的函数功能。宏替换不做计算,只做替换。
  • 4.一个程序中只允有一个主模块,为了能调用写在其他文件模块中的函数,可以使用文件包含。
    全局变量只能在某个模块中定义一次,如果其他模块需要则需要通过外部变量声明 etern 变量名表。

2.学习体会

  • 本周的学习内容很多,也相对的复杂和零碎,在学习上有一定的困难,特别是递归函数和工程,无法快速的理解。c语言的一些基础概念和知识容易忽略或者混淆,接下来还是会认真的阅读书本和相关的代码,梳理其中的内容。
原文地址:https://www.cnblogs.com/oracler0103/p/8157495.html