• 第十二周


    问题 回答
    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass3-2018/homework/3237
    我在这个课程的目标是 学习单向链表
    这个作业在那个具体方面帮助我实现目标 主要是pta

    <计算最长的字符串长度>

    本题要求实现一个函数,用于计算有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 i,max=0;
        for(i=0;i<n;i++)
        {
            if(strlen(s[max])<strlen(s[i]))
            {
                max=i;
            }
        }
        return strlen(s[max]);
    }   
    

    2.设计思路

    3.遇到的问题及解决方法

    4.运行截图

    <统计专业人数>

    本题要求实现一个函数,统计学生学号链表中专业为计算机的学生人数。链表结点定义如下:
    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 )
    {
        struct ListNode *p=head;
        int count=0;
        for(p=head;p!=NULL;p=p->next)
        {
            if(p->code[1]=='0'&&p->code[2]=='2')
            {
                count++;
            }
        }
        return count;
    }
    

    2.设计思路

    3.遇到的问题及解决方法
    问题一:主要是对于单项链表这个知识点不熟,其中有很多意义不同的地方。比如:因为是照书上写的,我想将->改成用·引入的那种形式,发现编译错误。其实到现在我也还是没有理解。

    4.运行截图

    <删除单链表偶数节点>

    本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下:
    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 x;
        struct ListNode *head,*tail,*p;
        head=(struct ListNode*)malloc(sizeof(struct ListNode));
        head->next=NULL;
        tail=head;
        while(1)
        {
            p=(struct ListNode*)malloc(sizeof(struct ListNode));
            scanf("%d",&x);
            p->next=NULL;
            if(x==-1)
                break;
            p->data=x;
            p->next=NULL;
            tail->next=p;
            tail=p;
        }
        return head;
    }
    struct ListNode *deleteeven( struct ListNode *head )
    {
        struct ListNode *p1,*p2;
        int flag;
        p1=head;
        p2=p1->next;
        while(p1->next)
        {
            flag=0;
            if(p2->data%2==0)
            {
                p1->next=p2->next;
                p2=p2->next;
                flag=1;
            }
            if(flag==0)
            {
                p1=p1->next;
                p2=p1->next;
            }
        }
        return head->next;
    }
    

    2.设计思路

    3.遇到的错误及解决方法
    问题一:最主要的是对于单项链表的不熟,导致编写起来的困难。
    解决方法:自己看书仔细研究,其实还是不太明白。
    问题二:在用单向链表时,我还没有先用动态存储分配,就输入,导致内存超限。
    解决方法:查询教材,发现问题。

    4.运行截图

    挑战题
    <八皇后>
    1.其实经过上周对这题的思考,我就没有再想过了,助教让我去借鉴借鉴别人的思路,我也还在仔细研究中,还未看的很清楚。。。
    <求迷宫最短通道>
    这个题目我觉得比八皇后还难些,就算让我画迷宫我都画不出来,还让我编写代码,我真的是有那个心没那个力,一点思路都没有。。。

    周/日期 这周所花时间 学到知识点简介
    5.11-5.17 6天 单向链表、上周题目大佬的讲解
    时间 博客字数 代码行数
    第一周 200 40
    第二周 250 70
    第三周 300 70
    第四周 350 90
    第五周 400 100
    第六周 450 150
    第七周 400 150
    第八周 450 200
    第九周 500 200
    第十周 500
    第十一周 400 200
    第十二周 400 200

    学习感悟:现在题目让我越来越没有思绪,我觉得还是基本知识没掌握太好,又或自己没有充分的投入,要每天自己敲敲代码才行。
    难点:这周主要是单向链表的问题,其实看书还是能看懂,但是我还不知道如何去运用。

    预习题
    1.所在小组想要开发的项目的名称和目标

    项目名称:《消灭敌机》
    目标:使用所学C语言编写一个小游戏。
    

    2.项目主体功能的描述

    主要是控制飞机的移动,并发射激光销毁对面所来的飞机。
    

    3.现阶段已做的准备工作

    现阶段主要是预习了《C语言课程设计与游戏开发实践教程》中第1章中的简单飞机游戏以及第2章中发射激光等一些知识点,还没真正开始自己动手去做。
    

    4.小组成员名单和进度安排

    成员:高田、郭钰轩、汪甜甜
    进度安排:高田和汪甜甜先想大概的设计思路,然后再一起探讨不足之处,郭钰轩主要负责代码的调试及问题的排查。
    
  • 相关阅读:
    Sql中CHARINDEX用法
    当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式
    Windows Server 2012 R2安装.NET4.7.2服务问题集合
    详细实例全面解析SQL存储过程
    MySQL 存储过程
    华为远程登陆配置
    数据平台环境部署(mysql、docker、nginx)
    ISIS的路由渗透
    华为模拟器的安装失败(出现40、41、42代码错误,Oracle VM VirtualBox安装出现严重错误以及一直处于开机状态)
    华为模拟器配置动态ospf--虚拟链路、rip重分布、static重分布
  • 原文地址:https://www.cnblogs.com/arthur-w/p/10878601.html
Copyright © 2020-2023  润新知