zoukankan      html  css  js  c++  java
  • C语言博客作业--函数嵌套调用

    一、实验作业

    1.1 PTA题目:递归实现顺序输出整数

    (1)设计思路

    void printdigits( int n )
    {
        if n/10不等于0
            改变传参为n/10,再次进入函数printdigits(n/10)
        输出n%10;
    }
    

    (2)代码截图

    (3)调试问题

    本题未遇到问题,在如何输出转化的二进制数上需要思考。

    1.2 学生成绩管理系统

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

    1.2.2 截图展示你的工程文件

    1.2.3 函数代码部分截图

    本系统代码总行数:248

    头文件定义

    删除学生信息

    ps:图中输出j是做调试用的,忘记删除。

    修改学生信息

    排序输出成绩


    1.2.4 调试结果展示

    (1)进行操作1,先录入两名同学的信息

    (2)按学号从小到大排序

    (3)进行操作2,修改第一位同学的英语成绩

    (4)进行操作3,删除第一位同学的信息

    (5)进行操作5,按不同排序输出成绩

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

    没有什么大问题,但是因为赶时间所以一些细节没有写出来,以后会慢慢补上,完善这个程序。

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

    三、阅读代码

    数学中的全排列问题

    #include <stdio.h>
    #include <stdlib.h>
    void swap(int *a,int *b);
    void Perm(int a[],int i,int n);
    
    int main()
    {
        int a[3]={1,1,3};
        Perm(a,0,2);
        return 0;
    }
    void swap(int *a,int *b)
    {
        int c=*a;
        *a=*b;
        *b=c;
    }
    int ok(int a[],int k,int i)
    
    {
    int t;
    if(i>k)
            for (t=k;t<i;t++)
        if(a[t]==a[i])
        return 0;
    
    return 1;
    }
    
    void Perm(int a[],int i,int n)
    {
        int j;
        if(i==n)
        {for(j=0;j<=n;j++)
    
            printf("%d",a[j]);
            printf("  ");
        }
        else
            for(j=i;j<=n;j++)
            if(ok(a,i,j))
            {
        swap(&a[i],&a[j]);
        Perm(a,i+1,n);
        swap(&a[i],&a[j]);
        }
    
    }
    

    递归不一定只是单个函数,多个函数之间进行互相调用也可以称为递归。

    四、本周学习总结

    1.介绍本周学习内容

    1.1指针数组

    这个在之前的博客写过总结,但只是粗略了解,现在真正地进行学习运用。

    • 1.1.1 指针数组中每个元素都是指针
    • 1.1.2
    int a[10];
    char *color[5];
    

    在上面的指针数组color中,color[i]存放的是字符串的首地址。

    1.2二级指针

    • 1.2.1 二级指针即指向指针的指针,一般定义为:
    类型名 **变量名;
    
    • 1.2.2 理解二级指针
    int a=10; int *p=&a; int **pp=&p;
    
    等价关系:
    (1)a,*p,**p
    (2)&a,p,*pp
    (3)&&a,&p,pp
    
    • 1.2.3 二维数组的指针形式

    1.3宏定义

    • 1.3.1 定义宏的格式: #define 宏名 宏定义字符串
    • 1.3.2 宏在编译预处理中起作用,不是真的C语句,行尾无需分号。
    • 1.3.3 宏名中间不能有空格。

    1.4动态分配

    通过函数malloc()可以动态分配相应大小的内存单元,采用动态分配内存的方法处理多个字符串,能够根据实际输入数据的多少来申请和分配内存空间,从而提高了内存的使用率。

    2.学习体会

    这周学着写大程序,与之前不同的框架所以要注意不少新的东西,比如自定义的头文件里要包含结构体,自定义函数的定义语句,因为函数分散在不同地方,所以有时候函数的参数会弄错,全局变量在这里也得到更多的使用,当然比起写大程序,我还是觉得递归函数更难,是真的难!有时候根本无从下手!!!

    在做课设前先这样做了管理系统到时候就没那么生疏了,当然还需要多加练习,把程序变得更加完善。

  • 相关阅读:
    atitit.按钮光标滑过高亮切换以及其他动态效果的实现css html js attilax总结
    atitit. 文件上传带进度条 atiUP 设计 java c# php
    atitit.新增编辑功能 跟orm的实现 attilax p31
    atitit. java jsoup html table的读取解析 总结
    atitit.设计文档操作日志的实现
    atitit.资源释放机制attilax总结
    (转)Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
    (转)Android笔记handler机制
    (转)数据存储
    (转)android连网详解
  • 原文地址:https://www.cnblogs.com/wwwwxy128/p/8166202.html
Copyright © 2011-2022 走看看