前面写了四篇文章,分享了我做少儿编程项目的一些知识点。对于我个人来说,是编程技术在不同行业不同场景的运用。同时也让我也接触和了解到少儿编程领域,算是积累一些该领域的经验吧;也让我再次复习了C++语言的知识,加深了C++语言的理解和领域内的应用。
今天,还有其他的一些零碎知识点要汇总下。既然遇到过这样的知识点,那就记录下,以便某一天需要之时,可以查阅。
本篇文章有以下四个知识点要分享
知识点一:头文件引入
知识点二:四舍五入保留小数位数
知识点三:雷劈数
知识点四:拆分数字各位位数
知识点一:头文件引入
程序员都知道,在编程过程中都会调用系统的函数,而这些函数是需要引入其对应的头文件的。
学或用C++的时候,我依稀记得要引入一个iostream.h的头文件。然后在这次使用时,我直接#include
没有想到,在DevC++环境中,竟然编译报错了。(这里说下DevC++环境,其实质就是GCC编译器环境,对于该编译器是有些古老了,现在我们都是用LLVM编译器)
后来经过查证,在DevC++开发环境中,正确的写法是:
include
同时,在这过程中,我接触一个万能头文件, 通过深入学习,确实这个头文件是万能的,在记不起其他头文件,就可以使用它,
include //万能头文件
知识点二:四舍五入保留小数位数
对于这个知识点,在C语言中,我们一般是使用百分号(%)实现。例如
double number = 123.4567;
printf(“%.2f\n”, number); // 输出: 123.45
而在C++中,还有一种写法,即使用setprecision函数。具体如下:
include
include
using namespace std;
int main() {
double number = 3.14159;
cout << fixed << setprecision(2) << number <<endl; // 输出: 3.14
return 0;
}
这里要引入
include 头文件
还要写成
cout<< fixed << setprecision(2)
相比较而言,前面的printf(“%.2f\n”, number)方式要简单些。但不管怎么样,在这个项目中接触到了这个知识点,也就记录下来。
知识点三:雷劈数
初看到这个概念,不知道什么意思。经过了解才知道,满足下面公式的就是雷劈数
(ab + cd) * (ab + cd) = abcd
简而言之,两数之和的平方等于原数。具体例子为
(30 + 25) * (30 + 25) = 3025
这个知识点比较简单,了解并记住就可以。
知识点四:拆分数字各位位数
简单来说,拆分一个数中的个位、十位、百位,千位等位数。方法有很多,这里介绍两种。
第一种方式:对个,十,百,千,万位直接拆分.
具体拆分如下:
假设 n为一个整数
w = n / 10000
q = n / 1000 % 10
b = n / 100 % 10
s = n / 10 % 10
g = n % 10
实际例子,见下图
第二种方式:短除法
在实践过程中就发现,方法一存在一个弊端,位数是固定,不能随着数字位数的不同而变化。例如 321只有三位,最大也是到百位;而54321就是5位,就有万位数,使用方法一就不好统一处理了。
而短除法可以根据数字的位数灵活变化。下面详细讲。
在数学中,我们的除法列式如下:
每一次除以10,可以得到商和余数,其中余数就是各个位数的数字。这里有一点差异就是,位数的次序是倒序的,即个十百千位依次排序。
根据上面的式子,我们可以编写如下的代码,并右图的结果。
利用短除法,我们还可以做一些变形题。
求一个数的各位数之和。
编写代码如下:
include
using namespace std;
int main() {
int n;
cin>>n;
int s = 0;
while( n != 0) {
s = s + n % 10;
n = n /10;
}
cout<<" 总和为: "<<s<<endl;
return 0;
}
求一个数的倒数。
例如 648291, 倒过来就是192846
代码如下:
include
using namespace std;
int main() {
int n;
cin>>n;
int d = 0;
while( n != 0) {
d = d * 10 + n % 10;
n = n /10;
}
cout<<" 倒数为: "<<d<<endl;
return 0;
}
短除法的应用还是蛮多的,这里只列举几个示例。
讲完了几个知识点,最后在对这个项目进行总结下。
结项与总结
这个项目,兼职做了四天。在这四天里,接触了一个新领域,并且是用C++语言应用于新领域,算是已有的知识在新的领域里的应用。
在接触这个项目过程中,深刻的体会到:虽然使用的是已有知识(C++),然而因场景不同,使用技巧不同,导致的结果也是不同的。最浅显的道理就是:用上班工作的编程思维去处理少儿编程的思维,是行不通的。在新的领域有新的规则,需要学习和适用新的规则。
说到规则,让我想起几个底层道理:
1.对复杂事物或问题的处理方式?
一般地,我们需要把复杂问题简单化。具体来说,就是拆分复杂问题,把问题分解成许多部分,然后分别验证每一部分的正确性。当所有的部分验证通过时,也就是整体验证通过,即复杂问题解决了。
这个问题就像哲学中的整体与局部的关系。面对一个比较复杂的整体,先分解成不同的局部,对每一个局部进行正确性验证,当所有局部都验证通过时,整体也没有问题了。
2.对称图形的处理方式?
在文章二中,遇到过好几个对称图形。对于对称图形,我们先处理一半的,然后再看情况处理另一半的。就像打印菱形图形一样,先打印上面部分的正三角形,然后在处理另一部分–倒三角形。这样一个复杂的图形就处理好啦。
以上就是我的项目总结和心得。
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/416810.html