C++做題中遇到的小細節和一些算法筆記

最近做題的時候遇到不少小Bug,也收獲了很多小細節知識還有幾個小算法,寫在這里記錄分享一下。


一些小細節

  1. 求余運算% 是不能用在float和double這些非整形變量中的。

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

運行情況

可以看到,整形求商的結果還是整形,浮點型求商是浮點型,另外我用了c來排除一下小數點的影響,其實真正影響結果的是數據的類型。

3.在聲明一個變量的時候最好能夠初始化它,否則系統會隨便給他分配一個空間,這個變量的值也可能是隨機的。


183473690.jpg
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;
}
在自己的機子上測試


測試結果
測試結果

所以建議能夠對每個變量在聲明的時候進行初始化。

簡單的幾個算法和代碼

  1. 保留兩位小數
    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
    QQ截圖20160920105348.png

    這一段代碼原意是每輸入兩個數,就輸出兩數之和。
    用while()來做這個處理到文件末尾 判斷條件是cin>>a>>b
    如果理解了這個while()語句 我們還可以用for語句寫這個處理到文件末尾
    for(;cin>>a>>b;)
    不加任何判斷參數,只加一個結束循環的條件cin>>a>>b就能達到這個效果。

OK,就是這些了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • //出自51博客:www.Amanda0928.51.com 第一章 一、選擇題 1.B; (typedef ,t...
    Damongggggg閱讀 11,200評論 0 1
  • 1. 流 流:數據從一個對象到另一個對象的傳輸。 功能:標準輸入輸出+文件處理 分類含義文本流一串ASCII字符二...
    jdzhangxin閱讀 1,435評論 0 4
  • 第一章 計算機與C++編程簡介 C++程序6個階段編程 ->預處理->編譯->連接->裝入->執行1.程序在編譯器...
    rogertan30閱讀 4,095評論 0 1
  • 基本概念 1a general-purpose programming language用于創建計算機程序。藝術類...
    伍帆閱讀 1,353評論 0 1
  • 題目類型 a.C++與C差異(1-18) 1.C和C++中struct有什么區別? C沒有Protection行為...
    阿面a閱讀 7,715評論 0 10