C++做题中遇到的小细节和一些算法笔记

最近做题的时候遇到不少小Bug,也收获了很多小细节知识还有几个小算法,写在这里记录分享一下。


一些小细节

  1. 求余运算% 是不能用在float和double这些非整形变量中的。

  2. 1/2的结果是0 但是 1.0/2的结果是0.5

C++做题中遇到的小细节和一些算法笔记_第1张图片
运行情况

可以看到,整形求商的结果还是整形,浮点型求商是浮点型,另外我用了c来排除一下小数点的影响,其实真正影响结果的是数据的类型。

3.在声明一个变量的时候最好能够初始化它,否则系统会随便给他分配一个空间,这个变量的值也可能是随机的。


183473690.jpg

#include
using namespace std;
int main(){
int a;
float b;
double c;
cout< cout< cout< return 0;
}
在自己的机子上测试


测试结果

所以建议能够对每个变量在声明的时候进行初始化。

简单的几个算法和代码

  1. 保留两位小数
    C的写法 printf(%.nf); n是保留的小数个数
    C++的写法目前用这一种
    (1)添加头文件
    (2)在输出的时候加上setprecision(n)函数 其中n是保留的小数个数
    例:int a = 3.14159; cout<
    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,就是这些了。

你可能感兴趣的:(C++做题中遇到的小细节和一些算法笔记)