第三次作业

6-1 输出月份英文名

1.设计思路
第一步:先定义每个月份的字符串数组
第二步:判断输入的n是否是小于13大于0的
第三步:如果是则返回n的前一位,因为数组从0开始,如果不是则返回NULL
流程图
第三次作业_第1张图片

2.实验代码

char *getmonth( int n )
{
    char *month[12]={"January","February","March","April","May","June","July","August","September","October","November","December"};
    if(n>0&&n<13)
    {
        return month[n-1];
    }else{
        return NULL;
    }
}
  1. 错误信息:答案错误
    错误原因:再返回时没仔细看主函数如果s=NULL才输出wrong input
    改正方法:将否则返回wrong input,改成NULL

6-2 查找星期

1.设计思路
第一步:定义一个n为-1;并定义字符串
第二步:利用for循环里的if判断输入值和定义的是否相等
第三步:如果相等则把下标赋值给n
第四步:for循环后返回n
流程图

2.实验代码

int getindex( char *s )
{
    int i,n=-1;
    char *week[7]={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
    for(i=0;i<7;i++)
    {
        if(strcmp (s,week[i]) == 0) 
        {
            n=i;
            break;
        }
    }
    return n;
}
  1. 暂无错误

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

1.设计思路
第一步:先定义一个max=0的最小值
第二步:利用一个for循环,里头定义一个t让他等于每次输入的最高长度
第三步:判断t是max的大小,如果t大于max,则把max的值赋值给t
第四步;返回最大值

2.实验代码

int max_len( char *s[], int n )
{
    int i=0, t;
    int max=0;
    for(i=0; i
  1. 错误信息:无
    错误原因:没思路
    改正方法:在向同学询问之后,明白了strlen的意思

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

1.设计思路
第一步:定义一个数组长度len,指针P等于NULL,
第二步:利用for循环判断i是否小于数组长度,如果不是则直接输出换行,返回数组+i
第三步:如果i小于数组长度则判断第i个数是否和ch1相等,如果不等则直接输出换行,返回数组+i
第四步:如果相等则令s[i]的地址等于p,并再次利用for循环判断j是否小于len,如果不是则直接输出换行,返回p
第五步:如果j小于数组长度判断s[j]是否等于ch2,如果不等则输出中间数,如果相等则输出中间数并返回p
流程图
第三次作业_第2张图片

char *match( char *s, char ch1, char ch2 ){  
  
    int i=0,j=0,len=0;  
    char*p=NULL;  
  
    len = strlen(s);  
  
    for(i=0;i
  1. 错误信息:答案错误
    错误原因:在开始判断s[i]是否等于ch1后,未将p=&s[i];在最后的返回值时依然返回了P,搞混了第一个for和第二个for的意义
    改正方法:将最后返回值改为s+i,在开始的for里加入p=&s[i]

你可能感兴趣的:(第三次作业)