• 第十二周作业


    | 这个教程属于哪个教程 |
    C语言程序设计 |
    | ------------ | ------------ |
    | 这次作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/computer-scienceclass3-2018/homework/3237 |
    | 我在这个课程的目标是 |二级指针的应用,了解指针与函数的关系,掌握指针作为函数返回值掌握单向链表的概念和操作
    这个具体在哪个方面帮助我实现目标的
    类似于用于数据的删除 |
    | 这个具体在哪个方面帮助我实现目标的 | 类似于用于数据的删除 |
    | 参考文献| c语言程序设|

    6-1 计算最长的字符串长度
    本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。
    函数接口定义:

    int max_len( char *s[], int n );
    

    其中n个字符串存储在s[]中,函数max_len应返回其中最长字符串的长度。

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    #define MAXN 10
    #define MAXS 20
    
    int max_len( char *s[], int n );
    
    int main()
    {
        int i, n;
        char *string[MAXN] = {NULL};
    
        scanf("%d", &n);
        for(i = 0; i < n; i++) {
            string[i] = (char *)malloc(sizeof(char)*MAXS);
            scanf("%s", string[i]);
        }
        printf("%d
    ", max_len(string, n));
    
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    

    输入样例:

    4
    blue
    yellow
    red
    green
    

    输出样例:

    6
    

    实验代码:

    int max_len( char *s[], int n )
    {
        int m=0;
        for(int i=0;i<n;i++)
        {
            int t=strlen(s[i]);
            if(m < t)
            {
                m=t;
            }
        }
        return m;
    }
    

    设计思路:

    运行结果图:

    6-2 统计专业人数
    本题要求实现一个函数,统计学生学号链表中专业为计算机的学生人数。链表结点定义如下:

    struct ListNode {
        char code[8];
        struct ListNode *next;
    };
    

    这里学生的学号共7位数字,其中第2、3位是专业编号。计算机专业的编号为02。
    函数接口定义:

    int countcs( struct ListNode *head );
    

    其中head是用户传入的学生学号链表的头指针;函数countcs统计并返回head链表中专业为计算机的学生人数。
    裁判测试程序样例:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    struct ListNode {
        char code[8];
        struct ListNode *next;
    };
    
    struct ListNode *createlist(); /*裁判实现,细节不表*/
    int countcs( struct ListNode *head );
    
    int main()
    {
        struct ListNode  *head;
    
        head = createlist();
        printf("%d
    ", countcs(head));
        
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    

    输入样例:

    1021202
    2022310
    8102134
    1030912
    3110203
    4021205

    输出样例:
    3
    实验代码:

    int countcs( struct ListNode *head )
    {
        int num = 0;
        struct ListNode  *p = head;
        while(p != NULL)
        {
            if(p->code[1] == '0' && p->code[2] == '2')
                num++;
            p = p->next;
        }
        return num;
    }
    

    设计思路


    实验截图:

    6-3 删除单链表偶数节点
    本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下:

        struct ListNode {
            int data;
            struct ListNode *next;
        };
    

    函数接口定义:

     struct ListNode *createlist();
        struct ListNode *deleteeven( struct ListNode *head );
    

    函数createlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束,函数应返回指向单链表头结点的指针。
    函数deleteeven将单链表head中偶数值的结点删除,返回结果链表的头指针。
    裁判测试程序样例:

    #include <stdio.h>
    #include <stdlib.h>
    
    struct ListNode {
        int data;
        struct ListNode *next;
    };
    
    struct ListNode *createlist();
    struct ListNode *deleteeven( struct ListNode *head );
    void printlist( struct ListNode *head )
    {
         struct ListNode *p = head;
         while (p) {
               printf("%d ", p->data);
               p = p->next;
         }
         printf("
    ");
    }
    
    int main()
    {
        struct ListNode *head;
    
        head = createlist();
        head = deleteeven(head);
        printlist(head);
    
        return 0;
    }
    

    /* 你的代码将被嵌在这里 */

    输入样例:

    1 2 2 3 4 5 6 7 -1
    

    输出样例:

    1 3 5 7 
    

    实验代码:

    typedef struct ListNode *List;
    struct ListNode *createlist()
    {  
        List head=NULL, tail=NULL;
        int t;
        scanf("%d",&t);
        while(t != -1){
            List temp = (List)malloc(sizeof(struct ListNode));
            temp->data = t;
            temp->next = NULL;
            if(tail==NULL)
                head = tail = temp;
            else{
                tail->next = temp;
                tail = temp;
            }
            scanf("%d",&t);
        }
        return head;
    }
    struct ListNode *deleteeven( struct ListNode *head )
    {
        List p=head,q;
        while(head && head->data%2==0){ 
            p = head;
            head = head->next;
            free(p);
        }   
        p = head;
        while(p && p->next){
            while(p->next && p->next->data%2==0){
                q = p->next;
                p->next = q->next;
            }
            p = p->next;
        }
        return head;
    }
    
    
    

    设计思路:

    实验截图:

    时间 代码行数 博客字数
    第一周 40 500
    第二周 50 1230
    第三周 54 1500
    第四周 30 1360
    第五周 78 1260
    第六周 78 1800
    第七周 88 2212
    第八周 68 1440
    第九周 56 1200
    第十周 300
    第十一周 35 800
    第十二周 30 3500
  • 相关阅读:
    c#.net分类上升达人~~~呵呵。。。
    js5:框架的使用,使框架之间无痕连接
    搭建 redis 集群 (redis-cluster)
    写好用户故事的10个提示
    什么是用户故事及用户故事在敏捷开发中如何编写
    java开发手册
    性能优化指南:性能优化的一般性原则与方法
    大型网站技术架构:摘要与读书笔记
    用MyEclipse JPA创建项目
    深入了解 JPA
  • 原文地址:https://www.cnblogs.com/20188703zyj/p/10884049.html
Copyright © 2020-2023  润新知