第三次做業

題目6-1 輸出月份英文名 1.設計思路 (1)本次題目的算法 第一步:閱讀題目 理解主函數與函數聲明 第二步:定義調用函數*getmonth 第三步:使用witch函數 第四步:最終回到null (2)流程圖node

2.實驗代碼算法

char *getmonth(int n)
{
  switch(n)
  {
    case 1:return "January";
    case 2:return "February";
    case 3:return "March";
    case 4:return "April";
    case 5:return "May";
    case 6:return "June";
    case 7:return "July";
    case 8:return "August";
    case 9:return "September";
    case 10:return "October";
    case 11:return "November";
    case 12:return "December";
    default:return NULL;
 }
  }

3.調試過程碰到問題及解決辦法 錯誤信息1:月份用了簡寫    錯誤緣由:未能及時理解題意    改正方法:仔細閱讀,理解題意 數組

題目6-2 查找星期 1.設計思路 (1)本次題目的算法 第一步:閱讀題目 理解主函數與函數聲明 第二步:使用調用函數,定義變量j 第三步:使用數組標記星期,使用if函數和for函數 第四步:迴歸j或-1 (2)流程圖函數

2.實驗代碼學習

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

3.調試過程碰到問題及解決辦法 錯誤信息1:無設計

題目6-3 計算最長的字符串長度 1.設計思路 (1)本次題目的算法 第一步:閱讀題目 理解主函數與函數聲明 第二步:使用調用函數,定義變量i,a,count 第三步:使用for函數和if函數 第四步:迴歸count (2)流程圖3d

2.實驗代碼指針

int max_len(char *s[],int n)
{
  int i,a;
  int count=0;
  int q[20]={0};
  for(i=0;i<n;i++)
  {
    for(a=0;*(*(s+i)+a)!='\0';a++)
    {}
    q[i]=a;
  }
  count =q[0];
  for(i=0;i<n;i++)
  {
    if(q[i]>count)
    {
      count=q[i];
    }
  }
  return count;
}

3.調試過程碰到問題及解決辦法 錯誤信息1:編譯錯誤    錯誤緣由:打代碼時不仔細,有錯誤    改正方法:屢次反覆檢查,找到錯誤並改正調試

題目6-4 指定位置輸出字符串 1.設計思路 (1)本次題目的算法 第一步:閱讀題目 理解主函數與函數聲明 第二步:使用調用函數,定義變量i,b,q,定義數組s 第三步:使用if函數和for函數,使用指針 第四步:最終迴歸s+i (2)流程圖code

2.實驗代碼

char *match(char *s, char ch1, char ch2)
{
    int i,b;
    char *q=NULL;
    for(i=0;*(s+i)!='\0';i++)
    {
        	if(*(s+i)==ch1)
        	{
	      char *a=&s[i];
		    for(b=i;(*(s+b)!=ch2)&&(*(s+b)!='\0');b++)
		    {
		        	printf("%c",*(s+b));
		    }
		    if(*(s+b)!='\0')
		    printf("%c",*(s+b));
		    printf("\n");
		    return a;
	    }
    }
    printf("\n");
    return s+i;
}

3.調試過程碰到問題及解決辦法 錯誤信息1:編譯錯誤    錯誤緣由:代碼沒打仔細    改正方法:從新輸入 錯誤信息2:指針與&&    錯誤緣由:指針與&&連用時出錯    改正方法:((s+b)!=ch2)&&((s+b)!='\0')

題目6-1 奇數值結點鏈表 1.設計思路 (1)本次題目的算法 第一步:閱讀題目 理解主函數與函數聲明 第二步:使用調用函數,定義變量data,使用指針head,指針p,指針q 第三步:使用while函數,if函數和for函數 第四步:第一次使用調用函數迴歸head,第二次使用調用函數迴歸head1 (2)流程圖

2.實驗代碼

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

3.調試過程碰到問題及解決辦法 錯誤信息1:使用了兩次調用函數    錯誤緣由:兩次調用函數連接的很差    改正方法:根據系統提示逐一改正

題目6-2 學生成績鏈表處理 1.設計思路 (1)本次題目的算法 第一步:閱讀題目 理解主函數與函數聲明 第二步:使用調用函數,使用指針head,指針p,指針q,指針w,定義變量num,name,score 第三步:使用while函數,if函數和for函數,兩次使用調用函數 第四步:第一次調用函數迴歸head,第二次調用函數再回歸head (2)流程圖

2.實驗代碼

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

3.調試過程碰到問題及解決辦法 錯誤信息1:編譯錯誤    錯誤緣由:缺乏正確的代碼觀念,常常少打代碼,打錯代碼    改正方法:常常打代碼

題目6-3 鏈表拼接 1.設計思路 (1)本次題目的算法 第一步:閱讀題目 理解主函數與函數聲明 第二步:使用調用函數,定義變量n,i,j,t,數組a,指針p,指針q,指針head,指針tail 第三步:使用for函數,與指針連用 第四步:迴歸head (2)流程圖

2.實驗代碼

struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2)
{
    int n=0,a[99];
    struct ListNode *p=list1;
    for(n;p!=NULL;n++)
    {
        a[n]=p->data;
        p=p->next;
    }
    p=list2;
    for(n;p!=NULL;n++)
    {
        a[n]=p->data;
        p=p->next;
    }
    int i,j,t;
    for(j=0;j<n-1;j++)
    {
        for(i=0;i<n-1-j;i++)
        {
              if(a[i]>a[i+1])
            {
            t=a[i];
            a[i]=a[i+1];
            a[i+1]=t;
            }
        }
    }
    struct ListNode *q=NULL,*head=NULL,*tail=NULL;
for(i=0;i<n;i++)
    {
            q=(struct ListNode *)malloc(sizeof(struct ListNode));
            q->data=a[i];
            q->next=NULL;
            if(head==NULL)
            {
                head=q;
            }else
            {
                tail->next=q;
            }
            tail=q;
    }
    return head;
}

3.調試過程碰到問題及解決辦法 錯誤信息1:數組    錯誤緣由:數組a不會定義    改正方法:根據提示改正 錯誤信息2:編譯錯誤    錯誤緣由:打代碼時錯誤    改正方法:從新打印

學習總結和進度 數組能夠是任何類型,若是數組的各個元素都是指針類型,用於存放內存地址,那麼這個數組就是指針數組。 *數組名[數組長度] 二維數組是數組元素爲一維數組的一維數組。 指針數組能夠直接對數組元素進行引用操做,也能夠間接訪問操做數組元素所指向的單元內容。

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