zoukankan      html  css  js  c++  java
  • Linux C语言编程基础-20191304商苏赫

    Linux C语言编程基础

    任务详情

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

    实践内容

    项目实现两个集合的与、或。one:输入第一个集合的内容。two:输入第二个集合的内容。1/2选择进行交集还是或集

    文件项目创建

    实践代码


    具体代码

    #include <stdio.h>
    #include <malloc.h>
    struct node
    {
        struct node* next;
    	int value;
    };
    typedef struct node *link;
    void add(link tail,int v)//为链表添加一个value为v的节点,已包含去重功能
    {
    	link tmp=tail;
    	while (tmp->next)
    	{
    		tmp=tmp->next;
    		if (v==tmp->value)//这里是去重部分,假如有重复,无需添加
    		return;
    	}
    	link now=(link)malloc(sizeof(struct node));
    	now->next=tail->next;
    	now->value=v;
    	tail->next=now;
    }
    void deleteAll(link tail)//释放全部的空间
    {
    	while (tail->next)
    	{
    		link tmp=tail;
    		tail=tail->next;
    		free(tmp);
    	}
    }
    int main()
    {
    	int t=0;
    	int x=0;
    	int y=0;
    	link s1=(link*)malloc(sizeof(struct node));
    	s1->next=NULL;
    	link s2=(link*)malloc(sizeof(struct node));
    	s2->next=NULL;//创建两个链表
    	printf("请输入集合一
    ");
    	while (x<5)
    	{
    	    scanf("%d",&t);
    		add(s1,t);
    		x++;
    	}
    	printf("请输入集合二
    ");
    	while (y<5)
    	{
    	    scanf("%d",&t);
    		add(s1,t);
    		y++;
    	}
    	int opt;
    	printf("请输入操作:
    1:并集
    2:交集
    ");
    	scanf("%d",&opt);
    	if (opt==1)
    	{
    		link s3=(link)malloc(sizeof(struct node));
    		link sv=s3;
    		s3->next=NULL;
    		link l1=s1;
    		link l2=s2;
    		while (l1->next)//只需将s1,s2中的元素全部添加到s3输出即可
    		{
    			l1=l1->next;
    			add(s3,l1->value);
    		}
    		while (l2->next)
    		{
    			l2=l2->next;
    			add(s3,l2->value);
    		}
    		while (s3->next)
    		{
    			s3=s3->next;
    			printf("%d ",s3->value);
    		}
    	deleteAll(s3);
    	}
    	if (opt==2)
    	{
    		link l1=s1;
    
    		while (l1->next)
    		{
    			l1=l1->next;
    			int check=0;
    			link l2=s2;
    			while (l2->next)//s2假如存在和s1相同的元素,那么输出
    			{
    				l2=l2->next;
    				if (l2->value==l1->value)
    					check=1;
    			}
    			if (check)
    				printf("%d ",l1->value);
    		}
    	}
    	deleteAll(s1);//释放内存
    	deleteAll(s2);
    	return 0;
     }
    

    gcc相关练习


    静态库,动态库制作


    gdb相关练习



    makefile


    因为项目没有规划很完整的结构,各部分也没有分的很详细,只是用了.o文件和.c文件,所以makefile文件也很简单。不过以为空格书写错误make后还是报错了一次,改过后就正常运行了。

    遇到问题

    代码写完可以运行且没有错误,但是一直有几个warning,一直没搞明白,后续还会继续调试找出问题所在。

  • 相关阅读:
    Navi.Soft31.WinForm框架(含下载地址)
    Navi.Soft31.阅读导航
    工作流组件示例(全部开源)
    WinForm中播放视频示例(含源码)
    angularjs实现选项卡实例
    angularjs中使用 <input type="file">标签实现一次最多上传5张图片
    angularjs笔记《二》
    input type="number"时,maxlength不起作用怎么解决
    笔记——《正则表达式》
    如何区分slice、splice和split
  • 原文地址:https://www.cnblogs.com/shoudeyunkaijianyueming/p/15340416.html
Copyright © 2011-2022 走看看