zoukankan      html  css  js  c++  java
  • 第十二周作业

    .这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass4-2018/homework/3236
    我在这个课程的目标是 指针函数
    这个作业在那个具体方面帮助我实现目标 了解,使用指针函数
    参考文献 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
    

    1.实验代码:

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

    2.流程图:

    3.错误:

    遇到的问题:在提交pta的时候出现运行超时的情况,
    解决方法:发现定义的数组小了一点,改一下就行了。

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

    输入样例:

    1021202
    2022310
    8102134
    1030912
    3110203
    4021205
    #
    

    输出样例:

    3
    

    1.实验代码:

    int countcs( struct ListNode *head )
    {
        struct ListNode six=*head;
        int SUM=0;
        for(six=head; six!=NULL; six=six->next){
    
            if(six->code[1] == '0' && six->code[2] == '2')
            {
    
            SUM++;
            }
        
        }
        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("
    ");
    }
    
    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 
    

    2.流程图:

    3.错误:

    遇到的问题:对于链表结构的理解不够深刻,然后在使用的时候,就会出现各种各样的错误,比如说在删除链表的时候, 不知道是应该删除前应该还是保留后一个,还有在全部使用完之后,怎么样把链表全面清理掉。
    解决方法:https://www.cnblogs.com/itiande/p/9537296.html 参考资料;

    4.运行截图:

    学习总结:这一个礼拜的作业综合性很强,做起来具有挑战性,就第一个题目而言,就是考了一个小问题,很多人,包括我自己在这个关于scanf输入的这一个容易忽略的问题上,出现了问题,然后就卡住了。第二个题目可以说是一个阅读题,读懂了就没有问题了,第三个题目是一个链表问题,刚开始不明白什么是链表,不过在老师讲解以后,就一下子就做出来了,总的来说,问题不大,题目难度还行,以后还要加油。

    折线图:

    学习进度表:

    累计代码行数和博客字数

    时间 博客字数 代码行数
    第一周 0 300
    第二周 6100 100
    第三周 6300 250
    第四周 6200 250
    第五周 6300 140
    第六周 6400 200
    第七周 6600 194
    第八周 13510 200
    第九周 8000 300
    第十周 15000 100
    第十一周 8000 200
    第十二周 6000 300

    编程总结:这个礼拜的编程总结,有多的问题,俩个人都不会,就只能看着,应该是题目变难了,这个礼拜合作起来,不方便,非常难受,还是因为自己不厉害吧,但是,俩个人一起想题目的话,效率还是很高的,毕竟每个人都有自己的看法,俩个人,想问题也比较全面。还是利大于弊,挺好的。以后要继续坚持。

  • 相关阅读:
    一起talk C栗子吧(第九十回:C语言实例--使用管道进行进程间通信三)
    集群技术(三)MySQL集群深度解析
    ZOJ 3609 Modular Inverse(扩展欧几里德)
    8,16小感
    Dagger2----一个最简单的Dagger2依赖的实现
    android:模拟水波效果的自己定义View
    SQL Server 运行计划操作符具体解释(1)——断言(Assert)
    参数类型 (实体类层)eneity或pojo 常用参数类型
    参数类型 (@Controller层)
    参数类型 (@Service层) impl
  • 原文地址:https://www.cnblogs.com/xudo/p/10883679.html
Copyright © 2011-2022 走看看