二学期第三次作业

时间:2022-09-07 14:57:51

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.查找星期

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

思路
根据输入的星期输出数字
无错误
3.计算最长的字符串长度

int max_len( char *s[], int n )
{
int max=0,j=0,long=0;
for(j=0;*(s+j)!='\0';j++)
{
    long=strlong(*(s+j));
    if(max<long)
    {
        max=long;
    }
}
return max;
}

思路
比较输入的字符串的长度后输出最长的字符串的个数
无问题
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; 
}

无问题
5.奇数值结点链表

struct ListNode *readlist()
{
struct ListNode *p=NULL,*tail=NULL,*head=NULL;
int data=0,count=0;
p=tail=(struct ListNode*)malloc(sizeof(struct ListNode));
scanf("%d",&data);
while(data!=-1)
{
    p->data=data;
    p->next=NULL;
    count++;
    if(count==1)
    {
        head=p;
    }else
    {
        tail->next=p;
        tail=p;
    }
    p=(struct ListNode*)malloc(sizeof(struct ListNode));
    scanf("%d",&data);
}
return head;
}
struct ListNode *getodd( struct ListNode **L )
{
struct ListNode *i=NULL,*head1=NULL,*head2=NULL,*m=NULL,*n=NULL;
i=*L;
head1=(struct ListNode*)malloc(sizeof(struct ListNode));
head2=(struct ListNode*)malloc(sizeof(struct ListNode));
head1->next=NULL;
head2->next=NULL;
m=head1;
n=head2;
while(i)
{
    if(i->data%2!=0)
    {
        m->next=i;
        m=i;
    }else
    {
        n->next=i;
        n=i;
    }
    i=i->next;
}
m->next=NULL;
n->next=NULL;
*L=head2->next;
return head1->next;
}

无问题
5.6题并不会

2.学习总结和进度

1、总结两周里所学的知识点,回答下列问题?(用自己的话表达出你的理解,网上复制粘贴没有分数)(5分)
(1)如何理解指针数组,它与指针、数组有何关系?为何可以用二级指针对指针数组进行操作?
指针数组是将指针集成数组。
(2)将C高级第三次PTA作业(1)任何一个题目改为使用二级指针对指针数组进行操作。

 (3)用指针数组处理多个字符串有何优势?可以直接输入多个字符串给未初始化的指针数组吗?为什么?
  用指针数组处理多个字符串比较快捷简便,不可以。

2.git
地址
二学期第三次作业
二学期第三次作业

  1. 二学期第三次作业