关于#C++#的问题,如何解决?

整数个数C++

描述

输入一串带有整数的字符串,输出其中连续的数字(一个数字也算)组成的整数有多少个?
例如,输入字符串“a123b012c”,其中连续的整数有123、12(前面多余0可以认为没有,如果连续的0或者单独一个0,也算一个整数)两个,所以输出2

输入描述

一行字符串,长度小于256

输出描述

输出其中整数的个数

用例输入 1

a123b012c
用例输出 1

2
没明白求解

#include <stdio.h>
int main()
{
char ch[260];
scanf("%s", &ch[0]);
int st = 0;
int cnt = 0;
for (int i = 0; ch[i]; i++)
{
if (st == 0 && ch[i] >= '0' && ch[i] <= '9') 
{
st = 1; cnt++;
}
else if (st == 1 && (ch[i] < '0' || ch[i] > '9')) st = 0;
}
printf("%d", cnt);
return 0;
}

好题目

#include <iostream>
#include "math.h"
#include <vector>
#include <string>
using namespace std;

int main()
{

   string s;
   cin>>s;
   int numberCount=0;  //记录总数
   string s1;  //用于判断连续数字
   for(int i=0;i<s.size();++i)
   {
        char ch=s[i];
        if(ch>='0'&&ch<='9')
        {
            s1.push_back(ch);
        }
        else
        {
            if(s1!="")
            {
               numberCount++;
               s1.clear();
            }
        }

   }
   cout<<"numberCount = "<<numberCount<<endl;



    return 0;
}

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7494670
  • 除此之外, 这篇博客: 【c++解决】数组移除支撑树问题(详细代码)中的 【c++解决】在已知的一组整数中,有这样一种数非常怪,它们不在第一个,也不在最后一个,而且刚好都比左边和右边相邻的数大。如:1 3 2 12 1 5 3 10 7 9 8 23 85 43,这些数中被标注红色字体的都是支撑数。将这些支撑数重新排列成一组数:3 12 5 10 9 85,其中被标注蓝色字体的数又是新数列中的支撑数,将蓝色数重新排列后又得到一组新数:12 10,这时再也找不到支撑数了,最后将12 10输出来。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    1.【题目描述】
  • 2.【代码】


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^