/*
算法思路:
1. p1、p2一开始指向字符数组首元素
2. 如果访问到的元素不是数字,p1、p2一起向前走。如果访问到数字, p1不动,p2继续向前,直到指向不是数字的位置。
3. 此时数字范围为p1 ~ p2-1。
4. 按以上思路遍历整个数组,即可得到所有数字
*/
int main(){
int i, num, p1 = 0, p2 = 0, k = 0, nums[50];
char str[50];
cout << "请输入一串字符串:";
gets(str);
while(true){
if(str[p1] == '\0') break;
//确定数字字符范围p1 ~ p2-1
while((str[p1] < '0' || str[p1] > '9') && p1 < strlen(str)){
++p1; ++p2;
}
if(p1 == strlen(str)) break;
while(str[p2] >= '0' && str[p2] <= '9' && p2 < strlen(str))
++p2;
//截取数字存进数组
num = 0;
while(p1 < p2){
num = num * 10 + str[p1] - '0';
++p1;
}
nums[k++] = num;
}
for(i = 0; i < k; ++i)
cout << nums[i] << " ";
return 0;
}
输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整数,依次存放到数组中。
最新推荐文章于 2024-01-03 20:03:44 发布