C++中数组的问题

#include<iostream>
using namespace std;
int main()
{
char a[30];
int b[30];
int begin=0,k=0,n=0;
cout<<"输入一个含有数字和字母的字符串"<<endl;
cin.getline(a,30);
for(int i=begin;a[i];i++)
if(a[i]>='0' && a[i]<='9'){
int j=i;
while(a[j]>='0' && a[j]<='9'){
n=n*10+(a[j]-48);
j++;}
b[k]=n;
cout<<b[k]<<" ";
k++;
n=0;
begin=j;
}
return 0;
}
怎样才能输出例如输入“ dsfkjsd34 23 454kjj “然后输出b[0]=34 b[1]=23 b[2]=454

你的循环控制除了问题,因为你输出34后又从4开始了,你需要在读入一个字符后跳过,所以没读过一个在j++之后添加i++,就不会有重复读取的问题了,改过后的代码如下:

#include<iostream>

#include<cstring>

using namespace std;

int main()

{

char a[30];

int b[30];

int begin=0,k=0,n=0;

cout<<"输入一个含有数字和字母的字符串"<<endl;

cin.getline(a,30);

for(int i=begin;i<strlen(a);i++)

if(a[i]>='0' && a[i]<='9'){

int j=i;

while(a[j]>='0' && a[j]<='9'){

n=n*10+(a[j]-48);

j++;

i++;}

b[k]=n;

cout<<b[k]<<" ";

k++;

n=0;

begin=j;

}

return 0;

}

程序结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-20
保留数字以空格区分,代入数组?
相似回答
大家正在搜