嵌入式实训第三天日报表

 嵌入式实训第三天(20200705) 日报表

姓名:吴航  班级:物171

项目名称【苏嵌实训-嵌入式 linux C 第 3 天】
今日进度以及任务 复习c(重点:指针,链表)和数据结构
本日开发收获编写的c程序刚好也在为考研中的数据结构的学习相吻合,学起来还是很有干劲的。逐渐通过这次培训进入数据结构复习的状态。

 

今日看新东方网课跟随敲的部分代码

#include"stdio.h"
#include"stdlib.h"
int main()
{
	/*const int AMOUNT=100;
	int price=0;
	printf("请输入金额:\n");
	scanf("%d",&price);
	int change=AMOUNT-price;
	printf("找您%d元",change);
	return 0;*/
	/*int a=5;
	int b=6;
	int t;
	t=a;
	a=b;
	b=t;
	printf("a=%d,b=%d",a,b);*/ 
	//int  x=13;
	/*int cnt=0;
	for(int x=3;cnt<50;x++) 
	{
	int isPrime=1;
	for(int i=2;i<x;i++)
	{
		if (x%i==0)
		{
		   isPrime=0;
		   break;	
		}
    } 
    if(isPrime)
    {
	   printf("%d\t",x);
	   cnt++;
	   if(cnt%5==0)
	   printf("\n");
    }
	 }*/
	 //int i;
	 //while(++i>0);
	 //char j=0xff;
	 //printf("int 类型最大数:%u\n",i-1);
	 //printf("%d",i);
	  
	  /*int *p;
	  int cnt=0;
	  while(p=(int *)malloc(100*1024*1024))
	  {
		cnt++;
	  }
	  printf("可为您分配%d00MB空间",cnt);
	  */ 
	  int a[3][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,};
	  /*printf("%p\n",a);
	  printf("%p\n",a[0]);
	  printf("%p\n",&a[0][0]); 
	  printf("%d\n",*a);
	  printf("%d\n",*(a[0]));*/
	  printf("%d",a[1,1]);
} 
#include<stdio.h>
#include<malloc.h>
#define NULL 0
#define LEN sizeof(struct student)
#include<conio.h>
#include<string.h>
#include<stdlib.h>
struct student
{ long num;
  float tel;
  char add[10];
  long zip;
  struct student *next;
};
int n;                               /* n 为全局变量,用于统计结点的个数*/
/*―――――――---――――-―――creat函数――――――----――――――――*/                                             
struct student *creat()                            /* 创建creat函数用于建立链表*/
{ 
  struct student *head;
  struct student *p1,*p2;
  n=0;
  p2=(struct student *)malloc(LEN);               /* 开辟一个大小为LEN的内存单元*/
  p1=p2;  
  printf("请输入学号:");scanf("%ld",&p1->num);             /* 输入学号*/
  if(p1->num!=0)
    { printf("请输入电话:");scanf("%f",&p1->tel);        /* 输入电话号码*/
      printf("请输入地址:");scanf("%s",p1->add);          /* 输入地址*/
      printf("请输入邮编:");scanf("%ld",&p1->zip);         /* 输入邮编*/
      printf("ok! 请输入下一个结点的信息\n");          /* 提示已经输好了一位同学的信息*/
    }
  head=NULL;
  while(p1->num!=0)                      /* 如果输入的学号不是0,刚继续输入其余的同学的信息*/
    { n=n+1;
      if(n==1) head=p1;
      else p2->next=p1;
      p2=p1;
      p1=(struct student *)malloc(LEN);
      printf("请输入学号:");scanf("%ld",&p1->num);
      if(p1->num!=0)
        { printf("请输入电话:");scanf("%f",&p1->tel);
          printf("请输入地址:");scanf("%s",p1->add);
          printf("请输入邮编:");scanf("%ld",&p1->zip);
          printf("ok! 请输入下一个结点的信息\n");
        }
     }
  p2->next=NULL;
  return  head;                                    /* 结束creat函数*/
}
/*―――――――---――――-―――print函数――――――----――――――――*/
void print(struct student *head)                   /* 开始打印函数*/
{ struct student *p;
  printf("\n Now,These %d records are:\n",n);
  p=head;
  if(head!=NULL)                                   /* 如果链表不是空,则打印每个结点信息*/
    {    printf("-------------|------------ |-------------|--------\n");
          printf("学号        |电话        |地址        |邮编   \n");
      do
       { printf("-------------|------------ |-------------|--------\n");
         printf("0%-12ld|%-13.0f|%-13s|%-13ld\n",p->num,p->tel,p->add,p->zip);
         p=p->next;
       }while(p!=NULL);
         printf("-------------|------------ |-------------|--------\n");
     }
  else printf("链表是空的!\n");                /* 如果链表是空表,刚提示这个链表是空表*/
}                                                  /* 结束print函数*/
/*―――――――---――――---―――del函数――――――-----――――――――*/
struct student *del(struct student *head,long num)           /* 开始创建del函数,用于删除结束*/
{ struct student *p1,*p2;
  if(head==NULL) {printf("\n链表是空的!\n"); return head; }   /* 用于检查链表是否为空,如果为空,刚提示这个链表为空表*/
  p1=head;
  while(num!=p1->num && p1->next!=NULL)
    {p2=p1;p1=p1->next;}
  if(num==p1->num)                                        /* 找到对应的结点*/
    { if(p1==head) head=p1->next;
      else p2->next=p1->next;
      printf("删除:0%ld\n",num);
      n=n-1;
     }
  else printf("0%ld 没有找到!\n",num);                       /* 没有打到对应的结点,则提示没有找到*/
  return head;
}
/*―――――――---――――-―――insert函数――――――----――――――――*/
struct student *insert(struct student *head,struct student *lnew)   /* 创建insert函数,用于插入结点,返回值为一个指针*/
{ struct student *p0,*p1,*p2;
  p1=head;
  p0=lnew;
  if(head==NULL)  {head=p0;p0->next=NULL;}   /* 结果链表为空表,刚把插入的结点指针给头指针,结点的next为空*/
  else
      { while((p0->num>p1->num) && (p1->next!=NULL))       /* 寻找该插入的位置*/
          {p2=p1;
           p1=p1->next;
           }
        if(p0->num<=p1->num)                              /* 找到了该插入的位置*/
          {if(head==p1) head=p0;                                     /* 放在最前面*/
           else p2->next=p0;                                         /* 结点插到p1,p2之间*/
           p0->next=p1;
           }
        else {p1->next=p0;p0->next=NULL;}                              /* 结点插到最后*/
       }
  n=n+1;
  return head;                                                        /* 结点数加*/
}                                                                    /* 结束insert函数的建立*/
/*―――――――---――――-―――menubar函数――――――----――――――――*/
int menubar()                                                        /*创建菜单函数*/
{ int flag=1;                                                       /*用来做记号*/
  int c;                                                          /*用来存储使用者选择的菜单代号*/
  printf("\n\n************** 链表综合处理 ***************\n");
  printf("0:创建链表                                  ----\n");
  printf("1:输出链表\n");
  printf("2:插入结点                                  菜单\n");
  printf("3:删除结点\n");
  printf("4:退出                                      ----\n");
  printf("*************************************************");
  printf("\n请根据你想执行的命令,输入对应的0~4的数:");
  scanf("%d",&c);                                                   /*接收使用都所输入的代号*/
  while(flag)         /*flag用来标记,如果为链表为空,或者使用者第一次输入的不是0或者不是4,则需要重新输入*/
    {if(n==0&&c!=0&&c!=4)
      {printf("在建立链表之前请先输入建立链表\n");
       printf("\n请输入0~4的数:");
       scanf("%d",&c);
       flag=1;
       }
     else flag=0 ;
    }
 while( c<0 || c>4 )                              /*表示链表已经创建,但输入的不能大于4,或者小于0*/
  { printf("\n请输入~4的数:");
    scanf("%d",&c);
  }
return c;                                             /*返回c的值*/
 }
