第三次作业

第三次作业

作业一

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

作业二学习总结和进度

指针数组,自我理解是数组里的每个元素都是指针,每个元素都是指向着地址;用二级指针可以对指针数组操作,我认为这是因为他们都指向着相同的地址,都是对地址值进行操作。

posted @ 2018-04-22 20:15  金海东123  阅读(138)  评论(0编辑  收藏  举报