第三次做業(2)

6-1 輸出月份英文名

一、設計思路

第一步:定義一維指針數組,並賦予十二個月。
第二步:遍歷數組,判斷若是n在1到12中則將對應的地址賦給它。
第三步:返回a。html

二、實驗代碼

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;
}

三、本題調試過程碰到的問題及解決辦法


中英文符號錯誤。node

四、提交列表

6-2 查找星期

一、設計思路

第一步:將一個星期的七天賦給定義的一維指針數組。
第二步:經過strcmp函數判斷其與數組元素是否相同,若是相同則返回i,不然返回-1.
第三步:結束。git

二、實驗代碼

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; 
}

三、流程圖

四、本題調試過程碰到的問題及解決辦法

數組

五、提交列表

6-3 計算最長的字符串長度

一、設計思路

第一步:使用strlen函數來計算字符串長度,先定義最長max爲0,使用for循環判斷其字符串長度是否比max大。
第二步:若是長於max則將這個數賦予max。
第三步:返回max。函數

二、實驗代碼

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;
}

三、本題調試過程碰到的問題及解決辦法


沒有給出i<n的條件。學習

四、提交列表

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

一、設計思路

第一步:新定義一個指針temp,若是s[i]與ch1相同則將其地址賦給temp跳出循環。
第二步:判斷s[i]與ch2是否相等,若是不相等則輸出s[i]不然輸出s[i]並換行,返回temp。
第三步:結束。.net

二、實驗代碼

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

三、本題調試過程碰到的問題及解決辦法

沒有考慮s[i]不能是‘/0’的狀況。設計

四、提交列表

6-1 奇數值結點鏈表

一、設計思路:

第一步:創建鏈表,用p->data==-1判鏈表結束,定義head爲頭文件,定義鏈表n放置輸入元素。
第二步:創建的鏈表拆分爲兩個鏈表,歷遍鏈表,按單雙數將其放置於不一樣鏈表。
第三步:將k鏈表賦給原鏈表,並返回h1鏈表。3d

二、實驗代碼

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;
}

三、本題調試過程碰到的問題及解決辦法

四、提交列表

6-2 學生成績鏈表處理

一、設計思路

第一步:創建一個鏈表並返回。
第二步:對鏈表進行歷遍,當p->score小於min_score時將鏈表向前推動,去掉要刪除項。
第三步:返回鏈表頭文件。指針

二、實驗代碼

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;
}

三、本題調試過程碰到的問題及解決辦法
無。
四、提交列表

6-3 鏈表拼接

一、設計思路

第一步:定義鏈表。
第二步:利用鏈表原爲升序鏈表這一特色進行排序。
第三步:返回鏈表p。

二、實驗代碼

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;
}

三、本題調試過程碰到的問題及解決辦法

四、提交列表

學習總結

學習了鏈表。

個人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

圖表


相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息