第十二周编程总结

it2022-05-05  161

作业头

这个作业属于哪个课程C语言程序设计ll这个作业要求在哪里(https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/3234)我在这个课程的目标是(1)掌握二级指针的概念,以及指针数组的应用;(2)了解指针与函数的关系,掌握指针作为函数返回值;(3)掌握单向链表的概念和操作这个作业在哪个具体方面帮助我实现目标掌握指针的应用,了解单向链表的概念参考文献(https://blog.csdn.net/Stephanie17395/article/details/83792957] C语言程序设计ll

基础题

一、计算最长的字符串长度 (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

1)实验代码

int max_len( char *s[10], int n ) //函数定义 { int i,max,j; max=0; for(i=0;i<n;i++) //输入字符 { j=strlen(s[i]); //计算字符串长度 if(j>max) { max=j; } } return max; //返回其中最长字符串的长度 }

2)设计思路

3)运行中遇到的问题

题目要求返回字符长度,我是结束代码 导致答案不正确

4) 运行结果截图

二、统计专业人数 (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

1)实验代码

int countcs( struct ListNode *head ) { int n=0; struct ListNode *p = head; //定义结构体指针 while(head!=NULL) { if(head->code[1] == '0' &&head->code[2] == '2') n++; head =head->next; //取出head所指向的结构体中包含的数据next赋值给haed } return n; }

2)设计思路

3)运行过程中遇到的问题

返回值不正确 ,开始对->不明白,查了意思它是用于指向结构体子数据的指针,用来取子数据

4)运行结果截图

三、删除单链表偶数节点 (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

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)); p->next=NULL; scanf("%d",&x); 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 *p,*p2; int flag;//记录是否删除了数据 p=head; p2=p->next; while(p->next) { flag=0; if(p2->data%2==0)//是偶数,删除! { p->next=p2->next; p2=p2->next; flag=1;//有删除flag置1 } if(flag==0)//无删除 { p=p->next; p2=p->next; } } return head->next; }

2) 设计思路

3)运行过程中的问题

对单向链表有很多不了解的知识点,在关于链表操作的综合程序还需要老师在课上讲解

4)运行结果

预习作业

从第十三周开始,将进入课程设计阶段,请在本次作业中给出:

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

俄罗斯方块

了解设计的原理及步骤,完成此项目的开发是最终目标

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

主函数 int mian() { startup(); //初始化 beforegame(); //游戏开始前的画面 GreateRandonSqare; //产生随机方块 CopySqareToBack; //将方块贴入背景 while(1) { double start = (double)clock()/CLOCKS-PER-SES; //定时函数 show(); //显示函数 UpdateWithInput(); //与用户有关的输入 UpdateWithoutInput(); //与用户无关的输入 if(Score<10) { if((double)clock()/CLOCKS-PER-SEC - start<1.0/3) Sleep((int)((1.0/3 - (double)clock()/CLOCKS-PER-SEC + start) *1000)); } else if(Score>=10) { if((double)clock()/CLOCKS-PER-SEC - start<1.0/5) Sleep((int)((1.0/5 - (double)clock()/CLOCKS-PER-SEC + start) *1000)); } } getch(); closegraph(); return 0; } //函数的声明 void gotoxy(int x,iny y);//清屏 void startup();//初始化 void show();//显示函数,清全屏 voud UpdateWithoutInput(); //与用户无关的输入 void UpdateWithInput(); //与用户有关的输入 void GreateRandonSqare();//随机显示图形 void CopySqareToBack();//把图形写入背景数组 void SqareDown();//下降 void SqareLeft();//左移 void SqareRight();//右移 void OnChangeSqare();//变形 void ChangeSqare();//除长条和正方形外的变形 void ChangeLineSqare();//长条变形 int CanSqareChangeShape();//解决变形bug int CanLineSqareChange();//解决长条变形bug int gameover();//判断游戏是否失败 int CanSqareDown();//若返回继续下降,返回则代表到底,不下降 int CanSqareDown2();//若返回继续下降,返回则代表到底,不下降 ,与方块相遇 int CanSqareLeft();//若返回继续左移,返回则代表到最左边,不在左移 int CanSqareLeft2();//若返回继续左移,返回则代表到最左边,不在左移,与方块相遇 int CanSqareRight();//若返回继续左移,返回则代表到最右边,不在右移 int CanSqareRight2();//若返回继续左移,返回则代表到最右边,不在右移,与方块相遇 void PaintSqare();//画方块 void Change1TO2();//到底之后数组由1变2 void ShowSqare2();//2的时候也画方块到背景 void DestroyOneLineSqare();//消行

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

正在看书,看资料,等待老师的安排

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

小组名单

学号姓名20188748黄春艳20188759张文颐20187488谢康宁

进度安排

日期安排遇到的问题

学习进度条

周/日期这周所花的时间代码行学到的知识点简介目前比较迷惑的问题3/4-3/11七小时37行1、文件建立 2、对文件加密1、if读取的文件是否必须存在,以“W”的方式写还是“a的方式”,两者性质是否相同 (这是做题中迷惑的,目前已解决)3/12-3/16九小时53行二维数组的基本定义3/18-3/22十小时96行冒泡法排序 选择法排序 二维数组的应用冒泡排序法老师在课上提的不多,所以当时做还是思考很久3/23-3/29十小时107行排序法巩固 文件储存的巩固 判断回文一些排序题的算法思路不清晰,还有流程图3/30-4/5十五个小时72行指针 数组加 * 号和不加 * 的差别4/6-4/12二十一小时116行数组名作为函数参数的用法%s的格式输出细节,输出参数问题4/13-4/19十六小时119行用字符串函数以及使用指针操作字符串的方法,掌握动态内存分配结构类型运用及动态内存分布的一些概念4/20-4/26十六小时88行定义结构,能够使用结构变量与结构数组进行熟练编程,掌握结构指针的操作预习题第三问4/27-5/2十小时0行1、如何有效地记忆与学习2、如何提问 理定义程序的多函数结构;能够使用递归函数进行编程5/3-5/10十小时21行掌握宏的基本用法;掌握编译预处理的概念PTA两个编程题还有选择题第五题5/11-5/179小时81行了解指针与函数的关系,掌握指针作为函数返回值单向链表的知识点

学习感悟

虽然题型都是以前做过的但是用的方法都不同,这周讲的概念偏多,用到题目上还是不容易,但是看书查资料还是可以理解,单向链表老师还没有姜,做题的时候懵逼,就看书问人,下节课老师讲一下应该比较会理解。

结对编程

两人都是上课听懂了,回去做作业脑袋就空白,就交流了一些概念性问题。

折线图

时间代码行数博客字数第一周39292第二周37465第三周751099第四周961230第五周1071039第六周661881第七周1162415第八周1192477第九周883089第十周01713第十一周212546第十二周812663

转载于:https://www.cnblogs.com/ZHLJ477/p/10875540.html


最新回复(0)