有一个需要注意的点:t += ('*' + '5');是错的 因为'*'和'5'是两个字符 试图将两个字符相加得到的是整数,而不是想要的'*5',所以要分别t += '*'; t += '5';

#include <cctype>
#include <iostream>
using namespace std;

int main() {
    string s, t;
    cin >> s;
    t = "";
    if(isdigit(s[0])) t += '*';
    t += s[0];
    for(int i = 1; i < s.size(); ++i) {
        if((isdigit(s[i])) && !isdigit(s[i-1]) || (isdigit(s[i-1]) && !isdigit(s[i]))) {
            t += '*';
        }
        t += s[i];
    }
    if(isdigit(s[s.size()-1])) t += '*';
    cout << t << endl;
    return 0;
}