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

一、实验作业

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

设计思路

      输入一个数,除二取余法
      定义num为余数 
	  先取余 num=n%2 
	  由于二进制的是自下往上写余
	  if(n<2) 输出num;
	  否则n/=2;
	  继续递归,printf("%d",num); 

代码截图

调试问题

一开始我是用了直接取余,及自上往下写余,与答案相反,后面思索一下,使用递归返回来了。

1.2 学生成绩管理系统

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

1.2.2 截图展示你的工程文件

1.2.3 函数代码部分截图

1.2.4 调试结果展示

我的在平均分和总分那边一直是0,我始终调不出来,我想在老师让同学讲解后在在解决这个问题。

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

三、阅读代码

#include <stdio.h>//递归法对任意10个数据按降序排序
int a[20];
void f(int n)
{
	int i,t;
	if(n<10)
	{
		f(n+1);
		t=a[n];
		for(i=n+1;i<=10;i++)
			if(t>a[i])
				a[i-1]=a[i];
			else
				break;
		a[i-1]=t;
	}

}
int main()
{
	int i;
	for(i=1;i<=10;i++)
		scanf("%d",&a[i]);
	f(1);
	for(i=1;i<=10;i++)
		printf("%d ",a[i]);
	printf("\n");
	return 0;
}

它使用了递归的方法,将数值比较,f(n)是对第n个数字到第10个数字排序的函数,
递归调用f(1)到f(10),f(10)是对第10个数字进行排序,而一个数字不需排序,所以
f(10)为终点,f(i)在f(i+1)已执行的情况下,即第i+1个数字到第10个数字已排好序的
情况下进行,只需将a[i]按顺序插入第i+1个数字到第10个数字之间就行了。

四、本周学习总结

1.介绍本周学习内容

本周学习了递归这个函数结构,他可以解决一系列嵌套问题,
还学习了二级指针,二级指针的第一次指向是指向一级指针
的地址,二级指针也相当于二维数组那样用来储存些信息,
malloc()函数是用来申请空间,最后一定要释放,这样就大
大节省了空间使用,还学了大程序构成。

  • 宏定义:
    define 标识符 字符串
    使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。
    预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。
    宏定义末尾不加分号。
    宏定义可以嵌套。
  • 二级指针:
    二级指针是第一次是指向一级指针的地址。
    二级指针作为函数参数的作用:在函数外部定义一个指针p,在函数内给指针赋值,函数结束后对指针p生效,那么我们就需要二级指针。

2.学习体会。

关于大程序构成和链表我感觉特别的复杂,这周的上机考试没能够做完,
还有在上机填空第二题一开始感觉全都是不会的,后面想了一想,还是
不对,随着时间的推移,课程不断变难,接下来这段时间需要好好复习,
迎接期末考。

posted on 2018-01-01 21:21  ifcan  阅读(801)  评论(1编辑  收藏  举报

导航