C++程式檢查字串是否為數字


在處理邏輯程式設計難題時,使用字串或字元可能非常有用。字串中的字元是1位元組資料型別,可以儲存來自ASCII值的符號。字串是字元的集合。這些符號可以是特殊字元、數字系統中的數字或英文字母表中的字母。本文將教你如何使用C++來確定字元是否為數字字元。

檢查字串是否為數字

要檢查給定的字串是否為數字,我們需要檢查其中的每個字元是否為數字。如果其中任何一個是非數字字元,則該字串為非數字,否則為數字。演算法將如下所示:

演算法

  • 讀取輸入字串s
  • 對於字串s中的每個字元c,執行以下操作:
    • 如果c是非數字,則
      • 返回false
    • 結束if
  • 結束for
  • 返回true

示例

#include <iostream> #include <ctype.h> using namespace std; string solve( string s ) { for( int i = 0; i < s.length(); i++ ) { if( !isdigit( s[i] )) { return "False"; } } return "True"; } int main() { cout << "Is "589" a numeric string? : " << solve( "589" ) << endl; cout << "Is "69a" a numeric string? : " << solve( "69a" ) << endl; cout << "Is "2979624" a numeric string? : " << solve( "2979624" ) << endl; cout << "Is "25\%4A" a numeric string? : " << solve( "25\%4A" ) << endl; cout << "Is "889" a numeric string? : " << solve( "889" ) << endl; }

輸出

Is "589" a numeric string? : True
Is "69a" a numeric string? : False
Is "2979624" a numeric string? : True
Is "25%4A" a numeric string? : False
Is "889" a numeric string? : True

此解決方案可以檢查給定的字串是否為數字,但當輸入為負數時,它不會返回true。對於負數,需要進行特殊檢查。

檢查字串是否為帶負號或正號的數字

檢查給定的字串是否為數字,我們只需檢查每個字元是否為數字即可。但是對於負數,第一個字元必須是“-”號。因此,檢查第一個字元是否為負數,然後下一個字元是否為數字,如果是,則檢查其餘字元是否為數字。演算法將如下所示:

演算法

  • 讀取輸入字串s
  • 如果s的第一個字元是“-”並且下一個字元是數字,則
    • st = 1
  • 否則
    • st = 0
  • 結束if
  • 對於從索引st開始的字串s中的每個字元c,執行以下操作:
    • 如果c是非數字,則
      • 返回false
    • 結束if
  • 結束for
  • 返回true

示例

#include <iostream> #include <ctype.h> using namespace std; string solve( string s ) { int start; if( s[0] == '-' && isdigit( s[1] ) ) { start = 1; } else { start = 0; } for( int i = start; i < s.length(); i++ ) { if( !isdigit( s[i] )) { return "False"; } } return "True"; } int main() { cout << "Is "687" a numeric string? : " << solve( "687" ) << endl; cout << "Is "256l" a numeric string? : " << solve( "256l" ) << endl; cout << "Is "-5845" a numeric string? : " << solve( "-5845" ) << endl; cout << "Is "-89A2" a numeric string? : " << solve( "-89A2" ) << endl; cout << "Is "-256" a numeric string? : " << solve( "-256" ) << endl; }

輸出

Is "687" a numeric string? : True
Is "256l" a numeric string? : False
Is "-5845" a numeric string? : True
Is "-89A2" a numeric string? : False
Is "-256" a numeric string? : True

結論

要檢查給定的字串是否為數字,我們需要檢查其每個字元。當所有字元都是數字時,該字串就是數字。在本文中,我們還使用了邏輯來檢查負數。當第一個字元是負號時,檢查下一個字元是否為數字。如果是,則檢查其餘部分。此程式可以擴充套件到檢查浮點數。現在它僅適用於正整數和負整數。

更新於: 2022年10月19日

11K+ 次檢視

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告