C语言博客作业--函数嵌套调用

一、实验作业(6分)

1.1 PTA题目:十进制转换二进制

  • 设计思路
i=n%2;
如果n<2   
       输出i
否则
	n=n/2
	继续调用函数
	输出i
  • 代码截图

  • 调试问题

一开始不知道要将何值设为递归出口,看网上的思路理解了。这题跟后一题是同样规律,根据这题思路后一题就很快写出来了。

1.2 学生成绩管理系统(5分)

1.2.1 画函数模块图,简要介绍函数功能。

1.2.2 截图展示你的工程文件

1.2.3 函数代码部分截图

本系统代码总行数:235

  • 头文件

  • 插入信息

  • 删除信息

  • 总分排序

1.2.4 调试结果展示

-排序

-查询

-删除

-修改

-增加

1.2.5 调试碰到问题及解决办法。

整个调试过程特别崩溃,多文件经常无法运行,碰到过例如未编译,id return ,跳出文件等问题,出现的编译器错误提示看不懂,所以在写的过程中,每个错误都需要自己一个一个文件认真找才能找到,这需要我们把自己的代码一段一段仔细阅读查错才能解决,相对于平时写代码更需要耐心和细心。

二、截图本周题目集的PTA最后排名。

三、阅读代码

  • 题目:
    猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天又将剩下的桃子吃掉了一半,又多吃了一个。以后每天将前一天剩下的桃子吃掉一半,再多吃一个。直到第十天只剩下一个桃子了,求第一天到十天每天摘了多少个桃子。要求用递归算法解答,写出完整的C程序。
  • 代码:
  • 功能:计算猴子每天吃几个桃子
  • 优点:将数学问题高效解决,本题只要归纳出递归出口和递归式就很容易解答这题,找到后一天和当天桃子数的关系,让计算机按递归式重复计算求得每一天猴子吃的桃子数即可,从中我认识到递归中调用函数不仅可以调用前一个值,也可以调用后一个值,在寻找递归关系时,找数字的前、后关系都是可行的。

四、本周学习总结(1分)

1.介绍本周学习内容

宏定义:

宏定义格式:

#define   宏名   宏定义字符串

宏定义可以定义符号常量和简单的函数:

#define  PI  3.1415926
#define  s   PI*r*r

带参数的宏定义:

#define  product (x)  x*x

!特别注意:宏定义运算时只是把定义的内容代入,不遵循数学符号运算顺序,没有优先级,为避免运算错误在宏定义时可加括号来确保运算符优先级顺序正确。

链表相关内容总结:

动态内存的分配

  • malloc函数
void* malloc ( unsigned int size )

char * a;
a=( char *)malloc( 10*( sizeof( char ) );
//申请一块10*( sizeof( char )这么大的动态内存,并返回这块内存的地址。

函数理解:在内存的动态存储区中分配一个长度为size的连续空间,其参数应该是一个无符号整数,返回值是一个系统所分配的,连续内存空间的起始地址。 若分配内存失败,则返回NULL。
!特别注意:该函数仅针对指针使用。

  • free函数
void * free( void * p)

char *a,*b;
a=( char *)malloc( 10*( sizeof( char ) );
b=a;
free(a);//释放其指向的动态内存

链表:

  • 链表的节点结构:

    1.数据域:用来存储数据。
    2.指针域:存储下一个节点元素的地址 。
  • 用链表代替数组的优点:
    1.不需要事先定义存储空间大小,可以实现动态分配内存,内存使用效率高。
    2.插入删除新结点方便,操作效率高。

其他

1.编译预处理不是C语言的一部分,不占运行时间,不要加分号
2.函数的递归调用一定要记得有结束的条件
3.在涉及一、二级指针时可以通过画图搞清二者关系
例如:

int a=10;
int *p=&a;
int **pp=&p;


此时 a=*p=**pp;

2.学习体会。

一个学期的学习,从最简单的“hello world”输出到现在的编写学生信息系统,C语言的作业难度不断提升,但同时我们在练习的过程中对代码也更加熟悉。这周的大程序对于我来说有一定难度,最困难的部分对于我来说不是代码如何编写,而是如何处理多文件之间的联系,可能是上课没有听明白,建项目,搞清头文件和主函数包含内容花了不少时间,在程序运行的时候也多次出现错误,并且错误点的提示都不太看得懂,只能反复回看代码仔细找错才行,修改了好多遍才成功运行,这相比平时少了deve c帮我们纠错,更需要耐心和细心。还有就是刚学的链表和二级指针,看书还是不太清楚,要自己打一打才会逐渐熟悉。这学期最深的感受就是C语言的内容很丰富,需要一点一滴扎实积累并实际运用才能学好,我会继续加油。
posted @ 2017-12-31 22:47  evfun  阅读(684)  评论(2编辑  收藏  举报