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

第三次作业

时间:2018-04-18 23:46:33      阅读:336      评论:0      收藏:0      [点我收藏+]

标签:代码   遍历数组   初始   比较   sda   http   算法   har   定位   

C高级第三次作业(1)

6-1 输出月份英文名

1.设计思路

(1)描述算法

第一步:阅读题目,明确目的。

第二步:找到调用函数。

第三步:定义指针数组*month,初始化为12月份。

第四步:如果输入的n小于1或大于12,则返回NULL,否则返回month[n-1]。

(2)流程图

技术分享图片

2.实验代码
char *getmonth( int n )
{
  int i;
  char *month[12]={"January","February","March","April","May","June","July","August","September","October","November","December"};
 
  if(n<1||n>12)
  {
    return NULL;
  }
  else
  {
  return month[n-1];
  }

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

错误原因:

技术分享图片

改正方法:将n>1&&12>n改为1>n||n>12。

               将return NULL;与 return month[n-1];掉换顺序。

技术分享图片

6-2 查找星期

1.设计思路

(1)描述算法

第一步:阅读题目,明确目的。

第二步:找到调用函数。

第三步:定义指针数组*a,并初始化为"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"

第四步:遍历数组内所有元素,利用strcmp函数做比较,如果值为0,则返回i,否则返回-1.

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.本题调试过程中碰到的问题及解决办法

错误原因:技术分享图片

改正方法:将return -1放到for循环之外。

                将*a[i]改为a[i]。

                 将*s改为s。

技术分享图片

6-3 计算最长的字符串长度

1.设计思路

(1)描述算法

第一步:阅读题目,明确目的。

第二步:找到调用函数。

第三步:定义i,t,max。max,i初始化为0。

第四步:遍历数组中元素。利用strlen计算s[i]字符串的长度并将其赋给t。

第五步:如果max<t,则将t赋给max。

第六步:返回max。

2.实验代码
int max_len( char *s[], int n )
{
    int i=0, t;
    int max=0;

    for(i=0; i<n; i++)
    {
      t = strlen(s[i]);
        if(max < t)
        {
        max = t;
        }
    }
    return max;
}
3.本题调试过程中碰到的问题及解决办法

错误原因:技术分享图片

改正方法:将t = strlen(s[i]);放在for循环内。技术分享图片

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

1.设计思路

(1)描述算法

第一步:阅读题目,明确目的。

第二步:找到调用函数。

第三步:定义p,q,指针*m=NULL。

第四步:遍历指针数组s中所有元素。如果ch1等于 (s+p),则将s[p]赋给 *z。

第五步:遍历s中元素,如果(s+q)!=ch2)&&((s+q)!=‘\0‘,则输出(s+q),如果(s+q)!=‘\0‘,则输出*(s+q)。

第六步:返回m。

2.实验代码
char *match( char *s, char ch1, char ch2 ){
    int p,q;
    char *m=NULL;
    for(p=0;*(s+p)!=‘\0‘;p++)
    {
        if(*(s+p)==ch1)
        {
        char *z=  &s[p];
            for(q=p;(*(s+q)!=ch2)&&(*(s+q)!=‘\0‘);q++)
            {
                printf("%c",*(s+q));
            }
            if(*(s+q)!=‘\0‘)
            
            printf("%c",*(s+q));
            printf("\n");
            return z;
            
        }
    }
    printf("\n");
    return m;
}
3.本题调试过程中碰到的问题及解决办法

错误原因:技术分享图片

改正方法:在printf("%c",*(s+q));后加换行。

                将q=0换成q=p。

第三次作业

标签:代码   遍历数组   初始   比较   sda   http   算法   har   定位   

原文地址:https://www.cnblogs.com/748luwenqi/p/8878038.html

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