以下面这题为例:
题目内容:
输入一个字符串,其包括数字和非数字字符,如:a123x456 17935? 098tab,将其中连续的数字作为一个整数,依次存放到数组a中,统计共有多少个整数,并输出这些数。
输入格式:
数字和非数字字符的字符串
输出格式:
1)整数个数2)分别输出整数
输入样例:
a123x456 17935? 098tab583【注意需要保留带有空格的字符串,请不要使用gets,cin,练习使用cin.getline(char *str, int maxnum)】
输出样例:
5
123
456
17935
98
583
//关键在于你要实现数字字符向整型数字的转换,因为单纯的使用字符数组存储每一个字符数字在输出的时候并不能做到输出每个独立的数据,你还是需要通过进位运算将字符变为整型数据
//还有一个关键点在于你要怎么让字符串从数字变到字母时停止操作
#include <iostream>
using namespace std;
int main()
{
char str[50]={0};
cin.getline(str,50);
int num[50]={0};
char *p=str;
int *q=num;
int length=0;
for(;*p!='\0';p++)
{
if(*p>='0'&&*p<='9')
{*q=*p-'0';
p++;
while(*p>='0'&&*p<='9')
{
*q=(*q)*10+(*p-'0');
p++;//这个地方p++刚好续上for条件中地p++ 不会出现对于数字重复数的情况
}
length++;
q++;
}
}
for(int i=0;i<length;i++)
cout<<num[i]<<" ";
}
这一部分通过指针实现。单纯的通过数组实现理论上应该也可。
注意length 和 q的++,只有在第一个字符是1-9之间,进入判断以后再进行,一开始写到if外了
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)