一道C++编程题,请求解答!!!!

输入一个字符串,内有数字和非数字字符,如:Abc780?xp123cc90mn将其中连续的数字作为一个整数,一次存放到一个数组a中,如780放入a[0],123放入a[1... 输入一个字符串,内有数字和非数字字符,如:
Abc780?xp123cc90mn
将其中连续的数字作为一个整数,一次存放到一个数组a中,如780放入a[0],123放入a[1],90放入a[2]。统计其共有多少个整数,并输出这些数。
展开
 我来答
hughxing
2010-12-04 · TA获得超过4358个赞
知道小有建树答主
回答量:495
采纳率:0%
帮助的人:0
展开全部
这个其实很简单,过滤非数字字符,把数字字符提取出来即可。

我以前写过一些程序有此类功能,你去看一下我的空间中的那篇文章,那里讲的其实就涉及到了这部分功能。具体实现我没有时间给你弄。明天还得上班,要睡了。如果实现不懂,那么周末可以发消息给我。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
寄情北国
2010-12-04 · 超过18用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:0
展开全部
#include<iostream>
#include<vector>
#include<cmath>
#include<sstream>
using namespace std;

void main()
{
vector<char>v;
string s;
cout<<"请输入一个中间无空格的字符串:";
cin>>s;
istringstream sin(s);
for(char c;sin>>c;)
v.push_back(c);
vector<int>num;
for(int i=0;i<v.size();i++)
{
if((v[i]>='0')&&(v[i]<='9'))
{
if(i==v.size()-1)
{
num.push_back(v[i]-'0');
continue;
}
for(int j=i+1;(v[j]>='0')&&(v[j]<='9');j++);
int sum=0;
int len=j-i;
i=j;
for(int k=0;k<len;k++)
{
sum+=(v[j-1]-'0')*pow(10,k);
j--;
}
num.push_back(sum);
}//if
}//for
cout<<"该串共含有"<<num.size()<<"个整数 ";
for(int e=0;e<num.size();e++)
cout<<num[e]<<' ';
cout<<endl;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zxpointer
2010-12-04 · TA获得超过4100个赞
知道大有可为答主
回答量:1868
采纳率:33%
帮助的人:1202万
展开全部
#include<iostream>
using namespace std;
int main()
{
char str[100],*pstr;
int a[10],num,flag,flagpast,i,n;
num = flag = flagpast = i = n = 0;
pstr = str;
cout<<"please input a string:";
cin>>str;
while(*pstr)
{
if(flag = (*pstr >= '0' && *pstr <= '9')?1:0)
{
flagpast = flag;
num = num*10 + (*pstr - 48);
}
if((flag == 0) && (flagpast == 1))
{
a[i++] = num;
num = flag = flagpast = 0;
continue;
}
pstr++;
}
n = i;
for(i = 0; i <n ; i++)
{
cout<<a[i];
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式