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

第三次作业

时间:2018-04-22 16:03:06      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:利用   错误   ==   分享图片   dex   amp   sunday   strlen   中间   

6-1 输出月份英文名

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

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<n; i++)
    {
        t = strlen(s[i]);
        if(max < t)
        max = t;
    }
    return max;
}
  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
流程图
技术分享图片

  1. 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<len;i++){  
        if(s[i]==ch1){  
            p=&s[i];  
            for(j=i;j<len;j++){  
                if(s[j]!=ch2){  
                    printf("%c", s[j]);  
                }  
                if(s[j]==ch2){  
                    printf("%c\n", s[j]);  
                    return p;  
                }     
            }  
            printf("\n");  
            return p;  
        }  
    }  
    printf("\n");  
    return s+i;  
    }  
  2. 错误信息:答案错误
    错误原因:在开始判断s[i]是否等于ch1后,未将p=&s[i];在最后的返回值时依然返回了P,搞混了第一个for和第二个for的意义
    改正方法:将最后返回值改为s+i,在开始的for里加入p=&s[i]

第三次作业

标签:利用   错误   ==   分享图片   dex   amp   sunday   strlen   中间   

原文地址:https://www.cnblogs.com/caobaiqiang/p/8810067.html

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