最近做題的時候遇到不少小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,就是這些了。