第三次作业

Posted 李新华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三次作业相关的知识,希望对你有一定的参考价值。

pta第三次作业(1)6-1 输出月份英文名

1.设计思路

(1)主要描述题目算法

第一步:调用函数
第二步:使用switch语句完成此程序
第三步:写出关于mouth的switch语句
第三步:如果输入的不是1到12之间的数字则返回NULL

(2)流程图

2.实验代码

char *getmonth( int n )
{ 
  switch (n){
   case 1:return "January";break;
    case 2:return "February";break;
    case 3:return "March";break;
    case 4:return "April";break;
    case 5:return "May";break;
    case 6:return "June";break;
    case 7:return "July";break;
    case 8:return "August";break;
    case 9:return "September";break;
    case 10:return "October";break;
    case 11:return "November";break;
    case 12:return "December";break;
    default:return NULL;
  }

} 

3.错误信息及改正放法

错误信息1:switch后面忘记加n
改正方法:复习switch语句

pta第三次作业(1)6-2 查找星期

1.设计思路

(1).描述算法

第一步:调用函数
第二步:定义一个整型变量i,因为星期是属于字符串所以需要定义i字符串数组,day[7][10]
第三步:利用for循环遍历数组,判断输入的字符串是否与for循环中的相同,如果相同就跳出循环,如果遍历完整个数组仍然没有招到相同的则此时i=7,也要结束返回i为-1

2.实验代码

    int getindex(char *s)  
{  
    int i;  
    char day[7][10] = { "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" };  
    for (i = 0; i <= 6; i++)  
    {   
        if (strcmp(s, day[i]) == 0) break;  
    }  
    if (i == 7) i = -1;  
    return i;  
}  

3.错误信息及改正方法

错误信息:试图使用第一题的算法,使用switch语句。
改正方法:switch语句不能应用于字符串里面,使用字符数组

pta第三次作业(1)计算字符串长度

1.设计思路

(1).算法

第一步:调用函数
第二步:定义整型变量i,a
第三步:先令最大值为第一项的长度max=strlen(s[0])
第四步:通过for循环进行遍历数组,将最大值与数组中的第二项至最后一项进行比较如果有出现比最大值大的就直接将值赋给最大值并返回

(2)流程图

2.实验代码

int max_len( char *s[], int n )
{
    int i,a;
    int max=strlen(s[0]);
    for(i=1;i<n;i++){
	    a=strlen(*(s+i));
	    if(a>max)
	    max=a;
    }
    return max;
}

3.错误信息及改正

错误信息:

pta第三次作业(1)

1.设计思路

(1).算法描述

第一步:调用函数,初始化i=0,j=0,k=0.len=0指针变量p=null;
第二步:利用for循环判断如果s[i]=ch1令p=&s[i]
第三步:利用j进行for循环找到相应的ch2停止

2.实验代码

char *match( char *s, char ch1, char ch2 ){


    int i=0,j=0,k=0,len=0;  
    char *p=NULL;  

    len = strlen(s);  

    for(i=0;i<len;i++){  
        if(s[i]==ch1){  
            p=&s[i];  
            for(j=i;j<len;j++){  
                if(s[j]!=ch2){  
                    printf("%c", s[j]);  
                }  
                if(s[j]==ch2){  
                    printf("%c\\n", s[j]);  
                    return p;  
                }     
            }  
            printf("\\n");  
            return p;  
        }  
    }  
    printf("\\n");  
    return p;  
}  

3.错误信息

pta第三次作业(2)奇数值结点链表

1.设计思路

(1).算法

第一步:调用函数
第二步:定义结构体变量head=NULL,p=NULL,q=NULL,动态分配p,q,使用while循环,如果p->data!=0,进行if语句
第三步:调用函数,定义head=NULL,q=NULL,p,m=NULL,h=NULL,当L=NULL时进行for循环

2.实验代码

