找数字
题目内容:
编写程序,输入一个含数字的字符串,找出其中的整数(不考虑正负),将每个整数乘以3输出。
输入格式:
一个字符串,长度不超过100,无空格。
输出格式:
若干整数,用空格隔开,末尾无空格。
输入样例:
beijing1001xian876shanghai1237endl
输出样例:
3003 2628 3711
找数字
题目内容:
编写程序,输入一个含数字的字符串,找出其中的整数(不考虑正负),将每个整数乘以3输出。
输入格式:
一个字符串,长度不超过100,无空格。
输出格式:
若干整数,用空格隔开,末尾无空格。
输入样例:
beijing1001xian876shanghai1237endl
输出样例:
3003 2628 3711
获取字符串后,可以遍历字符串,然后提取每一个连续的整数字符, 转为对应整数后存入数组,循环结束,将这个数组每个元素乘以3后,打印出来即可。
代码如下:
#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;
int main(void){
char str[101],numStr[11]; // str存储输入的字符串,numStr用于临时存储字符串中的连续数字字符
int i=0,j=0,k=0;
int nums[100]; // 用于存储获取的整数
char pre='\0',ch; // pre 前导字符,ch 当前字符
cin>>str;
while(str[i]!='\0'){ // 遍历字符串
ch = str[i];
if(ch>='0'&ch<='9'){ // 如果当前字符为数字字符,则存入numStr数组中
numStr[j]=ch;
j++;
}
// 如果前一个字符为数字字符,并且当前字符不为数字字符 或者当前字符为最后一个字符
// 则表示连续的数字字符结束
if((pre>='0'&&pre<='9')&&((ch<'0'||ch>'9')||(i==strlen(str)-1))){
numStr[j]='\0';
// https://blog.csdn.net/bruce_zhao1407/article/details/105263616
// https://www.runoob.com/cprogramming/c-function-atoi.html
nums[k]=atoi(numStr); // 将前一个获取到的数字字符串转为整数,存入数组nums中
k++;
j=0;
}
pre=ch; // 将当前字符存储到前导字符
i++; // 访问下一个数组元素下标
}
// 打印结果
for(i=0;i<k;i++){
if(i<(k-1)){
cout<<nums[i]*3<<" ";
}else{
cout<<nums[i]*3;
}
}
}