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

一、实验作业

题目:6-2 递归计算Ackermenn函数

1.设计思路

定义result为0
如果 m==0
     result=n+1;
如果 n==0且m大于0
     result=Ack(m-1, 1)
如果m>0且n>0;
     result=Ack(m-1, Ack(m,n-1));
返回 result;

2.代码截图

1232142-20171230202911195-338425234.png

3.调试问题

1232142-20171231151651976-1748605317.png

  • 本题没遇到问题

    1.2 学生成绩管理系统

    1.2.1函数模块图及函数功能

    1232142-20180105140006487-1718019362.png

    1.2.2工程文件展示

    1232142-20180103211944503-1074822293.png

    1.2.3 函数代码部分截图

    本系统代码总行数:343

    头文件

    1232142-20180104235010315-1607266271.png

界面

1232142-20180105132358378-1747786853.png

输入学生信息函数

1232142-20180105132426956-1721698469.png

查找学生信息函数

1232142-20180105132446628-1923529748.png

删除学生信息函数

1232142-20180105132459174-840634321.png

总成绩排序函数

1232142-20180105132512690-1336547329.png

修改函数

1232142-20180105132537549-2135550206.png

1.2.4 调试结果展示

1232142-20180105132646628-836380955.png
1232142-20180105132659612-1328421168.png
1232142-20180105132907893-1942850415.png
1232142-20180105132930471-1053005924.png
1232142-20180105133125784-988231038.png
1232142-20180105133209096-497728539.png
1232142-20180105133323206-1015927699.png
1232142-20180105133558753-1800711473.png

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

我这学生系统存在的问题有点多,老师要求的功能有一些我的还不能实现,删除学生信息也存在问题,还有那个联系方式我用字符数组进去运行后比如输入7指令,但就是运行不了对应函数的功能,但改成double型就又可以了。现在也还没有解决,等有空我再去改善一下这个工程。

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

1232142-20171231151934335-675269757.png

三,阅读代码

有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第3个人,又说比第2人大两岁。问第2个人,说比第1个人大两岁。最后 问第1个人,他说是10岁。请问第5个人多大?

#include <stdio.h>  
int getAge(int numPeople);
int main() 
{
    int age = getAge(5);
    printf("第5个人的年龄是%d岁", age); 
    return 0;
}
int getAge(int numPeople){
    int age;
    if(numPeople == 1)
        age = 10;
    else
     age =getAge(numPeople -1) +2;
    return age;    
}

利用递归的方法,递归分为回推和递推两个阶段。要想知道第5个人岁数,需知道第4人的岁数,依次类推,推到第1人(10岁),再往回推。优点:虽然不是很难,但一看便懂,相当简洁。

四、本周学习总结

1.介绍本周学习内容

10.1.2函数的嵌套调用

可以以函数作为基本功能实现载体,以函数调用结构图为函数关联,可有效组织多个函数,实现复杂问题的结构化程序设计

10.2.3递归程序设计

  • 递归函数编写需要抓住两个关键点
    (1)递归出口:即递归的结束条件,到何时不再递归调用下去
    (2)递归式子:递归的表达式,如fact(n)=n*fact(n-1)
    比如编写递归函数reverse(int n)实现将整数n逆向输出
void reverse(int num){
    if(num<=9)
    printf("%d",num);  //递归出口
    else{
        printf("%d",num%10);
        reverse(num/10);//递归调用
    }
}

10.3.2宏基本定义

宏的用途
(1)符号常量,如PI,数组大小定义,已增加程序的灵活性
(2)简单的函数功能实现,如

#define MAX(a,b)   a>b?a:b

(3)为程序书写带来方便。当程序中需要多次书写一些相同内容时,可以简写成宏。

  • 宏定义中对变量加上括号,可提高替换后的运算优先级,有效避免宏替换带来的副作用,保证宏替代的正确性

    10.3.4文件包含

文件包含格式:
#include<需包含的文件名>
或
#include"需包含的文件名"

常用标准头文件

ctype.h        字符处理
math.h        与数学处理函数有关的说明定义
stdio.h        输入输出函数中使用的有关说明和定义
string.h       字符串函数的有关说明和定义
stddef.h       定义某些常用内容
stdlib.h        杂项说明
time.h         支持系统时间函数

2.学习体会

  • 现在C语言已经差不多快学完了,本周也又进行了一次上机考试,那两道填空题让我发现,自己这么久以来好像也没懂得什么,之前考试考差说是没有电脑不能调试,这次能调试也写不出来,自己存在的问题很大。有时候看书看懂了,但一到写程序就得重新翻书,指针内容有时候还是有点混乱,特别是双指针。不过我会认真对待每次错误的,坚持下去,努力下去。
posted on 2017-12-31 22:13  Longjingrap 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/peng075078/p/8151034.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值