struct ListNode *readlist(){
    struct ListNode *head=NULL,*p=NULL,*q=NULL;
     int data;
     p=q=(struct ListNode *)malloc(sizeof(struct ListNode));
    scanf("%d",&p->data);
    while(p->data!=-1){
        if(head==NULL){
            head=p;
          }else{
            q->next=p;
        }
        q=p;
        p=(struct ListNode *)malloc(sizeof(struct ListNode));
        scanf("%d",&p->data);
    }
    q->next=NULL; 
    return(head);
 }
struct ListNode *getodd( struct ListNode **L ){
     struct ListNode *head=NULL,*q=NULL,*p,*m=NULL,*h=NULL;
        if(*L!=NULL){
            for(head=*L;head!=NULL;head=head->next){
                if(head->data%2!=0){
                    if(h==NULL){
                        h=head;
                    }else{
                        p->next=head;
                    }
                    p=head;
                }else{
                    if(q==NULL){
                        q=head;
                    }else{
                        m->next=head;
                    }
                    m=head;
                }
            }
            p->next=NULL;
            if(m!=NULL)
            m->next=NULL;
            *L=q;
        }else{
            return NULL;
        }
        return(h);
    }

pta第三次作业(2)6-2 学生成绩链表处理

1.设计思路

(1)算法

第一步:调用函数
第二步:定义结构体指针p,令head=null对p和ptr进行动态分配
第三步:判断如果p->num!=0则读入数据否则就将p的值赋给p->next
第四步:调用函数,定义结构体变量
第五步:如果n=NULL即进行for循环,如果min_score>p->score且p=head则将p->next赋值给head否则将p->next赋值给ptr->next

2.实验代码

       struct stud_node *createlist(){
    struct stud_node *head=NULL,*p=NULL,*ptr=NULL;
    p=ptr=(struct stud_node *)malloc(sizeof(struct stud_node));
    int num;
    char name[20];
    int score;
    scanf("%d",&p->num);
    while(p->num!=0){
        scanf("%s %d",p->name,&p->score);
        if(head==NULL){
            head=p;
        }else{
            p->next=p;
        }
        ptr=p;
    p=(struct stud_node *)malloc(sizeof(struct stud_node));
    scanf("%d",&p->num);
    }
    ptr->next=NULL; 
    return (head);
}
struct stud_node *deletelist( struct stud_node *head, int min_score ){
    struct stud_node *p,*ptr,*a;
    int i;
    if(p!=NULL){
        for(a=head;a!=NULL;a=a->next){
            p=head;
            while(min_score<=p->score&&p->next!=NULL){
                ptr=p;p=p->next;
            }
            if(min_score>p->score){
                if(p==head){
                    head=p->next;
                }else{
                    ptr->next=p->next;
                }
            }
        }
    }
    return (head);
}

pta第三次作业(2)6-3 链表拼接

1.设计思路

2.实验代码

没怎么听懂,作业是从网上参考来的
struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2)
{
int num = 0;
int temp[100];
struct ListNode *p = list1;
while(p != NULL)
{
temp[num] = p->data;
num++;
p = p->next;
}
p = list2;
while(p != NULL)
{
temp[num] = p->data;
num++;
p = p->next;
}
int i,j;
for(i = 0; i < num; i++)
for(j = i + 1; j < num; j++)
{
if(temp[i] > temp[j])
{
int t;
t = temp[i];
temp[i] = temp[j];
temp[j] = t;
}
}
struct ListNode *newlist = NULL;
struct ListNode *endlist = NULL;
struct ListNode *q;
for(i = 0; i < num; i++)
{
q = (struct ListNode *)malloc(sizeof(struct ListNode));
q->data = temp[i];
if(newlist == NULL)
{
newlist = q;
newlist->next = NULL;
}
if(endlist != NULL)
{
endlist->next = q;
}
endlist = q;
endlist->next = NULL;
}
return newlist;
}
评论博客:辛静瑶
吴晓明
焦瑞君
代码托管

进度总结:上一周学习的感觉还阔以,这一周学习的真的很吃力啊,看那么多行代码,心理已经产生了抵触。
学习记录:

以上是关于第三次作业的主要内容,如果未能解决你的问题,请参考以下文章

第三次寒假作业

第三次作业

第三次作业

第三次作业

第三次作业

第三次作业