第三次作业

作业要求一

作业截图:
6-1 输出月份英文名

6-2 查找星期

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

作业要求二

题目6-1 输入月份英文名

(1) 实验代码

char *getmonth(int n)
{
	char *a[12]={"January","February","March","April","May","June","July","August","September","October","November","December"};
	int i;
	for(i=0;i<=12;i++)
	{
	   if(i==0)
	   
	   {
	   	continue;
	   }else if (i==n)
	   {
	   	return a[i-1];
	   }
	}
	if(n<=0||n>=13)
	{
		return NULL;
	}
}

(2) 设计思路
主要描述题目算法
第一步:最开始定义指针数组,里面包含十二个月份的英文名,注意不要写错英文。
第二步:定义完数组之后,要通过for循环来遍历数组,找出行对应的月份,循环变量为0时,输出没有相对应的月份。
第三步:最后通过if语句限制不是1到12的数字这个条件,最后返回主函数。
(3)本题调试过程中碰到的问题及解决方法
最开始想的有点简单,没有想到小于0或者大于12的数,导致最后结果有问题,最后想到了这个问题,加了if语句限制这个条件并且返回相对应的变量值即可。

题目6-2 查找星期

(1) 实验代码

int getindex( char *s )
{
	char *a[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday",};
	int i,n=0;
	for(i=0;i<7;i++)
	{
		if(strcmp(s,a[i])==0)
		{
			return i; 
		}
	}
	if(n<=0||n>=7)
	{
		return -1;
	}
 } 

(2) 设计思路
主要描述题目算法
第一步:还是先定义一个指针数组,注意星期英文拼写。
第二步:之后通过for语句遍历数组,最后还是通过if条件限制不是0到7的数字这个条件,最后返回主函数。
流程图:

(3)本题调试过程中碰到的问题及解决方法
本题没有问题。

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

(1) 实验代码

int max_len( char *s[], int n )
{
	int i,a=0;
	for(i=0;i<n;i++)
	{
		if(a<strlen(*(s+i)))
		{
			a=strlen(*(s+i));
		}
	}
	return a;
}

(2) 设计思路
主要描述题目算法
第一步:主函数:输入字符串个数,用for循环进行输入,最后调用函数求出最长字符串的长度并输出。
第二步:用一个for语句对字符串进行循环,用if语句判断最长长度是否小于当前所遍历字符串长度如果小于将当前长度赋值给最长长度。for语句结束后返回最长长度的值。
(3)本题调试过程中碰到的问题及解决方法
本题没有问题。

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

(1) 实验代码

char *match( char *s, char ch1, char ch2 )
{
int i=0,j=0;  
char *p=NULL;    
for(i=0;*(s+i)!='\0';i++)
{  
    if(s[i]==ch1)
    {  
        p=&s[i];  
        for(j=i;*(s+j)!='\0';j++)
        {  
            if(s[j]!=ch2)
            {  
                printf("%c", s[j]);  
            }  
            if(s[j]==ch2)
            {  
                printf("%c\n", s[j]);  
                return p;  
            }     
        }  
        printf("\n");  
        return p;  
    }  
}
if(s[i] == '\0')
p = &s[i];
printf("\n");  
return p; 
}

(2) 设计思路
主要描述题目算法
第一步:根据题意,要先查找输出指定的字符串,首先要定义循环变量,通过遍历来进行查找;
第二步:在查找之前需要定义一个指针,用它来指向所传入的所让输入的数组的首地址,之后根据传入的字符进行判断。
第三步:最后需要判断一种只有第二个字符,而没有第一个字符的情况,故需加上若原字符数组为空,并返回元字符数组的首地址;
(3)本题调试过程中碰到的问题及解决方法
本题没有问题。

作业要求三、学习总结和进度

1、总结两周里所学的知识点,回答下列问题?(用自己的话表达出你的理解,网上复制粘贴没有分数)

1)如何理解指针数组,它与指针、数组有何关系?为何可以用二级指针对指针数组进行操作?
指针数组里面的每个元素都是指针,并且每个元素都指向相应的地址,二级指针可以对指针数组进行相应的操作。
(2)将C高级第三次PTA作业(1)任何一个题目改为使用二级指针对指针数组进行操作。
3)用指针数组处理多个字符串有何优势?可以直接输入多个字符串给未初始化的指针数组吗?为什么?
运用指针处理多个字符串可以节省内存空间,因为每个字符串都是单独存放的;不可以,因为没有给出初始化的指针数组里面的指针指向的地址不明确,会出现错误。

2、将PTA作业的源代码使用git提交到托管平台上,要求给出上传成功截图和你的git地址。

git地址:
地址

3、点评3个同学的本周作业(在作业中给出被点评同学博客的链接),并邀请3名同学点评你的作业,无点评作业(你的作业未被3人点评)/或者没有回复同学或老师的点评都倒扣该题分数。

点评的三位同学:
4、请用表格和折线图呈现你本周(4/9 8:00~4/23 8:00)的代码行数和所用时间、博客字数和所用时间。

posted @ 2018-04-21 23:14  胡景文  阅读(236)  评论(2编辑  收藏  举报