zoukankan      html  css  js  c++  java
  • 第三次作业(2)

    6-1 输出月份英文名

    1、设计思路

    第一步:定义一维指针数组,并赋予十二个月。
    第二步:遍历数组,判断如果n在1到12中则将对应的地址赋给它。
    第三步:返回a。

    2、实验代码

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

    3、本题调试过程碰到的问题及解决办法


    中英文符号错误。

    4、提交列表

    6-2 查找星期

    1、设计思路

    第一步:将一个星期的七天赋给定义的一维指针数组。
    第二步:通过strcmp函数判断其与数组元素是否相同,如果相同则返回i,否则返回-1.
    第三步:结束。

    2、实验代码

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

    3、流程图

    4、本题调试过程碰到的问题及解决办法

    5、提交列表

    6-3 计算最长的字符串长度

    1、设计思路

    第一步:使用strlen函数来计算字符串长度,先定义最长max为0,使用for循环判断其字符串长度是否比max大。
    第二步:如果长于max则将这个数赋予max。
    第三步:返回max。

    2、实验代码

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

    3、本题调试过程碰到的问题及解决办法


    没有给出i<n的条件。

    4、提交列表

    6-4 指定位置输出字符串

    1、设计思路

    第一步:新定义一个指针temp,如果s[i]与ch1相同则将其地址赋给temp跳出循环。
    第二步:判断s[i]与ch2是否相等,如果不相等则输出s[i]否则输出s[i]并换行,返回temp。
    第三步:结束。

    2、实验代码

    char *match( char *s, char ch1, char ch2 )
     {
      int i,j=strlen(s),k = 0,m=0;
      char *temp;
      for(i=0;s[i] != '';i++)
     {
        if(s[i] == ch1)
     {
            temp = &s[i];
            j = i;
            break; 
          }
      }
     for(i=j;s[i] != '';i++)
     {
      if(s[i] != ch2)
     {
            printf("%c",s[i]);
        } else
     {
            printf("%c
    ",s[i]);
            return temp; 
        }
     }
     printf("
    ");
     return temp;   
    }
    

    3、本题调试过程碰到的问题及解决办法

    没有考虑s[i]不能是‘/0’的情况。

    4、提交列表

    6-1 奇数值结点链表

    1、设计思路:

    第一步:建立链表,用p->data==-1判链表结束,定义head为头文件,定义链表n放置输入元素。
    第二步:建立的链表拆分为两个链表,历遍链表,按单双数将其放置于不同链表。
    第三步:将k链表赋给原链表,并返回h1链表。

    2、实验代码

     struct ListNode *readlist()
         {
         int number;
        struct ListNode *p = NULL,*head = NULL,*tail = NULL;
             scanf("%d",&number);
            while(number!=-1&&number>0 ) {
            p = (struct ListNode*)malloc(sizeof(struct ListNode));
            p->data = number;
            if(head == NULL) {
                head = p;
            } else {
                tail->next = p;
            }
            tail = p;
            scanf("%d",&number); 
        }
        if(head == NULL) {
            return NULL;
        } 
        tail->next = NULL;
        return head;
    }
    struct ListNode *getodd( struct ListNode **L ) 
    {
     struct ListNode *p = *L,*head1 = NULL,*r = NULL,*L1 = NULL,*r1 = NULL;
     while(p!=NULL&&p->data>0)
     {
    if(p->data%2!=0)
    {
       if(head1 == NULL)
    {
       head1 = p;
    }else
    {
     r->next = p;
    }
     r = p;
        } else 
        {
    if(L1 ==NULL) 
    {
     L1 = p;
            } else 
    {
      r1->next = p;
      }
      r1 = p;
        }
      p = p->next;
      }
      if(head1==NULL){
        return NULL;
      } else 
    {
        r->next = NULL;
      }
      if(L1==NULL) 
      {
     *L = NULL;
      } else 
      {
       r1->next = NULL;
       *L = L1; 
      }
       return head1;
    }
    

    3、本题调试过程碰到的问题及解决办法

    4、提交列表

    6-2 学生成绩链表处理

    1、设计思路

    第一步:建立一个链表并返回。
    第二步:对链表进行历遍,当p->score小于min_score时将链表向前推进,去掉要删除项。
    第三步:返回链表头文件。

    2、实验代码

    struct stud_node *createlist()
    {
        struct stud_node *tail=NULL,*head=NULL,*p=NULL;
        int num=0,score=0;
        char name[20];
        scanf("%d",&num);
        while(num!=0)
        {   
            p=(struct stud_node*)malloc(sizeof(struct stud_node));
            p->num=num; 
            scanf("%s %d",p->name,&p->score);
            if(head==NULL)
            {
                head=p;
            }else
            {
                tail->next=p;
            }
            tail=p;
            scanf("%d",&num);
            p->next=NULL;
        }
        return head;
    }
    struct stud_node *deletelist( struct stud_node *head, int min_score )
    {
        struct stud_node *ptr1=NULL,*ptr2=NULL;
        for(;head!=NULL;head=head->next)
        {
            if(head->score>=min_score)
            {
                if(ptr1==NULL)
                {
                        ptr1=head;
                }else
                {
                    ptr2->next=head;
                }
                ptr2=head;
            }
        }
        if(ptr1==NULL)
        {
            return NULL;
        }else
        {
            ptr2->next=NULL;
        }
        return ptr1;
    }
    

    3、本题调试过程碰到的问题及解决办法
    无。
    4、提交列表

    6-3 链表拼接

    1、设计思路

    第一步:定义链表。
    第二步:利用链表原为升序链表这一特点进行排序。
    第三步:返回链表p。

    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、本题调试过程碰到的问题及解决办法

    4、提交列表

    学习总结

    学习了链表。

    我的git地址:

    https://coding.net/u/zhouxuan12/p/123/git?public=true

    点评:

    http://www.cnblogs.com/lixiaojing/p/8760462.html
    http://www.cnblogs.com/fengzx/p/8781906.html
    http://www.cnblogs.com/dx2017/p/8781858.html

    图表


  • 相关阅读:
    ocky勒索软件恶意样本分析1
    勒索软件Locky、Tesalcrypt等使用了新的工具躲避检测
    ocky勒索软件恶意样本分析2
    “小马激活”病毒新变种分析报告
    你的应用是如何被替换的,App劫持病毒剖析
    巧妙防治网上病毒侵害的方法步骤
    “僵尸之手”:一种伪装成正常应用的恶意病毒(病毒防范方法解说)
    利用C&C漏洞来查看恶意软件Dridex的操作流程
    CITRIX ADC配置SSL卸载
    防火墙TCP的单向控制
  • 原文地址:https://www.cnblogs.com/zhouxuan99/p/8906073.html
Copyright © 2011-2022 走看看