C++程式檢查字串是否為數字
在處理邏輯程式設計難題時,使用字串或字元可能非常有用。字串中的字元是1位元組資料型別,可以儲存來自ASCII值的符號。字串是字元的集合。這些符號可以是特殊字元、數字系統中的數字或英文字母表中的字母。本文將教你如何使用C++來確定字元是否為數字字元。
檢查字串是否為數字
要檢查給定的字串是否為數字,我們需要檢查其中的每個字元是否為數字。如果其中任何一個是非數字字元,則該字串為非數字,否則為數字。演算法將如下所示:
演算法
- 讀取輸入字串s
- 對於字串s中的每個字元c,執行以下操作:
- 如果c是非數字,則
- 返回false
- 結束if
- 如果c是非數字,則
- 結束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
- 如果c是非數字,則
- 結束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
結論
要檢查給定的字串是否為數字,我們需要檢查其每個字元。當所有字元都是數字時,該字串就是數字。在本文中,我們還使用了邏輯來檢查負數。當第一個字元是負號時,檢查下一個字元是否為數字。如果是,則檢查其餘部分。此程式可以擴充套件到檢查浮點數。現在它僅適用於正整數和負整數。
廣告