第三次作业

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;
	}
}

错误信息:答案错误
错误原因:再返回时没仔细看主函数如果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;
}

暂无错误

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;
}

错误信息:无
错误原因:没思路
改正方法:在向同学询问之后,明白了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
流程图

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;  
}  

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

posted on 2018-04-22 15:11  曹佰强  阅读(158)  评论(2编辑  收藏  举报

导航