输入一个长度不超过30的字符串,内有数字字符和非数字字符(不包括“-”),统计其中包含了多少个非负整数,并输出这样的非负整数。
输入
一个长度不超过30的字符串,其中不包括“-”。
输出
字符串中包含的非负整数,一个一行。如果没有数据,什么都不输出。
样例输入
123*456U17960? 302tab5876
样例输出
123 456 17960 302 5876
这道小编一直错了好久,终于是做出来了:
#include<cstdio>
#include<iomanip>
#include<string>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char a[500];
cin.getline(a,500);
int i,sum = 0,z;
bool s = 0;
z = strlen(a);
for(i = 0;i < z;i++)
{
if(a[i] != '0' && a[i] != '1' && a[i] != '2' && a[i] != '3' && a[i] != '4' && a[i] != '5' && a[i] != '6' && a[i] != '7' && a[i] != '8' && a[i] != '9' && a[i - 1] >= '0' && a[i - 1] <= '9')
{
a[i] = 'a';
}
else if(a[i] != '0' && a[i] != '1' && a[i] != '2' && a[i] != '3' && a[i] != '4' && a[i] != '5' && a[i] != '6' && a[i] != '7' && a[i] != '8' && a[i] != '9')
{
a[i] = 'b';
}
}
for(i = 0;i < z;i++)
{
if(a[i] == 'a')
{
cout << endl;
s = 0;
continue;
}
else if(a[i] == 'b')
{
continue;
}
else if(a[i] != 'a' && a[i] != 'b')
{
if(a[i] == '0' && s == 0)
{
cout << "";
}
else
{
cout << a[i];
s = 1;
}
}
if(s == 0 && a[i + 1] == 'a')
{
cout << 0;
}
}
return 0;
}
创作不易,给个关注吧