第三次作业
第三次作业
作业一
题目6-1输出月份英文名
1。设计思路
根据题目要求,由给定的数字来返回月份,首先要定义一个字符数组来包含各个月份的英文名,定义完字符数组之后,便可以通过遍历的方法来找出所对应的月份,在根据题目的要求上说的不是1-12的数字之外的输出“wrong input!”,便通过“if”条件语句进行判断来限制这个条件。
2。实验代码
#include <stdio.h>
char *getmonth( int n )
{
char *month[13]={"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。没问题
6-2 查找星期
int getindex( char *s ) {
char day[7][MAXS]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
int i;
for(i=0;i<7;i++) {
if(strcmp(*(day+i),s)==0)
return (i);
}
if(i==7)
return (-1);
}
6-3计算最长的字符串长度
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;
}
题目6-4指定位置输出字符串
要先查找输出指定的字符串,首先要定义循环变量,通过遍历来进行查找,在查找之前需要定义一个指针,用它来指向所传入的所让输入的数组的首地址,之后根据传入的字符进行判断,如果在遍历过程中和第一个传入的字符相同便把它赋给指针,之后再次前提下再次进行遍历,找出在此字符数组中和第二个字符相同的字符;并进行输出,最后需要判断一种只有第二个字符,而没有第一个字符的情况,故需加上若原字符数组为空,并返回元字符数组的首地址
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;
}
作业二学习总结和进度
指针数组,自我理解是数组里的每个元素都是指针,每个元素都是指向着地址;用二级指针可以对指针数组操作,我认为这是因为他们都指向着相同的地址,都是对地址值进行操作。