博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2019春季第十二周作业
阅读量:4615 次
发布时间:2019-06-09

本文共 4333 字,大约阅读时间需要 14 分钟。

问题 回答
这个作业属于那个课程 C语言程序设计
这个作业要求在哪里
我在这个课程的目标是 函数指针,指针函数,还有链表
这个作业在哪个具体方面帮助我实现目标 链表
参考文献 C语言程序设计

基础作业

计算最长的字符串长度

本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。

函数接口定义
int max_len( char *s[], int n );
其中n个字符串存储在s[]中,函数max_len应返回其中最长字符串的长度。
裁判测试程序样例

#include 
#include
#include
#define MAXN 10#define MAXS 20int 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;}/* 你的代码将被嵌在这里 */

输入样例

4blueyellowredgreen

输出样例

6

1实验代码

int max_len( char *s[], int n ){    int i,len[n],max=0;    for(i=0;i

2)流程图

1581309-20190515100948634-944017874.png

3)本题调试过程碰到的问题及解决办法

1581309-20190515101030509-6807409.png

问题:太粗心了,把len[n]写成了len[i]导致运行超时

解决办法:我就把代码从头看了一遍,发现错误

4)运行结果截图

1581309-20190515101334704-1470545576.png

5)评价

这道题自我感觉良好

时间:半个小时

统计专业人数

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

struct ListNode {    char code[8];    struct ListNode *next;};

这里学生的学号共7位数字,其中第2、3位是专业编号。计算机专业的编号为02。

函数接口定义
int countcs( struct ListNode *head );
其中head是用户传入的学生学号链表的头指针;函数countcs统计并返回head链表中专业为计算机的学生人数。
裁判测试程序样例

#include 
#include
#include
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;}/* 你的代码将被嵌在这里 */

输入样例

102120220223108102134103091231102034021205#

输出样例

3

1)实验代码

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

2)流程图

1581309-20190515102711160-1370378702.png

3)本题调试过程碰到的问题及解决办法

1581309-20190515102751310-2005884151.png

问题:就是我没有让指针指向下一个结点

解决办法:就是看课本上那个例题,了解链表

4)运行结果截图

1581309-20190515103021906-1186262388.png

5)评价

对于链表朦朦胧胧

用时:一个小时

删除单链表偶数结点

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

struct ListNode {    int data;    struct ListNode *next;};

函数接口定义

struct ListNode *createlist();struct ListNode *deleteeven( struct ListNode *head );

函数createlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束,函数应返回指向单链表头结点的指针。

函数deleteeven将单链表head中偶数值的结点删除,返回结果链表的头指针。
裁判测试程序样例

#include 
#include
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 *p,*head,*p1;    int num;    int size=sizeof(struct ListNode);    p=head=p1=NULL;    scanf("%d",&num);    while(num!=-1){        p=(struct ListNode *)malloc(size);        p->data=num;        p->next=NULL;        if(head==NULL){            head=p;        }        else{            p1->next=p;        }        p1=p;        scanf("%d",&num);    }    return head;}struct ListNode *deleteeven( struct ListNode *head ){    struct ListNode *p1,*p2;    if(head==NULL){        return NULL;    }    p2=head;    while(p2!=NULL){        if(p2->data%2==0){            if(p2==head){                head=head->next;                free(p2);            }            else{                p1->next=p2->next;                free(p2);            }        }        else{            p1=p2;        }        p2=p2->next;    }    return head;}

2)流程图

1581309-20190515110300414-1825261976.png

3)本题调试过程碰到的问题及解决办法

1581309-20190515110400740-677229361.png

问题:就是我对于链表还是有很多的问题,我其实是不太明白他的过程的,这道题我是根据课本的那个例题建立链表和删除结点

解决办法:我模仿课本例题进行编写但是有答案错误,后来我又从网上查了很多关于建立链表和删除结点的知识

4)运行结果截图

1581309-20190515110926314-1938462776.png

5)评价

就是链表的一些知识还不太明白,周五上课的时候重点听听吧

用时:3个小时

预习作业

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

正在思考中

2.项目主体功能的描述;

还在思考

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

买了资料,在看书

4.小组成员名单和进度安排。(课程设计阶段:13-17周)

左帅 黄艳菊 某某

学习进度条

周/日期 这周所花的时间 代码行数 学到的知识点简介 目前比较迷惑大问题
5/12-5/18 10个小时 200行 指针数组,数组指针,指针函数,二阶指针,链表 链表

累计代码行数和博客字数

时间 博客字数 代码行数
第一周 0 80
第二周 100 180
第三周 400 330
第四周 600 480
第五周 900 720
第六周 1250 890
第七周 1610 1065
第八周 2010 1295
第九周 2480 1495
第十一周 3080 1995
第十二周 3680 2195

1581309-20190522222042034-857091871.png

学习感悟

1)感觉这个链表有些复杂,还是要多练才行,不然很朦胧对于这个知识点

2)疑惑:对于链表的知识半懂半不懂的。

结对编程

过程:就是一起思考该怎么做,讨论解题的的思路

我觉得结对编程的好处就是可以给对方提供一个思路,一个做题的不一样的方向
缺点就是结对编程不如自己编程那么的时间灵活

转载于:https://www.cnblogs.com/H-Alice/p/10868256.html

你可能感兴趣的文章
ddt Ui 案例2
查看>>
拿下主机后内网的信息收集
查看>>
LeetCode 876. Middle of the Linked List
查看>>
作业一
查看>>
joj1023
查看>>
动画原理——旋转
查看>>
Finding LCM LightOJ - 1215 (水题)
查看>>
python生成器
查看>>
PowerDesigner Constraint name uniqueness 错误
查看>>
系统子系统_GPRS子系统流程图
查看>>
为什么 NSLog 不支持 Swift 对象(转)
查看>>
Ubuntu 下搭建SVN服务器
查看>>
css3转换
查看>>
读取文件,按行输出
查看>>
向PHP发送HTTP-Get请求
查看>>
本周作业
查看>>
rsyslog 传输日志
查看>>
apache性能优化
查看>>
UNDO 100%
查看>>
MaReduce理论
查看>>