一、实验作业
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("
");
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.学习体会。
关于大程序构成和链表我感觉特别的复杂,这周的上机考试没能够做完,
还有在上机填空第二题一开始感觉全都是不会的,后面想了一想,还是
不对,随着时间的推移,课程不断变难,接下来这段时间需要好好复习,
迎接期末考。