卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章16333本站已运行3317

C++程序检查字符串是否为数字

C++程序检查字符串是否为数字

在解决逻辑编程困难时使用字符串或字符非常有帮助。字符串中的字符是 1 字节数据类型,可以存储 ASCII 值中的符号。字符串是字符的集合。这些符号可以是特殊字符、数字系统中的数字或英文字母表中的字母。本文将教你如何使用C++判断一个字符是否为数字字符。

检查字符串是否为数字

要检查给定的字符串是否为数字,我们需要检查其中的每个字符是否为数字。如果其中任何一个字符是非数字字符,则该字符串是非数字的,否则它是数字的。算法如下所示 -

算法

  • 读取字符串 s 作为输入
  • 对于字符串 s 中的每个字符 c,执行以下操作
    • 如果 c 是非数字,则
      • 返回错误
    • 结束如果
  • 结束
  • 返回真

示例

#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
  • 如果结束
  • 对于字符串 s 中从索引 st 开始的每个字符 c,执行以下操作
    • 如果 c 是非数字,则
      • 返回错误
    • 如果结束
  • 结束
  • 返回真

示例

#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

结论

检查给定字符串是否是数字,我们需要检查它的每个字符。当所有字符都是数字时,则字符串是数字。在本文中,我们还使用逻辑来检查负数。当第一个字符是负号时,然后检查下一个字符是否是数字。如果是,则检查其余部分。该程序可以扩展以检查浮点数。现在它只适用于正整数和负整数。

卓越飞翔博客
上一篇: PHP编写规范的最佳实践:打造高效、可维护的代码库
下一篇: 使用C语言的除法和取模运算符将数字按照相反的顺序打印出来
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