• 2019春第十二周作业


    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/MS/homework/3239
    我在这个课程的目标是 了解二级指针,指针与函数的关系和单向链表
    这个作业在哪个具体方面帮助我实现目标 熟悉了指针的用法,学会使用二级指针和单向链表解决问题
    参考文献 C语言程序设计II

    6-1 计算最长的字符串长度 (15 分)

    本题要求实现一个函数,用于计算有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

    1.实验代码

    ```

    int max_len( char *s[], int n )
    {
           int m=0,i;
           for(i=0;i<n;i++)
           {
                 if(strlen(s[i])>m)
                 m=strlen(s[i]);
            }
    return m;
    }
    ```
    2.设计思路
    3.本题调试过程碰到的问题及解决办法
    比较简单,没有问题
    4.运行结果截图

    6-2 统计专业人数 (15 分)

    本题要求实现一个函数,统计学生学号链表中专业为计算机的学生人数。链表结点定义如下:
    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

    1.实验代码

    ```

    int countcs( struct ListNode *head )
    {
           int count=0;
           struct ListNode *p = head;
           while(p!=NULL)
           {
                   if(p->code[1]=='0'&&p->code[2]=='2')
                   count++;
                   p=p->next;
            }
    return count;
    }
    ```
    2.设计思路
    3.本题调试过程碰到的问题及解决办法 
    基本没什么问题
    4.运行结果截图 

    6-3 删除单链表偶数节点 (20 分)

    本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下:
    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

    1.实验代码

    ```

    struct ListNode *createlist()
    {
          int n;
          struct ListNode *head,*m,*p;
     
          head=(struct ListNode*)malloc(sizeof(struct ListNode));
          head->next=NULL;
          m=head;
     
          while(1)
          {
                 p=(struct ListNode*)malloc(sizeof(struct ListNode));
                 p->next=NULL;
     
                 scanf("%d",&n);
                 if(n==-1)
                       break;
                 p->data=n;
                 p->next=NULL;
     
                m->next=p;
                m=p;
           }
     
    return head;
    }
     
    struct ListNode *deleteeven( struct ListNode *head )
    {
           struct ListNode *p1,*p2;
           int s;
     
           p1=head;
           p2=p1->next;
           while(p1->next)
           {
                s=0;
                if(p2->data%2==0)
                {
                       p1->next=p2->next;
                       p2=p2->next;
                       s=1;
                }
                if(s==0)
                {
                       p1=p1->next;
                       p2=p1->next;
                }
          }
     
    return head->next;
    }
    ```
    2.设计思路
    3.本题调试过程碰到的问题及解决办法 
    改正多次后虽然是零错误,但是不管我怎么改都是这个“Failed to execute",也不知道为什么,后来我干脆直接把代码复到pta上居然对了,现在我还不知道这个到底是为什么
    4.运行结果截图
     
    挑战题不会
     
    预习作业
     
    1.所在小组想要开发的项目的名称和目标;
    名称:不思议迷宫
    目标:迷宫小游戏
    2.项目主体功能的描述;
    用#和空格做迷宫,#当围墙,空格当迷宫的道路
    3.现阶段已做的准备工作;
    思路跟目标,还有正在学习一些相关知识
    4.小组成员名单和进度安排。
    乔紫依,梁鹏飞,唐森林
     
    学习感悟
    学习还是自学比较重要,懂了就不觉得难了,肯花时间才能学得好
  • 相关阅读:
    CentOS中基于不同版本安装重复包的解决方案
    诺讯科技
    SQLMap使用
    python初码
    优秀软件project师必备的7大特性
    3.2 Piecewise Linear Interpolation(站点)
    C#开发Unity游戏教程之游戏对象的属性变量
    java 线程 原子类相关操作演示样例 thinking in java4 文件夹21.3.4
    一键解决ScrollView嵌套ListView仅仅显示一行的问题
    W5500中断寄存器的理解
  • 原文地址:https://www.cnblogs.com/lyp82ndl/p/10883500.html
Copyright © 2020-2023  润新知