二、本周作业头
这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9825 |
我在这个课程的目标是 | 较为熟练的掌握对函数的定义与生成乘方表与阶乘表,同时学会使用思维导图。 |
这个作业在那个具体方面帮助我实现目标 | PTA有关生成乘方表与阶乘表的函数题,MindManager软件的应用。 |
参考文献 | 百度百科,C语言程序设计,思维导图 |
1.PTA实验作业
1.1判断一个整数的各位数字平方之和能否被5整除
1.1.1数据处理
数据表达:用了a,h,n,i,result1;h表示该整数的各位数;a表示把n的值赋给a;i表示循环起点,n表示循环终点;result1表示整数各位数的平方和。
数据处理:1.条件表达式:if(result1%5==0) 2.逻辑表达式:for(;n>0;n/=10),3.算术表达式:result1+=h*h;取余h=n%10;
使用了for循环语句与if-else语句。
函数参数:主调函数:#include <stdio.h>,#include <math.h> 被调函数:int fun( int n ) 类型int型;实参:fun(m),形参:(int n)。
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
m=1 | The result is0 | 1的平方不能被五整除 |
m=2 | The result is1 | 5的平方恰好能被五整除 |
m=34 | The result is1 | 3和4的平方和能被五整除 |
m=145 | The result is0 | 1和4和5的平方和不能被五整除 |
1.1.4 PTA提交列表及说明
1.编译错误:include单词手快打错了。
2.编译错误:第四行的分号忘打了。
3.编译错误:使用pow函数忘了编写#include<math.h>。
4.编译错误:放弃pow函数,第五行忘了打分号。
5.编译错误:result%5少打个=导致是赋值的意思。
6.编译错误:没检查出来,同第六条一样。
7.编译错误:最后的大括号忘打了。
1.2使用函数验证哥德巴赫猜想
1.2.1数据处理
第一个函数
数据表达:用了i,result, p;i表示循环起点;result表示结果,result 0表示不是素数。p表示输入的整数。类型:int型
数据处理:1.条件表达式:if(p<2),if(p%i==0)。2.逻辑表达式:for(i=2;i<=sqrt(p);i++) 3.算术表达式:p%i==0。
流程结构:if-else语句,for循环语句。
函数参数:主调函数:#include <stdio.h>,#include <math.h>。被调函数:int prime( int p ) 。 类型:int型;
形参:prime( int p );实参:prime(m)
第二个函数
数据表达:用了n,p,q;p表示最小素数,q表示输入整数减去最小素数;n表示输入整数。类型:int型。
数据处理:1.逻辑表达式:for(;p<= n;p=p+2) ;2.条件表达式:if (prime(p)&&prime(q)) ;3.赋值表达式:int p = 3。
函数参数:主调函数::#include <stdio.h>,#include <math.h>。 被调函数:void Goldbach( int n)。类型:int型。
形参:Goldbach( int n); 实参:Goldbach(i)。
1.2.2实验代码截图
第一个函数:
第二个函数:
1.2.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
m=6,n=6 | 无,6=3+3 | 6不小于6,但6也不是素数。 |
m=4,n=7 | 无,6=3+3 | 4小于6,所以已经跳出循环。 |
m=89,n=100 | 89is a prime number;90=7+83, 92=3+89, 94=5+89, 96=7+89, 98=19+79,100=3+97 | 89大于6且为素数,而后的就是素数分割。 |
1.2.4 PTA提交列表及说明
1.部分正确:i<=sqrt(p)该条件没有取等与号
2.部分正确:i<=sqrt(p)该条件没有取等于号
3.编译错误:没有编写result=1;
4.答案错误:第一个函数没有判断小于2的情况。
5.答案错误:没有看清题意,而把最小素数定为偶素数2;
6.答案错误:把p=p+2编写为p=p+1;
7.答案错误:把return result;该语句放在for循环内导致错误。
8.编译错误:在第二个函数中少打了个大括号
9.编译错误:if(p%i==0)该语句中少打了等于号。
10.答案错误:for(i=2;i<=sqrt(p);i++)该语句中把sqrt单词达成sprt。
2.代码互评
自己代码 | 同学代码(刘帅同学) |
---|---|
不同点:1.我是通过使用for循环而解答该题,而刘帅同学是通过使用while语句来解答该题
2.相比我的代码刘帅同学的显得更加的精简。
3.刘帅同学的while中n不等于0表示当n等于0时跳出循环,而我的也是表达这样的意思;只是书写方法不同
自己代码 | 同学代码(高中同学) |
---|---|
不同点:1.这份代码是我问我以前同学发给我的代码,他的代码也运用了while语句而我只是单纯的for循环。
2.他这份代码思路比较清晰,而且标明了代码的所表达的意思。他运用了pow函数而我简单的运用了乘法原理。
3.相比他的代码,我的代码比较简易;但他的代码更加让人能看懂。
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 |
---|---|---|---|
10/19-10/26 | 15h | 334行 | 如何编写自定义函数及更加熟练掌握for循环 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
经过一周的学习,又学到了许多新的知识,从这一周开始我接触到了自定义函数;自我感觉这才是真正开始,而一开始学习自定义函数就来个哥德巴赫猜想;使我懵的一批;
从开始的一点思路都没有到通过自我思考有了一点点思路。但最终通过百度百科找到了突破口;在哥德巴赫猜想这个题中,加强了我对for循环以及if-else语句的了解;同时也
让了解到了编写程序不是看看书就能编写出来的;需通过自己不断的试验;有句话说得好“实践是检验真理唯一标准”;需要花费自己大量时间去琢磨,去认真的体会代码的含 义。
同时学习到了在自定义函数的时候,要注意被调函数与主调函数之间的关系。而且在本周的学习当中又接触到了一个新的知识点,那就是思维导图;个人认为思维导图可以很好
地帮助我们去总结知识点,同时使我们的知识构架越来越清晰。能有效的提高我们的总结能力。