第三次作业

Posted 手残少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三次作业相关的知识,希望对你有一定的参考价值。

题目1 输出月份英文名

1. 设计思路

(1). 算法

定义月份的字符串组并判断月份从属于哪一个英文名

(2). 流程图

2. 实验代码

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

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

题目2 查找星期

1. 设计思路

(1). 算法

定义星期,并判断给定的字符串是星期几

(2). 流程图

2. 实验代码

int getindex( char *s )
{
    int i;
    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. 本题调试过程碰到问题及解决办法

题目3 计算最长的字符串长度

1. 设计思路

(1). 算法

第一个字符串的长度max,用找最大值的方法找出最长字符串

(2). 流程图

2. 实验代码

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

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

题目4 指定位置输出字符串

1. 设计思路

(1). 算法

找到给定的第一个字符,循环输出

(2). 流程图

2. 实验代码

char *match( char *s, char ch1, char ch2 )
{
    int m=0;

    while(*s!=ch1&&*s!=0)
    s++;
    while(*s!=ch2&&*s!=0)
    {
        printf("%c",*s);
        s++;
        m++;
    }
    if(*s==ch2)
    printf("%c\\n",*s);
    else
    printf("\\n");
    s-=m;
    return s;
}

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

题目5  指定位置输出字符串

1. 设计思路

(1). 算法

 

(2). 流程图

2. 实验代码

不会

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

题目6  奇数值节点链表

1. 设计思路

流程图

2. 实验代码

struct ListNode *readlist()
  {
      int data;
      struct ListNode *head=NULL, *tail=NULL, *p=NULL;
  
      scanf("%d", &data);
      while (data != -1)
      {
          p = (struct ListNode*) malloc(sizeof(struct ListNode));
          p->data = data;
          p->next = NULL;
          if (head == NULL)
              head = p;
          else
              tail->next = p;
          tail = p;
          scanf("%d", &data);
      }
      return head;
  }
  
  struct ListNode *getodd(struct ListNode **L)
  {
      int flag = 0;
      struct ListNode *head=NULL, *tail=NULL, *q=NULL, *p=*L, *p1=NULL, *p2=NULL, *ptr=NULL;
  
      while (p!=NULL)
      {
          if (p->data % 2 != 0)
          {
              q = (struct ListNode *) malloc(sizeof(struct ListNode));
              q->data = p->data;
              q->next = NULL;
              if (head == NULL)
                  head = q;
              else
                  tail->next = q;
              tail = q;
              ptr = p;
              p = p->next;
              free(ptr);
          }
          else
          {
              if (p1 == NULL)
                  p1 = p;
              else
                p2->next = p;
              p2 = p;
                p = p->next;
                flag = 1;
          }
      }
      if (flag==1)
          p2->next = NULL;
      *L = p1;
      return head;
  }

题目7  学生成绩链表处理

1. 设计思路

流程图

2. 实验代码

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

                    p1->next = NULL;
                    free(p);
                    return head;
                }
                p1->next=p->next;
                free(p);
                p=p->next;  continue;
            }
            p1=p;
            p=p->next;
        }
    }
    return head;
}

题目8  学生成绩链表处理

1. 设计思路

流程图

2. 实验代码

struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2)
{
    int num = 0;
    int temp[100];
    struct ListNode  *p = list1;
    while(p != NULL)
    {
        temp[num] = p->data;
        num++;
        p = p->next;
    }
    p = list2;
    while(p != NULL)
    {
        temp[num] = p->data;
        num++;
        p = p->next;
    }
    int i,j;
    for(i = 0; i < num; i++)
        for(j = i + 1; j < num; j++)
        {
            if(temp[i] > temp[j])
            {
                int t;
                t = temp[i];
                temp[i] = temp[j];
                temp[j] = t;
            }
        }
      struct ListNode  *newlist = NULL;
      struct ListNode  *endlist = NULL;
      struct ListNode  *q;
      for(i = 0; i < num; i++)
      {
          q = (struct ListNode  *)malloc(sizeof(struct ListNode));
          q->data = temp[i];
          if(newlist == NULL)
          {
              newlist = q;
              newlist->next = NULL;
          }
            if(endlist != NULL)
         {
            endlist->next = q;
         }
         endlist = q;
         endlist->next = NULL;
      }
      return newlist;
}

我点评的人

宋晨继:http://www.cnblogs.com/songchenji/p/8909600.html

李春杨:http://www.cnblogs.com/qw123/p/8885922.html

李新华:http://www.cnblogs.com/Lixinhua18/p/8810369.html

本周学习情况

半知半解。。。。。。@_@晕。

 

以上是关于第三次作业的主要内容,如果未能解决你的问题,请参考以下文章

第三次寒假作业

第三次作业

第三次作业

第三次作业

第三次作业

第三次作业