很急很急 希望有人好心人帮帮我?

找数字
题目内容:

编写程序,输入一个含数字的字符串,找出其中的整数(不考虑正负),将每个整数乘以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; 
        }
        
    }
    
    
}

img