码迷,mamicode.com
首页 > 其他好文 > 详细

第三次作业

时间:2018-04-22 21:55:39      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:lists   拼接   image   let   ++   函数   就是   错误信息   lse   

题目6-1 输出月份英文名
1.设计思路
(1)本次题目的算法
第一步:阅读题目 理解主函数与函数声明
第二步:定义调用函数*getmonth
第三步:使用witch函数
第四步:最终回到null
(2)流程图

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)流程图

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)流程图

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:编译错误
   错误原因:打代码时错误
   改正方法:重新打印
技术分享图片
技术分享图片
技术分享图片
技术分享图片

学习总结和进度
数组可以是任何类型,如果数组的各个元素都是指针类型,用于存放内存地址,那么这个数组就是指针数组。
*数组名[数组长度]
二维数组是数组元素为一维数组的一维数组。
指针数组可以直接对数组元素进行引用操作,也可以间接访问操作数组元素所指向的单元内容。

技术分享图片

技术分享图片

第三次作业

标签:lists   拼接   image   let   ++   函数   就是   错误信息   lse   

原文地址:https://www.cnblogs.com/jiaoruijun/p/8904782.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!