• 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.代码截图

    3.调试问题

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

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

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

    1.2.2 截图展示你的工程文件

    1.2.3 函数代码部分截图

    头文件

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

    删除学生成绩信息代码

    总分排序代码

    本系统代码总行数:

    1.2.4 调试结果展示

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

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

    三、阅读代码

    (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 分)

    输入任意个字符串,能对字符串降序排序。

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

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

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

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

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

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

    2.学习体会。

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

  • 相关阅读:
    VMWare的Cloud Foundry实践(二):和MongoDB对接成功~
    MongoDB实践
    MongoDB 可读性比较差的语句
    C#异步编程之:(一)Task对象和lamda表达式探究
    创建自己的awaitable类型
    C#异步编程之(三):深入 Async 和 Await 的实现及其成本
    Node.js实践
    MVC+EasyUI+三层新闻网站建立(六 tabs的完成)
    MVC+EasyUI+三层新闻网站建立(七:分页查询出数据)
    MVC+EasyUI+三层新闻网站建立(八,详情页面完成)
  • 原文地址:https://www.cnblogs.com/2223ch/p/8158427.html
Copyright © 2020-2023  润新知