题目描述
输入一个长度不超过30的字符串,内有数字字符和非数字字符(不包括“-”),统计其中包含了多少个非负整数,并输出这样的非负整数。
输入
一个长度不超过30的字符串,其中不包括“-”。
输出
字符串中包含的非负整数,一个一行。如果没有数据,什么都不输出。
样例输入 Copy
123*456U17960? 302tab5876
样例输出 Copy
123 456 17960 302 5876
#include <bits/stdc++.h>
#define MX 30
using namespace std;
int main()
{
char s[MX+10];
cin.getline(s,MX+10);//输入带空格的字符串1
int i,n=0,f=0;
for(i=0;s[i]!='\0';i++)//字符串结束标志\0
{
if(isdigit(s[i]))//判断字符串是否为数字
{
n=n*10+(s[i]-'0');
f=1;//已经拼接为一个整数
}
else//不是数字
{
if(f==1)
{
cout<<n<<endl;
f=0;//为下一个拼接做好准备
}
n=0;
}
}
if(f == 1)//末尾是数字结尾,避免漏掉
{
cout <<n<< endl;
}
return 0;
}