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
结论
要检查给定的字符串是否为数字,我们需要检查其每个字符。当所有字符都是数字时,该字符串就是数字。在本文中,我们还使用了逻辑来检查负数。当第一个字符是负号时,检查下一个字符是否为数字。如果是,则检查其余部分。此程序可以扩展到检查浮点数。现在它仅适用于正整数和负整数。
广告