zoukankan      html  css  js  c++  java
  • 2021-2022-diocs-Linux C语言编程基础(必做)

    20191226 2021-2022-diocs-Linux C语言编程基础(必做)

    一、任务详情

    1. 基于Ubuntu或OpenEuler完成下面的任务(OpenEuler有加分)
    2. 选择教材第二章的一节进行编程基础练习(2.10,2.11,2.12,2.13,2.14任选一个)
    3. 建立自己的项目目录,包含自己学号信息(如20190100linkedlist),构建项目结构(src, include, bin, lib, docs, test...),然后把相应代码和文档放置到正确位置,用tree命令查看项目结构,提交截图(5分)
    4. 进行gcc相关练习(ESc, iso, -I等)提交相关截图(5分)
    5. 进行静态库,动态库制作和调用练习,提交相关截图(5分)
    6. 进行gdb相关练习,至少包含四种断点的设置,提交相关截图(10分)
    7. 编写makefile(5分)

    二、实践过程

    1. 习题2.12
      实现代码

    #include <stdio.h>
    #include <malloc.h>

    typedef struct BiTree { // 定义二叉树的结构体
    int data;//定义二叉树的数据类型
    struct BiTree *lchild, *rchild;//递归定义二叉树的左子树 右子树
    } BiTNode, *BiTree;


    int CreatTree(BiTree *T) {//先序序列建立二叉树
    int element;
    // printf("请输入根节点 ");
    scanf("%d", &element);
    if (element == 0) *T = NULL;
    else {
    *T = (BiTNode *) malloc(sizeof(BiTNode));
    if (!(*T)) {
    printf("内存申请失败! ");
    return 0;
    }
    (*T)->data = element;//生成根节点
    // printf("请输入左孩子 ");
    CreatTree(&(*T)->lchild);//构造左孩子
    // printf("请输入右孩子 ");
    CreatTree(&(*T)->rchild);//构造右孩子

    }
    return 1;
    }

    void Pretravel(BiTree T) { //先序遍历
    if (T == NULL) return;
    else {
    printf("%d ", T->data);
    Pretravel(T->lchild);
    Pretravel(T->rchild);
    }

    }

    void Intravel(BiTree T) { //中序先序遍历
    if (T == NULL) return;
    else {
    Intravel(T->lchild);
    printf("%d ", T->data);
    Intravel(T->rchild);
    }
    }

    void Posttravel(BiTree T) { //后序遍历
    if (T == NULL) return;
    else {
    Posttravel(T->lchild);
    Posttravel(T->rchild);
    printf("%d ", T->data);
    }
    }

    void Copy(BiTree T, BiTree *NewT) {//二叉树的复制
    if (T == NULL) {
    NewT = NULL;
    return;
    } else {
    (*NewT) = (BiTNode *) malloc(sizeof(BiTNode));
    (*NewT)->data = T->data;
    Copy(T->lchild, &(*NewT)->lchild);
    Copy(T->rchild, &(*NewT)->rchild);
    }
    }

    int Depth(BiTree T) {//树的深度
    if (T == NULL)
    return 0;
    else {
    int m = Depth(T->lchild);
    int n = Depth(T->rchild);
    if (m > n) return (m + 1);
    else return (n + 1);
    }
    }

    int NodeCount(BiTree T) {//统计二叉树中结点的个数
    if (T == NULL) return 0;
    else return NodeCount(T->lchild) + NodeCount(T->rchild) + 1;
    }

    int LeafCount(BiTree T) {//统计二叉树中叶子结点的个数
    if (!T) return 0;
    if (!T->lchild && !T->rchild) {//如果二叉树左子树和右子树皆为空,说明该二叉树根节点为叶子节点,加1.
    return 1;
    } else {
    return LeafCount(T->lchild) + LeafCount(T->rchild);
    }
    }

    int Node_1_Count(BiTree T) {//统计二叉树的度为1的结点个数
    if (!T) return 0;
    if ((!T->lchild) && (T->rchild) || (T->lchild) && (!T->rchild))
    return 1 + Node_1_Count(T->lchild) + Node_1_Count(T->rchild);
    else
    return Node_1_Count(T->lchild) + Node_1_Count(T->rchild);
    }


    int main() {
    BiTree T;

    CreatTree(&T);
    printf("先序遍历的结果为 ");
    Pretravel(T);
    printf(" ");
    printf("中序遍历的结果为 ");
    Intravel(T);
    printf(" ");
    printf("后序遍历的结果为 ");
    Posttravel(T);
    printf(" ");

    printf("树的深度为%d ",Depth(T));
    printf("二叉树中结点的个数 %d ",NodeCount(T));
    printf("二叉树的度为1的结点个数 %d ",Node_1_Count(T));
    return 0;
    }


    在Ubuntu下运行结果:

     

     2.

    建立自己的项目目录,包含自己学号信息(如20190100linkedlist),构建项目结构(src, include,bin, lib, docs, test...),然后把相应代码和文档放置到正确位置,用tree命令查看项目结构,提交截图

     

     

     

     

    3. 进行gcc相关练习(ESc, iso, -I等)提交相关截图

     

     test.s

     test.o

     test.i

     test 1

     test2

     

     hello.h

     

     hello.c

    main.c

    4. 进行静态库,动态库制作和调用练习,提交相关截图
    动态库:

    main.c

    静态库调用:

    5. 进行gdb相关练习,至少包含四种断点的设置,提交相关截图
    行断点:


    函数断点:


    条件断点:


    查看断点:

    6. 编写makefile
    makefile:

     makefile结果:



  • 相关阅读:
    vs2005中 fstream 不支持中文路径问题的解决方法:
    CString char* string 互转
    OpenGl显示,任意大小的图片作为背景
    combo box
    Android 开发环境搭建
    打开子对话框 选择文件
    (转)Static MemoryLayout_shadow memory
    (转)深入剖析I/O约束
    (转)set_input_delay/ set_output_delay之图解
    (转)PrimeTime分析流程
  • 原文地址:https://www.cnblogs.com/lxhs/p/15340531.html
Copyright © 2011-2022 走看看