C语言I博客作业11
一、本周教学内容&目标##
第5章 函数 要求学生掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型。
二、本周作业头##
这个作业属于那个课程|C语言程序设计II
--|:--😐--
这个作业要求在哪里|http://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10095
我在这个课程的目标是|掌握各种类型函数的定义、调用和申(声)明,动态函数,静态函数的运用与区别,理解局部变量和全局变量的异同
这个作业在那个具体方面帮助我实现目标|函数调用,定义函数与声明函数的区别,局部变量和全局变量的区别及用法
参考文献|百度,c语言程序设计,CSDN
三、本周作业##
1.PTA实验作业
1.1 题目名1
6-1 统计某类完全平方数。本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
int IsTheNumber ( const int N );
1.1.1数据处理
数据表达:定义了a,n等整形变量m通过赋值得到。
数据处理:运用了数组a[10]={0}; 定义num的长度为10,因为传入的整数的每位数可能是0~~9,而不是传入数的位数.
while (m > 0)语句遍历N的每一位上的数字,在相应的数组中自加 如果有一个数组元素等于2 说明至少有2个位上的数相同.
流程结构:
<span style="color:red">Begin</span>
int n1,n2;
for ( i←n1; i<←n2; i++ );
if ( IsTheNumber(i)
cnt++;
cnt+←;
else
return 0;
int n ←(int)sqrt(N*1.0);
int m = n * n;
if(m == N)
int a[10]
i = m % 10;
a[i]++;
else
return 0;
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
666 676 | cnt = 1 | 666为三个数字相等的数,可却不是某个数的平方数所以cnt = 1,这个N值为676=pow*(26,2). |
0 10 | cnt = 1 | 0到10之间只有10的平方数符合条件,说明个位数的平方数不可能有两个位数相等。 |
105 500 | cnt = 6 | 符合题目要求,程序正确。 |
1.1.4 PTA提交列表及说明
编译错误:对于代码还是有不注意的时候把while打错,%,/搞混淆。
部分正确:sample 全是3位数,全是4位数,我是没理解题目意思把while语句中的条件写成了m<0,这样的话题目就没有意义没考虑4位数的情况,而且m不能等于0因为等于0包括负数,cnt = 0.
1.2 题目2
6-2 统计各位数字之和是5的数,本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和
函数接口定义:
int is( int number );
void count_sum( int a, int b );
1.2.1 数据处理
数据表达:定义sum,item整形函数
数据处理:运用while语句,if语句void count_sum( int a, int b )定义。
流程结构:
<span style="color:red">Begin</span>
int sum,item;
while(number!←0)
item=number%10;
number=number/10;
sum=sum+item;
if(sum←←5)
return 1;
else
return 0;
end;
1.2.2实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
104 999 | 符合题目要求,程序正确 | |
-104 999 | 负数也符合题目要求 | |
-104 104 | 任何实数都符合程序 |
1.2.4 PTA提交列表及说明
编译错误:取余错误,item我没有取余
2.代码互评##
同学代码截图:
自己代码截图:
我们都运用数组来定义num的长度为10,因为传入的整数的每位数可能是0~~9,而不是传入数的位数,同时用while语句来判断是否是某个数的平方数,且有位数相等。
同学代码截图:
自己代码截图:
我们都用while语句中遍历N的每一位上的数字,在相应的数组中自加 如果有一个数组元素等于2 说明至少有2个位上的数相同。
3.学习总结##
3.1 学习进度条
周数/日期|这周所花的时间|代码行|学到的知识点简介|目前比较迷惑的问题
--|:--😐:--😐:--😐:--😐--
第三周(10/08-10/12)|14小时|约150行|if-else函数|定义函数,for循环
第四周(10/14-10/18)|16小时|约250行|for循环|%lf,%f,%2f的区别
第五周(10/23-10/26)|20小时|约300行|定义函数的调用。while语句|定义函数的运用
第六周(10/30-11/01)|25小时|约400行|分支结构的熟悉与理解|分支结构的运用
第七周(11/05-11/07)|30小时|约480行|switch语句,多分支结构的熟悉与理解|多分支结构的运用
第八周(11/12-11/15)|25小时|约520行|whlie do-whlie语句熟悉与理解|while do-whlie的区别和用途
第九周(11/19-11/21)|25小时|约600行|break、continue的使用 , 熟悉使用循环的嵌套|使用循环的多次嵌套
第十周(11/26-11/28)|25小时|约620行|穷举法|手写代码,分析代码
第十一周(12/03-12/06)|24小时|约500行|局部变量和全局变量的区别及用法|函数调用和声明
3.2 累积代码行和博客字数##
3.3 学习内容总结和感悟##
3.3.1 学习内容总结
3.3.2 学习体会
本周学习了函数及他的作用,怎样去确定函数还有定义函数的调用与声明,而两者的区别是函数的声明与函数的定义形式上十分相似,但是二者有着本质上的不同。声明是不开辟内存的,仅仅告诉编译器,要声明的部分存在,要预留一点空间。定义则需要开辟内存。
函数的定义
函数的定义是一个完整的函数单元:
包含函数类型、函数名、形参及形参类型、函数体等
在程序中,函数的定义只能有一次
函数首部与花括号间不加分号
函数的声明
函数声明只是对编译系统的一个说明:
函数声明是对定义的函数的返回值的类型说明,以通知系统在本函数中所调用的函数是什么类型。
不包含函数体(或形参)
调用几次该函数就应在各个主调函数中做相应声明
函数声明是一个说明语句,必须以分号。还学习了局部函数与全局函数在函数中的使用及区别,还有动态与静态函数的存储及他们的存活期。