作业要求一 :
PTA作业的提交列表:
作业要求二:
6-1 输出月份英文名
1.设计思路
(1)主要描述算法:
第一步:本题要求通过字符串指针实现函数,可以返回一个给定月份的英文名称。
第二步:定义整形变量n,通过switch语句,判断每一条语句,如果是就按数字输出月份,否则执行default,输出NULL
第三步:按要求返回主函数并输出。
(2)流程图:
主函数:
调用函数:
2.实验代码:
char *getmonth( int n ) { switch(n) { case 1:return "January"; case 2:return "February"; case 3:return "March"; case 4:return "April"; case 5:return "May"; case 6:return "June"; case 7:return "July"; case 8:return "August"; case 9:return "September"; case 10:return "October"; case 11:return "November"; case 12:return "December"; default:return NULL; } }
3.本题调试过程碰到问题及解决办法
遇到的问题1:应该返回的是指针,而不是字符串。
改正方法:将printf改成return
遇到的问题2:case后面的数字用单引号括了起来。
改正方法:case后面可以是数字,因为switch后面是整形,所以不用单引号。(通过查找课本105页得到答案)
6-2 查找星期
1.设计思路
主要描述算法:
第一步:本题要求用指针数组实现函数,可以根据下表查找到星期,返回对应的序号。
第二步:首先定义一个指针数组,将星期都存到数组里,通过for循环语句和if条件判断(strcmp)比较星期是否相同,break回到上一级,否则返回m。
第三步:按要求输出序号和星期或-1
2.实验代码:
int getindex( char *s ) { int i,m=-1; char *week[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; for(i=0;i<7;i++) { if (strcmp (s, week[i]) == 0) { m=i; break; } } return m; }
3.本题调试过程碰到问题及解决办法
遇到的问题:本题要求传递的应该是字符串,所以不能用switch语句
改正方法:用上课讲的指针数组的方式。
遇到的问题2:在循环中没有先定义m=-1所以总是出现部分正确。
改正方法:先把m=-1定义在前面,再将其赋给i,就不会出现部分正确了。
6-3 计算最长的字符串长度
1.设计思路
主要描述算法:
第一步:本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度
第二步:首先定义整形变量和字符指针数组m,通过两个for循环判断,*(*(s+i)+j)!=' ',继续执行;在第二个for循环中判断如果m[i]>count,输出最长的长度,否则继续循环
第三步:输出指针数组中最长字符串的长度。
2.实验代码:
int max_len( char *s[], int n ) { int i,j,m[20]={0}; int count=0; for(i=0;i<n;i++) { for(j=0;*(*(s+i)+j)!='