第十二周编程总结

一、作业

这个作业属于哪个课程 C语言程序设计ll
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/3234
我在这个课程的目标是 能够掌握二级指针的概念,以及指针数组的应用;
这个作业在哪个具体方面帮助我实现目标 了解了指针函数和函数指针的区别
参考文献 https://jingyan.baidu.com/article/0f5fb099d9ae7e6d8334eae1.html##1

基础题

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\n", 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++)
       {
           int len = strlen(s[i]);
           if(len>max)
          {
                max=len;
              }
      }
      return max;
}

2、设计思路

3、本题调试过程碰到问题及解决办法:

没什么大问题。

4、运行将结果截图

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\n", countcs(head));
	
    return 0;
}

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

输入样例:

1021202
2022310
8102134
1030912
3110203
4021205
#

输出样例:

3

1、实验代码

int countcs(struct ListNode *head)
{
    int sum=0;

    while(head)
    {
        if(head -> code[1] == '0' && head -> code[2] == '2')
        {
            sum++;
        }
        head = head -> next;
    }
 
    return sum;
}

2、设计思路

3、本题调试过程碰到问题及解决办法:

这个题目在运行时出了一点问题,找了半天找不出来还好问了同学就解决了。

4、运行将结果截图

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("\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 

1、实验代码

struct ListNode *createlist()
{
    struct ListNode *head,*p;
    head = (struct ListNode *)malloc(sizeof(struct ListNode));
    p = head;
    head->next=NULL;                                                //指向运算符->
    int num;
    while(scanf("%d",&num)!=EOF&&num!=-1)
    {
        p->next= (struct ListNode *)malloc(sizeof(struct ListNode));
        p=p->next;
        p-> data=num;
        p->next=NULL;
    }
    head=head->next;
    return (head);
}
struct ListNode *deleteeven(struct ListNode *head)
{
    struct ListNode *p,*a;
    if(head == NULL)
    {
        return NULL;
    }
    p=head;
    a=p->next;
    while(a!=NULL)
    {
        if(a->data%2==0)
        {
            p->next=a->next;
            free(a);
            a=p->next;
        }
        else
        {
            p=p->next;
            a=p->next;
        }
    }
    if(head->data%2==0)
    {
        head=head->next;
    }
    return(head);
}

2、设计思路

3、本题调试过程碰到问题及解决办法:

这个题目关于链表的不会做啊,这周五学了一下还不是很懂,还是借鉴了大佬的代码

4、运行将结果截图

预习题

1.所在小组想要开发的项目的名称和目标;
《能跳动并会变色的小球》
2.项目主体功能的描述;
小球的上下跳动,除了能对其速度控制之外,同时也要每弹跳一次并会变色一次
3.现阶段已做的准备工作;
对c语言的游戏设计教本第一章开始预习,并且合理调用windows以及c++库函数,例如:

#include<windows.h>&&windows<color.h>

4.小组成员名单和进度安排。(课程设计阶段:13-17周)
黄桢淇,王雅琼,周旭,吴昊
进度:分工合作,本组已经暂时完成了小球的跳动步骤,在本周内定将小球的变色运动程序编译出来!同时王雅琼,周旭同学负责代码问题的排查,黄桢淇,吴昊同学负责代码的编写以及相关思路的规划。

二、学习进度条

表格

周/日期 这周所花的时间 代码行数 学到的知识点简介 目前比较迷惑的问题
2/25-3/3 48h 45 数组的认识及用法 数组长度的理解
3/4-3/10 36h 37 编写程序时处理文件 fscanf与fprintf的具体用法
3/11-3/17 46h 55 定义文件,以及文件的导入导出和读写 二维数组的用法、上三角的判断及文件的处理
3/17-3/22 15h 66 选择排序法、二分查找法 不清楚选择排序法和冒泡排序法的区别
3/25-3/29 56h 74 判断回文,字符串的用法,预习了指针的用法 对于指针还是有许多不明白的地方
3/29-4/4 30h 78 指针变量的基本运算,内存单元和地址之间的关系 还是不太了解指针数组
4/4-4/11 24h 105 字符串与数组的组合运用 字符串的元素,地址,还有数组元素有点混淆不清
4/11-4/19 64h 365 字符串数组和指针字符串 字符串数组和指针字符串还书有点混淆,动态分配也不太懂
4/19-4/26 35h 156 定义结构,定义结构变量 结构体还行
4/26-5/4 15h 预习了结构指针并复习结构 结构指针有点不了解
5/4-5/10 25h 24 学习了递归函数的使用及注意事项 好难又很多不清楚的地方
5/10-5/16 33h 113 学习了二级指针 对指针数组和数组指针混淆不清

折线图

代码数和博客数累计

时间 博客字数 代码行数
第一周 635 45
第二周 655 37
第三周 956 55
第四周 1236 66
第五周 1352 74
第六周 1096 78
第七周 1865 105
第七周 2016 365
第八周 2654 442
第九周 3015 560
第十周 3540 684
第十一周 3806 703
第十二周 4201 816

三、学习感悟

这周的作业还算有点难度的,这一周主要是讲二级指针和指针数组还有数组指针,这两个概念有点分不清楚。这一周的C语言课也是在这周就结课了,后面还有程序设计,希望可以快速完成。还有一些搞不清楚的希望可以复习好,争取在期末不挂科。

四、结对编程感想

这周结对编程收获还行,希望继续加油!

posted @ 2019-05-17 21:20  ShiuChou  阅读(160)  评论(0编辑  收藏  举报