/*―――――――---――――-―――main函数――――――----――――――――*/
void main()                                              /*开始主函数*/ 
{ struct student *head,*lnew;
 long del_num;
  for(;;)                                                      /*开始for循环*/
  {  switch (menubar())
        { case 0:printf("请输入创建的链表的结点的信息:\n");
                 head=creat();
                 break;
          case 1:print(head);
                 break;
          case 2: printf("\n请输入要插入的结点的信息:\n");
                 lnew=(struct student *)malloc(LEN);
                 printf("请输入学号:");scanf("%ld",&lnew->num);
                 if(lnew->num!=0)
                   { printf("请输入电话:");scanf("%f",&lnew->tel);
                     printf("请输入地址:");scanf("%s",lnew->add);
                     printf("请输入邮编:");scanf("%ld",&lnew->zip);
                   }
                 while(lnew->num!=0)
                   { head=insert(head,lnew);
                     print(head);
                     printf("请输入下一个要插入的结点的信息:\n");
                     lnew=(struct student *)malloc(LEN);
                     printf("请输入学号:");scanf("%ld",&lnew->num);
                     if(lnew->num!=0)
                        { printf("请输入电话");scanf("%f",&lnew->tel);
                          printf("请输入地址:");scanf("%s",lnew->add);
                          printf("请输入邮编:");scanf("%ld",&lnew->zip);
                          printf("ok! 请输入下一个要插入的结点的信息\n");               
					    }
                    }
                 break;
         case 3:printf("\n请输入你想删除的结点的学号:");
                scanf("%ld",&del_num);
                while(del_num!=0)
                { head=del(head,del_num);
                  print(head);
                  printf("\n请输入你想删除的结点的学号:");
                 scanf("%ld",&del_num);
                }
                break;
        case 4: system("CLS");
                printf("谢谢您的使用\n\n\n\n");
                getch();
                exit(0);                                            /*退出for循环*/
        }
   }
}                                                                    /*结束主函数*/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值