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

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

1.设计思路

函数部分
    定义整型变量 result
    找到递归出口
     如果m=0;
       result=n+1;
     否则
        if(n=0)
           result=Ack(m-1,Ack(m,n-1);
        else
            result=Ack(m-1,Ack(m,n-1)) ;   
     返回result;
     
     end;

2.代码截图

1231973-20171231174419070-132325842.png

3.调试问题

开始时没有真正理解递归的用法,结果推了很久,到最后陷入死循环;最后在同学的指点下说不用去纠结递归的算法 ,在写时只用考虑第一步就好啦,其他的计算机会解决;

1.2 学生成绩管理系统(5分)

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

1231973-20180102000719893-1582294131.png

1.2.2 截图展示你的工程文件

1231973-20180102000740799-1482255154.png

1.2.3 函数代码部分截图

头文件
1231973-20180102000920409-2123263444.png

插入学生信息及学生成绩信息代码
1231973-20180102001002753-786763235.png
1231973-20180102001019143-435382279.png

删除学生成绩信息代码
1231973-20180102001103315-1622672037.png

总分排序代码
1231973-20180102001201237-445791470.png
1231973-20180102001236299-1729385291.png

本系统代码总行数:

1.2.4 调试结果展示

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

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

1231973-20171231175651570-892281241.png

三、阅读代码

(3)全排列
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
如1,2,3三个元素的全排列为:
1,2,3
1,3,2
2,1,3
2,3,1
3,1,2
3,2,1
//全排列

inline void Swap(int &a,int &b)
{
    int temp=a;
    a=b;
    b=temp;
}
void Perm(int list[],int k,int m)
{
    if (k == m-1) 
    {
        for(int i=0;i<m;i++)
        {
            printf("%d",list[i]);
        }
        printf("n");
    }
    else
    {
        for(int i=k;i<m;i++)
        {
            Swap(list[k],list[i]); 
            Perm(list,k+1,m);
            Swap(list[k],list[i]); 
        }
    }
}

Swap函数用于交换两个数的值,perm函数用于将数组中的数实现全排列,先找到递归出口,考虑 k=m-1的特殊情况,调用递归函数实现数组元素全排列

四、本周学习总结(1分)

1.介绍本周学习内容

递归函数基本概念:

递归(recursion):程序调用自身的编程技巧。
递归满足2个条件:
(1)有反复执行的过程(调用自身函数)
(2)有跳出反复执行过程的条件(递归出口)

递归程序设计

注意点:
(1)递归出口:即递归的结束条件,到何时不在递归调用下去
(2)递归式子:递归的表达式,如fact(n)=n*fact(n-1)

宏基本定义

宏定义的格式:
#define 宏名 宏定义字符串
注:宏定义字符串是宏名对应的具体实现过程,可以是任意字符串,中间可以有空格,以回车符做结束,例:
#define PI 3.1415926
#define TRUE 1
#define FALSE 0

宏的用途

(1)符号常量,如PI、数组大小定义,以增加程序的灵活性
(2)简单的 函数功能实现,由于宏要在一行内完成,只能实现简单的函数功能
(3)为程序书写带来一些方便

文件包含

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

程序文件模块

c语言把保存有一部分程序的文件称为程序文件模块;
程序、程序文件模块与函数间的关系:一个大程序可由几个程序文件模块组成,每一个程序文件模块又可能包括若干个函数,程序文件模块只是函数书写的载体

文件模块间的通信

1.外部变量;

外部变量声明格式:

 extern    变量名表
2.静态全局变量
3..函数与程序文件模块

函数与程序文件模块的声明格式:

  extern   函数类型   函数名  (参数表说明)
4.静态的函数在c语言中也称内部函数。定义格式为:
  static    函数类型     函数名(参数表说明)

上机考试错题

函数题

6-1 jmu-c-字符串降序排序(20 分)

输入任意个字符串,能对字符串降序排序。
1231973-20171231192859585-898490921.png

错误原因:没有理解指针数组,导致答案错误;

6-2 jmu-c-二分查找(20 分)

假设数组a是个升序的数组序列,现要通过二分查找法在数组中查找关键字key,并输出在数组中的下标及查找次数。 若找不到,则输出-1及查找次数。
1231973-20171231193000585-1783254379.png

错误原因:理解错二分查找的判断条件导致答案错误

6-3 字符串正反序连接(20 分)

将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。
1231973-20171231193049601-543903700.png

2.学习体会。

对于最近的学习状态表示很不满意,不是说没有在认真的读书,而是最近的学习效率大大降低;还有最近对于c语言的学习,感觉难度越来越大了,自己有点跟不上节奏,就比如上周的上机考试,对于稍简单的题自己私下想想可以写出来,但也不知道为什么上机又不行,可能还是基础掌握的不扎实吧;还有这次的大作业,感觉自己有点无从下手,不知道该从哪里开始,怎么将各个函数间联系起来,一直是显示无法运行的状态;感觉对c语言的学习,自己的理解能力越来越差了,可能是自己下的功夫还不够多,转眼也快要期末了,还是好好复习各科的功课吧!

转载于:https://www.cnblogs.com/2223ch/p/8158427.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值