• 第3次作业


    一.

      6-1 1.

         (1)第一步:定义一个包含十二月的数组,定义一个空数组。

               第二布:用条件语句和空数组将每月的英文按顺序输出。

          2.     

    char *getmonth( int n )
    {
        char *a[12]={"January","February","March","April","May","June","July","August","September","October","November","December" };
        char *month=NULL;
        if(n>=1&&n<=12)
        month=a[n-1];
        return month;
    }

        3.错误信息

          错误原因:最终没有返回NULL。

          改正方法:读题找到了问题。

      6-2 1.

         (1)第一步:定义一个包含星期的数组。

           第二步:运用for循环和if比较s和数组中每一项的大小,如果s小于数组则返回i。

         (2)流程图

        2.

    int getindex( char *s )
    {
        int i=0;
        char *a[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
       for(i=0;i<7;i++)
      {
        if(strcmp(s,a[i])==0)
        {
            return i;
           }
        }
        return -1;
    }

        3.错误信息1

          错误原因:错把for也打成了if,导致程序一直错误。

             改正方法:看了几遍下边的错误提示最终发现错误原因并改正。

         错误信息2

          错误原因:if后错误的带上了; 

          改正方法:编译一次才发现自己的疏忽。

      6-3 1.

        (1)第一步:定义变量并初始,运用for循环将a和数组s中的每个数组长度比较,如果小于则代替这个数组,直到选出最大值。

        2.

    int max_len( char *s[], int n )
    {
        int i,a=0;
        for(i=0;i<n;i++)
        {
            if(a<strlen(s[i]))
            {
                a=strlen(s[i]);
            }
            
        }
        return a;
    }

        3.错误信息

          错误原因:编译时if语句最后少放了一个括号

          改正方法:自己编译并看提示找出问题改正。

      6-4 1.

        (1)第一步:定义变量并初始化,运用for和if语句。

            第二步:s中数组与ch1如果相等,在运用for循环比较s的另一个数组和ch2的大小,然后输出第一个相等的数到第二个相等的值的数组并返回a。

        (2)

    #include<string.h>
    char *match(char *s, char ch1, char ch2 )
    {  
      
        int i=0,j=0,len=0;  
        char *a;
      
        len = strlen(s);  
      
        for(i=0;i<len;i++)
        {  
            if(s[i]==ch1)
            {  
                a=&s[i];  
                for(j=i;j<len;j++)
                {  
                    
                    if(s[j]==ch2)
                    {  
                        printf("%c
    ", s[j]);  
                        return a;  
                    }  
                         else
                           {  
                        printf("%c", s[j]);  
                   }     
                }  
                printf("
    ");  
                return a;  
            }  
        }  
        printf("
    ");
       *s='';
        return s;  
    }    

        3.错误信息

          错误原因:没有弄懂怎么从的一个相等字母到未知的不相等的数之间的输出。

          改正方法:通过询问同学的经验,明白了选取后边最后的数为终点,并将前边的都输出。

      6-1

        1.

        (1)第一步:输入data,data不等于-1则进入while循环。

            第二步:用if判断头文件是否为空,用一个if语句判断当前值是否为单数如果是将p赋给n,如果不是将p赋给m。最后返回相应的值。

        2.

    struct ListNode *readlist()
    {
      struct ListNode *p,*head,*n;
      head=(struct ListNode*)malloc(sizeof(struct ListNode));
      n=head;
      while(1)
      {
          p=(struct ListNode*)malloc(sizeof(struct ListNode));
          scanf("%d",&p->data);
        if(p->data==(-1))
        break;
        n->next=p;
        n=p;
      }
      n->next=NULL;
      return head->next;
    }
    struct ListNode *getodd( struct ListNode **L )
    {
      struct ListNode *i,*j,*k,*h1,*h2;
      j=h1=(struct ListNode*)malloc(sizeof(struct ListNode));
      h1->next=NULL;
      k=h2=(struct ListNode*)malloc(sizeof(struct ListNode));
      h2->next=NULL; 
      i=*L;
      int n=0;
      for(;i;i=i->next)
      {
        if((i->data)%2==1)
        {
        j->next=i;
        j=i;
        }
        else
        {
        k->next=i;
        k=i;
        }
      }
      j->next=NULL;
      k->next=NULL;
      *L=h2->next;
      return h1->next;
    }

        3.错误信息

      6-2 1.

        (1)第一步:输入需要的各个数据。

            第二步:用一个for循环遍历链表数据,用一个if语句判断其是否大于等于最小值如果是存入链表中,最后返回链表的值。

        2.

    struct stud_node *createlist()
    {
      struct stud_node *p,*head,*n;
      head=(struct stud_node*)malloc(sizeof(struct stud_node));
      n=head;
      while(1)
      {
          p=(struct stud_node*)malloc(sizeof(struct stud_node));
          scanf("%d ",&p->num);
          if(p->num==0)
        break;
        scanf("%s %d",&p->name,&p->score);
        n->next=p;
        n=p;
      }
      n->next=NULL;
      return head->next;
    }
    struct stud_node *deletelist( struct stud_node *head, int min_score )
    {
        struct stud_node *p,*k;
        p=(struct stud_node*)malloc(sizeof(struct stud_node));
        k=p;
        for(;head;head=head->next)
        {
            if((head->score)>=min_score)
            {
                k->next=head;
                k=head;
            }
        }
        k->next=NULL;
        return p->next;
    }

        3.错误信息

          错误原因:没有在指针变量前加入取地址符号。

          改正方法:经过同学的帮助下才发现错误并改正。

      6-3 1.

        (1)第一步:用一个while将链表中的数据存入temp中

            第二步:用for语句进行遍历,先将数组的值赋给data,再将其赋值给链表,最后返回链表。

        2.

    struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2)
    {
        struct ListNode *h,*p,*i,*k;
        h=(struct ListNode*)malloc(sizeof(struct ListNode));
        p=h;
        i=list1;
        k=list2;
        while(i!=NULL&&k!=NULL)
        {
            if(i->data<k->data)
            {
                p->next=i;
                i=i->next;
            }
            else
            { 
                p->next=k;
                k=k->next;
            }
            p=p->next;
        }
        while(i)
        {
            p->next=i;
            i=i->next;
            p=p->next;
        }
        while(k)
        {
            p->next=k;
            k=k->next;
            p=p->next;
        }    
        p->next=NULL;
        return h->next;
    }

        3.错误信息

    二.

      1.(1)指针数组是指向内存地址的数组,可能比正常数组常用,不过有些难以理解。

       (2)对二级指针数组理解不到位。

       (3)可以节省内存。不可以,指针没法指向正确。

      2.刘富垚:http://www.cnblogs.com/lhyyy/p/8906784.html

         王廷宇:http://www.cnblogs.com/archeralter/p/8909036.html

         于耀淞:http://www.cnblogs.com/jsjyys/p/8900992.html

      3.

  • 相关阅读:
    Golang1.14.2 环境的安装
    Golang Module快速入门
    VS Code配置Go语言开发环境
    Go语言Mac、Linux、Windows 下交叉编译
    centerOS7 Yum 安装lnmp环境
    初步了解Fork/Join框架
    聊聊并发(七)——Java中的阻塞队列
    如何快速成长为技术大牛
    多线程-interrupt(),isInterrupted(),interrupted()(转)
    Rabbit MQ
  • 原文地址:https://www.cnblogs.com/wxy5336/p/8886231.html
Copyright © 2020-2023  润新知