第十二周作业

本周作业头

这个作业属于哪个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/3234
我在这个课程的目标是 指针函数的应用,单向链表的操作
这个作业在哪个具体方面帮助我实现目标 题目对知识点的运用
参考文献 c语言程序设计(第3版)

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\n", max_len(string, n));

    return 0;
}

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

输入样例:

4
blue
yellow
red
green

输出样例:

6

实验代码:

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

设计思路:

遇到的问题及解决方法##实验截图

没有

实验截图:

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\n", countcs(head));
    return 0;
}
/* 你的代码将被嵌在这里 */

输入样例:

1021202
2022310
8102134
1030912
3110203
4021205
#

输出样例:

3

实验代码:

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

设计思路;

遇到的问题及解决方法

开始忽略了从head向后一一寻找

实验截图:

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("\n");
}

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 

实验代码:

struct ListNode *createlist()
    {
        struct ListNode *p=NULL,*head=NULL,*tail=NULL;
        int n;
        scanf("%d",&n);
        head=(struct ListNode*)malloc(sizeof(struct ListNode));
        head->next=NULL;
        tail=head;
        while(1)
        {
            if(n==-1)break;
            p=(struct ListNode*)malloc(sizeof(struct ListNode));
            p->data=n;
            p->next=NULL;
            tail->next=p;
            tail=p;
            scanf("%d",&n);
        }
        return head;
    }
struct ListNode *deleteeven( struct ListNode *head )
    {
        struct ListNode *p=head;
        int flag;
        while(p->next!=NULL)
        {
            flag=0;
            if(p->next->data%2==0)
            {
                p->next=p->next->next;
                flag=1;
            }
            if(flag==0)p=p->next;
        }
        return head->next;
    }

设计思路:

遇到的问题及解决方法

while语句的条件不会,还有很多其他问题

实验截图:

学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
2/25-3/3 三天 45 数组的认识及用法 数组长度的理解
3/4-3/10 四天 38 文件的处理问题 文件指针的用法
3/11-3/16 三天 52 二维数组的使用及文件插入 二维数组的用法、上三角的判断及文件的处理
3/17-3/24 三天 102 用一维数组和二维数组编程 冒泡算法的运用
3/25-3/29 三天 66 学会规范的画流程图,认识了字符串 进制之间的转换的代码
4/1-4/5 三天 78 理解变量,内存和地址之间的关系
4/8-4/12 三天 154 数组名作为函数参数的用法 如何运用在字符串中
4/15-4/19 两天 123 学会用指针实现内存动态分布 不是很清楚怎样使用动态分配
4/20-4/26 三天 77 结构数组,结构变量以及结构指针的运用 无类型名定义有点不清楚
4/30-5-2 两天 0 回答
5/4-5/10 三天 23 递归函数的运用 汉诺塔问题
5/11-5/17 三天 49 了解数组指针,指针数组,指针函数,链表 学的这些都不是很懂
预习作业
从第十三周开始,将进入课程设计阶段,请在本次作业中给出:
1.所在小组想要开发的项目的名称和目标;
2.项目主体功能的描述;
3.现阶段已做的准备工作;
4.小组成员名单和进度安排。

折线图

时间 代码行数 博客字数
第一周 45 427
第二周 38 316
第三周 52 696
第四周 102 1117
第五周 66 1842
第六周 78 1193
第七周 154 1713
第八周 123 1712
第九周 77 1830
第十周 0 1257
第十一周 23 1909
第十二周 49 1532

学习总结

这次的课程我觉得有点难,自己不怎么明白。

编程总结

没有一起编程所以没有总结

posted @ 2019-05-17 20:23  丁震  阅读(96)  评论(0编辑  收藏  举报