作业要求一
请将pta作业编程题目的解题思路和调试过程记录在博客中,每道题目的具体格式如下:
题目6-1 输出月份英文名
1.设计思路
(1)主要描述题目算法。可以用文字描述(不允许使用伪代码),如:
第一步:定义月份对应的指针数组与整形变量i
第二步:用for循环遍历数组
第三步:if条件语句用来判断不同条件下的返回值并输出
(2)流程图
2.实验代码
char *getmonth( int n ) { char *month[12]={"January","February","March","April","May","June","July","August","September","October","November","December"}; int i=0; for(i=0;i<13;i++) { if(i==0) { continue; }else if(n==i) { return *(month+i-1); } } if(n>=13||n<=0) { return NULL; } }
3.本题调试过程碰到问题及解决办法
错误信息:
错误原因:n=i时的返回值取地址错误
改正方法:改为*(month+i-1)即可,为第n-1行首元素的地址
6-2 查找星期
1.设计思路
(1)主要描述题目算法。可以用文字描述(不允许使用伪代码),
第一步:定义整形变量 i 和星期对应的指针数组
第二步:利用for循环遍历数组
第三步:用if语句与strcmp函数进行分类讨论,当查找到相应元素时返回整形变量值
2.实验代码
int getindex( char *s ) { int i; char *week[7]= { "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" }; for (i = 0; i < 7; i++) { if (strcmp(s, week[i]) == 0) { break; } } if (i==7) { i = -1; } return i; }
3.本题调试过程碰到问题及解决办法
错误信息:
错误原因:输入函数接口定义时在后方加了多余的分号" ; "
改正方法:通过dev-c++提醒找出,低级错误
6-3 计算最长的字符串长度
1.设计思路
(1)主要描述题目算法。可以用文字描述(不允许使用伪代码),
第一步:定义两个整形变量 i,l
第二步:用for循环遍历数组
第三步:if语句中调用strlen函数进行计算并比较,最后返回 l 值
2.实验代码
int max_len( char *s[], int n ) { int i,l=0; for(i=0;i<n;i++) { if(l<strlen(*(s+i))) { l=strlen(*(s+i)); } } return l; }
3.本题调试过程碰到问题及解决办法
错误信息:无
6-4 指定位置输出字符串
1.设计思路
(1)主要描述题目算法。可以用文字描述(不允许使用伪代码),
第一步:定义整形变量i,j,通过一个for循环将ch1的值赋给*(s+i)
第二步:设计一个指针变量,判断*(s+j)!的值
第三步:整体遍历后,输出并返回(s+i)的值
2.实验代码
char *match( char *s, char ch1, char ch2 ){ int i,j; for(i=0;*(s+i)!='