最近做题的时候遇到不少小Bug,也收获了很多小细节知识还有几个小算法,写在这里记录分享一下。
一些小细节
-
求余运算% 是不能用在float和double这些非整形变量中的。
-
1/2的结果是0 但是 1.0/2的结果是0.5
可以看到,整形求商的结果还是整形,浮点型求商是浮点型,另外我用了c来排除一下小数点的影响,其实真正影响结果的是数据的类型。
3.在声明一个变量的时候最好能够初始化它,否则系统会随便给他分配一个空间,这个变量的值也可能是随机的。
183473690.jpg
#include <iostream>
using namespace std;
int main(){
int a;
float b;
double c;
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
return 0;
}
在自己的机子上测试
测试结果
所以建议能够对每个变量在声明的时候进行初始化。
简单的几个算法和代码
- 保留两位小数
C的写法 printf(%.nf); n是保留的小数个数
C++的写法目前用这一种
(1)添加<iomanip>头文件
(2)在输出的时候加上setprecision(n)函数 其中n是保留的小数个数
例:int a = 3.14159; cout<<setprecision(2)<<fixed<<a<<endl;
2.提取整数的每一位——求余运算
假如有一个数字12345 要提取每一位数字 有如下思路
12345%10 = 5; 得到最后一位 然后想办法找倒数第二位
(12345/10)%10 = 4;
(12345/100)%10 = 3; //以此类推 得到每一位
3.处理到文件末尾是什么鬼
相信很多刚开始做题的人会有这个疑问。OK 来解答一下
在A+B问题中 有一段示例代码,就是处理到文件末尾的关键。
QQ截图20160920105348.png
这一段代码原意是每输入两个数,就输出两数之和。
用while()来做这个处理到文件末尾 判断条件是cin>>a>>b
如果理解了这个while()语句 我们还可以用for语句写这个处理到文件末尾
for(;cin>>a>>b;)
不加任何判断参数,只加一个结束循环的条件cin>>a>>b就能达到这个效果。
OK,就是这些了。
网友评论