精华内容
下载资源
问答
  • 在main函数遍历
    千次阅读
    2019-11-16 21:36:01

    直接上代码

    /************************
     * 
     * 
     * 包含头文件
     * 
     * *********************/
    #include<stdio.h>
    #include<stdlib.h>
    
    /************************
     * 
     * 
     * 结构体定义
     * 
     * **********************/
    typedef struct BTNode
    {
        char data;
        BTNode* left;
        BTNode* right;
    }BinTree;
    
    /************************
     * 
     * 
     * 构造一个二叉树
     * 
     * **********************/
    BinTree* CreateBiTree()
    {
       int a;
       BinTree *T;
       scanf("%d",&a);
       if(a==0)
       {
           T = NULL;
    	  
       }
       else
       {
           T = (BinTree*)malloc(sizeof(BinTree));
           T->data = a;
           T->left = CreateBiTree();
           T->right = CreateBiTree();
       }
       return T;//返回根节点
    }
    
    /************************
     * 
     * 
     * 中序遍历
     * 
     * **********************/
    void InorderTraversal( BinTree *BT )
    {
    	
        if(BT) {
            InorderTraversal( BT->left );
            printf("%d ", BT->data); /* 假设数据为整型 */
            InorderTraversal( BT->right );
        }
    }
    
     /************************
     * 
     * 
     * 先序遍历
     * 
     * **********************/
    void PreorderTraversal( BinTree *BT )
    {
    	
        if(BT) {
            printf("%d ", BT->data );
            PreorderTraversal( BT->left );
            PreorderTraversal( BT->right );
        }
    
    }
    
     /************************
     * 
     * 
     * 后序遍历
     * 
     * **********************/
    void PostorderTraversal( BinTree *BT )
    {
        if(BT) {
            PostorderTraversal( BT->left );
            PostorderTraversal( BT->right );
            printf("%d ", BT->data);
        }
    }
     
    
    
    
     /************************
     * 
     * 
     * 主函数
     * 
     * **********************/
    
    void main()
    {
        BinTree *bt;
        bt = CreateBiTree();
        printf("------------先序遍历------------");
        PreorderTraversal(bt);
        printf("\n\n\n------------中序遍历------------");
        InorderTraversal(bt);
        printf("\n\n\n------------后序遍历------------");
        PostorderTraversal(bt);
        printf("\n\n\n");
    }
    
    
    
    更多相关内容
  • 写 C++ 的题目的时候经常会遇到这样的问题,写了多个 cpp 文件, clion 中编译报错不能同时存在多 main 函数 这里写了一个小程序优雅地解决这个问,非常简单,就是就是读字符串写文件 直接修改一下 CMake 自动...
  • 应用cfree软件,采用递归方法,基于有向图的邻接矩阵,进行深度优先搜索遍历(包括连通性)。
  • 应用cfree软件,基于无向图的邻接表,应用队列,进行图的广度优先搜索遍历
  • } } int main() { struct STUDENT *pt; pt=creat(); print(pt); freenoheadlist(pt); return 0; } //之前因为眼瞎没看见,把print写成了,下面的形式 struct STUDENT *p; p=head; while(p->num!=0) { ...

    题目要求
    输入学生学号和成绩建立链表,以空格分隔,当输入学号为0时建立结束:
    输入:

    1 88
    2 99
    3 77
    0 0
    

    输出:

    1 88.000000
    2 99.000000
    3 77.000000
    
    #include <stdio.h>
    #include <stdlib.h>
    #define LEN sizeof(struct STUDENT)
    struct STUDENT
    { 
       long num;
       float score;
       struct STUDENT *next;
    };
    int n;
    void print(struct STUDENT *head)
    { 
    
    	struct STUDENT *p;
    	p=head;//需要注意的地方就是这里不是head->next
    	//因为我们需要第一个数值,注意和前面模板的不同点
    	while(p!=NULL)
    	{
    		printf("%d %f\n",p->num,p->score);
    		p=p->next;
    	}
    }
    struct STUDENT *creat() 
    { 
       struct STUDENT *head,*p1,*p2;  n=0;
       p1=p2=( struct STUDENT*) malloc(LEN); 
       scanf("%ld%f",&p1->num,&p1->score); 
       head=NULL;
       while(p1->num!=0)
       {
    		n=n+1;
    		if(n==1) 
    			head=p1;
    		else  
    			p2->next=p1;
    			p2=p1;
    			p1=(struct STUDENT*)malloc(LEN); 
    			scanf("%ld%f",&p1->num,&p1->score);
        }
    	p2->next=NULL;   
    	free(p1); 
    	return(head);
    }
    
    void freenoheadlist(struct STUDENT *h)
    {
    	struct STUDENT *t;
    	while(h)
    	{
    	t=h->next;
    	free(h);
    	h=t;
    	}
    }
    int main()
    { 
    	struct STUDENT *pt;
    	pt=creat();  
    	print(pt); 
    	freenoheadlist(pt);
    	return 0;
    }
    
    //之前因为眼瞎没看见,把print写成了,下面的形式
    	struct STUDENT *p;
    	p=head;
    	while(p->num!=0)
    	{
    		printf("%d %f\n",p->num,p->score);
    		p=p->next;
    	}
    	//返回值错误,虽然打印的是正确的
    
    
    展开全文
  • C语言main函数的参数

    万次阅读 多人点赞 2019-08-04 07:56:56
    我们之前编写的C程序中,main函数是没有参数的,但是实际开发中,main函数一般都需要参数,没有参数的情况极少。 main函数的参数是从命令提示符下执行程序的时候传入,例如ls 命令。 以上示例中ls命令...

     

           在我们之前编写的C程序中,main函数是没有参数的,但是在实际开发中,main函数一般都需要参数,没有参数的情况极少。

           main函数的参数是从命令提示符下执行程序的时候传入,例如ls 命令。

          

           在以上示例中ls命令有两个参数,-l和book1*。

    main函数的参数

           main函数有三个参数,argc、argv和envp表示。

           int argc,用于存放命令行参数的个数。

           char *argv[],是个字符串的数组,每个元素都是一个字符指针,指向一个字符串,即命令行中的每一个参数。

           char *envp[],也是一个字符串的数组,这个数组的每一个元素是指向一个环境变量的字符指针。

           我们把envp放一下,先讲argc和argv。

           示例(book101.c)

          

           运行结果

          

           注意几个事项:

           1)argc的值是参数个数加1,因为程序名称是程序的第一个参数,即argv[0],在上面的示例中,argv[0]是./book101。

           2)main函数的参数,不管是书写的整数还是浮点数,全部被认为是字符串。

           3)参数的命名argc和argv是程序员的约定,你也可以用argd或args,但是不建议这么做。

    C程序的规范写法

           先假设程序执行都是有参数的,也就是说main函数都有参数,那么使用者怎么知道程序的参数个数和含义,记住它?看使用手册?不是,好的程序员会在程序中说明。我们先来看一个例子。

           示例(book103.c)

          

           运行程序的时候,如果参数个数相符,运行结果如下:

          

           如果参数个数不符,运行结果如下:

          

           从以上的例子可以看出,如果执行程序的时候参数与设计不符,显示程序的使用说明,说明文字应该包括程序的功能和全部参数的解释,还可以包括作者、联系方式等更详细的信息。

           程序的使用说明文字非常重要,有几个原因:1)程序的使用者不一定会写程序,也没必要去查使用手册等资料;2)程序的使用者就算会写程序,也没必要在使用的时候去看源代码,并且,你也不一定想让他看到源代码;3)如果程序的使用者是你自己,时间一长,你也会忘记程序的参数。

           当然,这些只是有经验程序员的约定,不是C语言的规定。

    envp参数

           envp存放了当前程序运行环境的参数。

           示例(book105.c)

          

           运行结果

          

           在实际开发中,envp参数的应用很少,各位了解一下就行了。

     

    版权声明

    C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。

    来源:C语言技术网(www.freecplus.net

    作者:码农有道

    如果这篇文章对您有帮助,请点赞支持,或在您的博客中转发我的文章,谢谢!!!

    如果文章有错别字,或者内容有误,或其他的建议或意见,请您留言指正,非常感谢!!!

    展开全文
  • iterable:纯函数迭代遍历
  • 深度剖析c语言main函数---main函数的参数传递

    千次阅读 多人点赞 2018-07-10 00:20:38
    在上文中,我们主要讲了c语言main函数的返回值问题,本文主要将main函数的参数传递。 main函数传参  首先说明的是,可能有些人认为main函数是不可传入参数的,但是实际上这是错误的。main函数可以从命令行获取...

      在上文中,我们主要讲了c语言main函数的返回值问题,本文主要将main函数的参数传递。

    main函数传参

      首先说明的是,可能有些人认为main函数是不可传入参数的,但是实际上这是错误的。main函数可以从命令行获取参数,从而提高代码的复用性。

    函数原形

      为main函数传参时,可选的main函数原形为:

    int main(int argc , char* argv[],char* envp[]);
    

    参数说明:
      ①、第一个参数argc表示的是传入参数的个数
      ②、第二个参数char* argv[],是字符串数组,用来存放指向的字符串参数的指针数组,每一个元素指向一个参数。各成员含义如下:
      argv[0]:指向程序运行的全路径名
      argv[1]:指向执行程序名后的第一个字符串 ,表示真正传入的第一个参数
       argv[2]:指向执行程序名后的第二个字符串 ,表示传入的第二个参数
       ……
       argv[n]:指向执行程序名后的第n个字符串 ,表示传入的第n个参数
      
     规定:argv[argc]为NULL ,表示参数的结尾。
     
    ③、第三个参数char* envp[],也是一个字符串数组,主要是保存这用户环境中的变量字符串,以NULL结束。envp[]的每一个元素都包含ENVVAR=value形式的字符串,其中ENVVAR为环境变量,value为其对应的值。envp一旦传入,它就只是单纯的字符串数组而已,不会随着程序动态设置发生改变。可以使用putenv函数实时修改环境变量,也能使用getenv实时查看环境变量,但是envp本身不会发生改变;平时使用到的比较少。

    注意:main函数的参数char* argv[]和char* envp[]表示的是字符串数组,书写形式不止char* argv[]这一种,相应的argv[][]和
    char** argv均可。

    char* envp[]

      写个小测试程序,测试main函数的第三个参数:
      

    #include <stdio.h>
    
    int main(int argc ,char* argv[] ,char* envp[])
    {
        int i = 0;
    
        while(envp[i++])
        {
            printf("%s\n", envp[i]);
        }
    
        return 0;
    }
    

    运行结果:部分截图
    这里写图片描述
      envp[] 获得的信息等同于Linux下env命令的结果;

    常用版本

      在使用main函数的带参版本的时,最常用的就是:int main(int argc , char* argv[]);变量名称argc和argv是常规的名称,当然也可以换成其他名称。命令行执行的形式为:可执行文件名 参数1 参数2 … … 参数n。可执行文件名称和参数、参数之间均使用空格隔开。

    示例程序

    #include <stdio.h>
    
    int main(int argc, char* argv[])
    {
    
        int i;
        printf("Total %d arguments\n",argc);
    
        for(i = 0; i < argc; i++)
        {
            printf("\nArgument argv[%d]  = %s \n",i, argv[i]);
        }
    
    
        return 0;
    }
    

    运行结果:

    ➜  cpp_workspace git:(master) ✗ vim testmain.c 
    ➜  cpp_workspace git:(master) ✗ gcc testmain.c 
    ➜  cpp_workspace git:(master) ✗ ./a.out 1 2 3    #./a.out为程序名 1为第一个参数 , 2 为第二个参数, 3 为第三个参数
    Total 4 arguments
    Argument argv[0]  = ./a.out 
    Argument argv[1]  = 1 
    Argument argv[2]  = 2 
    Argument argv[3]  = 3 
    Argument argv[4]  = (null)    #默认argv[argc]为null
    
    展开全文
  • C/C++glob函数遍历文件夹所有文件

    千次阅读 2020-04-10 16:51:01
    #include <glob.h> #include <stdio.h>...int main() { glob_t pglob; int i; if (glob("abc/testdir.*", GLOB_ERR, NULL, &pglob) != 0) { printf("Failed to load from ...
  • 先用malloc()函数在动态存储区分配一块较小的内存空间。用字符型指针 P指向它。 然后根据输入字符串的大小,用realloc()函数动态调整动态存储空间的大小。 直到全部字符都装下为止。 malloc()和realloc()...
  • 遍历函数

    2019-04-09 16:28:39
    int main() { int num = 0; sdata sd = {7, NULL}; for_each(search, &sd); printf("找到的结果是:%d\n", *sd.p_num); for_each(sum, &num); printf("求和结果为:%d\n", num); for_each(clear, &num); for_...
  • 如何Clion一个项目中添加多个main函数 Clion中一个项目默认只能包含一个main函数,即只能有一个入口函数,多的话会报错。但是一般我们用Clion写算法的时候(例如刷力扣和PTA等),这样的话,我们手动 CMakeLists...
  • 目录遍历函数 查看说明文档 man 3 opendir/readdir/closedir 1.1 opendir 函数 #include <sys/types.h> #include <dirent.h> DIR *opendir(const char *name); 作用:打开一个目录 参数: name:...
  • 如果解决了你的问题,麻烦点赞评论支持一下;...main方法:psvm 遍历:fori 输出 sout 更进一步 之所以IDEA能够快捷的生成代码,原因在于,其内部自定义了一系列代码模版,当输入指定字符串,就会触发;当然...
  • 主要介绍了python遍历类中所有成员的方法,实例分析了Python类操作的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 网上的版本很多,xlrd模块基础上,找到一些源码: import xdrlib ,sys import xlrd def open_excel(file="C:/Users/flyminer/Desktop/新建 Microsoft Excel 工作表.xlsx"): data = xlrd.open_workbook(file) ...
  • if __name__ == '__main__': list = ['html', 'js', 'css', 'python'] # 方法1 print '遍历列表方法1:' for i in list: print ("序号:%s 值:%s" % (list.index(i) + 1, i)) print '\n遍历列表方法2:' # ...
  • } //输出 张三 100 李四 99 王五 80 初学c++遇到难点,这做个笔记 数组本身就是地址,所以不需要加取址符&。 指针指向的是数组的第一个地址。 每个地址由两部分组成:名字和分数。各占4个字节。每个地址占8个字节...
  • 14.JAVA中的main函数

    千次阅读 2021-02-03 12:47:22
    JAVA中的main函数
  • 利用OpenCV函数遍历文件夹内的图片 cv::glob
  • 本篇文章中小编给大家分享了关于HashMap和List遍历方法及如何遍历删除元素知识点总结,需要的朋友们参考下。
  • 采用C语言对二叉树的前序、中序、后序、层序(使用队列)遍历方法进行了实现,含一个.c文件和一个.h文件,程序的结构比较清晰,对学习二叉树和队列的相关技术具有一定参考意义(有问题可留言交流)
  • [求助]二叉树遍历的程序里面的visit函数如何实现我没懂的后面加注释 希望大家指教#include#include#define MAXSIZE 100typedef struct binode{char data;struct binode *lchild;struct binode *rchild;}Binode;...
  • } 先序创建,先序遍历结果 先序创建,中序遍历结果 先序创建,后序遍历结果 方法二:创建二叉树时返回指针 创建二叉树代码 //先序创建二叉树 BiTree CreateBiTree(BiTree T) { //函数返回值类型为BiTree //结点...
  • 1.首先要打开目录文件 DIR *opendir( const char *name);...2.读取目录文件信息的函数 注意:这是个库函数 struct dirent *readdir( DIR *dirp); int readdir_r( DIR *dirp, struct dirent *entry, st...
  • 主要介绍了C++ 遍历某个文件夹下所有文件的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 351,787
精华内容 140,714
关键字:

在main函数遍历