第十二周编程总结
本次作业所属课程 |
C语言程序设计|| |
本次作业要求 |
|
我在这个课程的目标是 |
学会自主编程 |
本次学习在哪些具体方面帮组我实现目标 |
利用单向链表解决问题 |
参考文献 |
C primer plus第六版 |
一、基础题
题目一:计算最长的字符串长度
1)实验代码
#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; } int max_len( char *s[], int n ) { int max=0; int i,j; for(i=0;i<n;i++) { if(strlen(s[max])<strlen(s[i])) { max=i; } } return strlen(s[max]); }
2)设计思路
3)本题调试过程中遇到的问题及解决方案
这题本来是没什么问题的,主要是那个字符串长度函数的使用方法忘记了
4)运行结果截图
题目二:统计专业人数
1)实验代码
#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; } int countcs( struct ListNode *head ) { int num = 0; struct ListNode *p = head; while(p != NULL) { if(p->code[1] == '0' && p->code[2] == '2') num++; p = p->next; } return num; }
2)设计思路
3)本题调试过程中遇到的问题及解决方案
这个题目在循环里忘记让p指向他下一个节点了,然后答案错误,然后老师上课讲了以后回来就改了
4)运行结果截图
题目三:删除单链表偶数节点
1)实验代码
#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; } struct ListNode *createlist() { int data; struct ListNode *head,*p,*tail; int size=sizeof(struct ListNode); head=p=NULL; scanf("%d",&data); while(data!=-1) { p=(struct ListNode*)malloc(size); p->data=data; p->next=NULL; if(head==NULL) { head=p; } else { tail->next=p; } tail=p; scanf("%d",&data); } return head; } struct ListNode *deleteeven( struct ListNode *head ) { struct ListNode *p1,*p2; while(head!=NULL&&head->data%2==0) { p2=head; head=head->next; free(p2); } if(head==NULL) return NULL; p1=head; p2=head-> next; while(p2!=NULL) { if(p2->data%2==0) { p1->next=p2->next; free(p2); } else { p1=p2; } p2=p1->next; } return head; }
2))设计思路
3)本题调试过程中遇到的问题及解决方案
这一题有点难,借鉴了一下别人的思路
详细思路:https://www.cnblogs.com/jk-liulei/p/10877438.html
4)运行结果截图
二、挑战题
不会写
三、预习题
所在小组想要开发的项目的名称和目标:推箱子;游戏能够正常的运行
项目主体功能的描述:通过A、W、S、D来控制小人的移动来达到将箱子推到指定地方的游戏
现阶段已做的准备工作:刚刚确定我们要做的游戏名字
小组成员名单和进度安排:王玮涵,贺勇,罗宇梁‘;13周目标:确定小组的游戏名并共同研读《c语言课程设计与游戏开发实践教程》
四、累积博客字数及代码行数
五、学习进度条
时间 |
这周所花时间 |
代码行数 |
学到的知识简介 |
目前比较迷惑的问题 |
第一周 |
5小时 |
80 |
初步了解数组 |
数组的引用 |
第二周 |
6小时 |
200 |
指针的了解 |
完全没听懂老师上课在讲什么,继续努力 |
第三周 |
7小时 |
200 |
文件与数组的使用 |
没看到代码运行后文件的内容发生改变 |
第四周 |
9小时 |
120 |
冒泡法,选择排序法 |
冒泡法不会 |
第五周 |
9小时 |
120+ |
字符型数组 |
把代码改成文件格式 |
第六周 |
4小时 |
130左右 |
指针 |
指针的调用 |
第七周 |
6小时+ |
200 |
指针与数组 |
指针与数组的连续有点模糊 |
第八周 |
10小时 |
200+ |
一些新的函数 |
结构那块有点迷 |
第九周 |
4小时 |
120 |
自己定义结构变量 |
如何灵活的使用结构解决问题 |
第十周 |
2小时 |
0 |
无 |
无 |
第十一周 |
6小时 |
60 |
递归 |
递归不怎么会 |
第十二周 |
4小时 |
130 |
单向链表 |
熟练使用链表 |
总结:这周的作业相比于上周的简直人性化不知道多少了