这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/10129 |
我在这个课程的目标是 | 理解调用函数的用法。 |
这个作业在那个具体方面帮助我实现目标 | 局部变量全局变量的理解以及在代码中的运用 |
参考文献 | 《c语言程序设计》,csdn |
一.PTA实验作业
1.1 统计某类完全平方数
本题要求实现一个函数,判断任一给定整数N
是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
int IsTheNumber ( const int N );
其中N
是用户传入的参数。如果N
满足条件,则该函数必须返回1,否则返回0。
1.1.1 数据处理
数据表达:定义变量n,b,p,m全为整型;
数据处理:如下
int IsTheNumber (const int N)
定义变量n←N,b,数组p,m;
if m*m=n then
while n!=0
b←n%10
p【b】←p【b】+1
n/=10
for int i←0 to 9
if p【i】>1
返回1
end if
end if
返回0
结束
1.1.2 实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
105 500 | cnt = 6 | pta样例 |
0 600 | cnt = 7 | 随机输入数据 |
400 900 | cnt = 5 | 随机输入数据 |
1.1.4 PTA提交列表及说明
完成过程中出现了编程错误和部分错误
编程错误:有一处“;”因疏忽为加,输出格式没有弄正确。
部分错误:while语句中,n/=10写成n+=10,导致中间部分结果结果出错。
**1.2 ** 统计各位数字之和是5的数
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。
函数接口定义:
int is( int number );
void count_sum( int a, int b );
函数is
判断number
的各位数字之和是否等于5,是则返回1,否则返回0。
函数count_sum
利用函数is
统计给定区间[a
, b
]内有多少个满足上述要求(即令is
返回1)的整数,并计算这些整数的和。最后按照格式
count = 满足条件的整数个数, sum = 这些整数的和
进行输出。题目保证0<a
≤b
≤10000。
1.2.1 数据处理
数据表达:定义c,d,sum皆为整型变量;
数据处理:如下
int is (int number)
定义变量c,d,sum
while number!=0 do
c←number%10
sum←sum+c
number=number/10
if sum=5 then
返回1
else
返回0
end if
结束
void count_sum(int a,int b)
定义变量i,sum1←0,count←0
for i=a to b
if is(i)!=0 then
count←count+1
sum1←sum1+i
end if
输出count,sum1
结束
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
104 999 | 104 is counted. count = 15, sum = 3720 |
pta样例 |
54 800 | count = 15, sum = 3720 | 随机输入数据 |
10 500 | 500 is counted. count = 20, sum = 3880 |
随机输入数据 |
1.2.4 PTA提交列表及说明
完成过程中出现了编程错误和部分错误
编程错误:使用函数的调用时格式出现错误,导致程序无法进行编译。
部分错误:第二个调用函数中,for循环体中i<=b写成i<b,导致测试点三出现答案错误。
二.代码互评
代码比较1:
同学1的代码 | 我的代码 |
---|---|
代码分析:
- 形式上类似方法截然不同,while语句和循环语句结构是有所区别的。首先是数组的运用就有些许不一样,然后就是while语句和for循环语句的结构不同,体现出来的是两种不同的思路,互相去理解掌握,也是学习c语言的一个方法。
三.学习总结
3.1 学习进度条
日期 | 这周所花时间 | 代码行 | 学到的知识简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周(9.19-9.27) | 1小时左右 | 28 | c语言初步了解 | 格式的正确运用 |
第二周(9.27-10.4) | 2小时左右 | 20 | markdown格式的运用 | 怎么样让排版更加美观整齐 |
第三周(10.4-10.11) | 5小时左右 | 104 | if-else语句的运用 | 题目逻辑掌握不到位,分析问题的能力有待提高 |
第四周(10.11-10.18) | 5.5小时左右 | 92 | 循环语句的运用 | 循环体的编写以及结构的多种变化理解不透彻 |
第五周(10.18-10.25) | 8小时左右 | 90 | 调用函数的运用 | 还是很多时候循环体计算式不能写对 |
第六周(10.30-11.02) | 7小时左右 | 133 | 分支函数的运用 | 分支函数的多种形式理解不到位 |
第七周(11.4-11.8) | 5小时左右 | 105 | switch语句的运用 | switch语句的理解以及用法不到位 |
第八周(11.12-11.16) | 6小时左右 | 99 | 循环语句的进一步理解和运用 | 伪代码的正确书写 |
第九周(11.18-11.22) | 5小时左右 | 98 | 循环语句嵌套的运用 | 语句逻辑难以理清 |
第十周(11.26-11.29) | 5小时左右 | 94 | 编程打印题目的掌握 | 题目的分析以及其思路看出来有些困难 |
第十一周(12.3-12.6) | 7小时左右 | 154 | 函数调用,以及全局变量局部变量的理解 | 调用函数不能完全理解它的用法,不知道怎么去运用它,怎么用什么时候用 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
- 这是这个学期最后一次作业了,很明显地可以感觉得到这次作业的难度很大,甚至是题目都需要看很久才能看懂题目的意思。
- 这周也较为繁忙,作业完成地仓促,由于题目的难度较大,此次作业完成的时间较长。
- 也希望自己也不要畏惧这些难题吧,现在不太不会不代表以后不会,加油吧!