1. 程式人生 > >第3次作業

第3次作業

導致 %s del code 進行 div ida 找到 定義

一.技術分享圖片

  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\n", s[j]);  
                    return a;  
                }  
                     else
                       {  
                    printf("%c", s[j]);  
               }     
            }  
            printf("\n");  
            return a;  
        }  
    }  
    printf("\n");
   *s=\0;
    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.

技術分享圖片技術分享圖片

第3次作業