会用string容器的话很轻松可以解决
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
int main(){
char c;
scanf("%c", &c);
getchar();
string s;
string num = "";
getline(cin,s);
if(c == 'C'){
for(int i=0; i<s.size()-1;){
int num = 1;
char c = s[i];
for(int j=i+1; j<s.size(); j++){
if(s[j] == c){
num++;
i = j;
}else{
i = j;
break;
}
}
if(num == 1){
cout << c;
}else{
cout << num << c;
}
if(i == s.size()-1){
if(num == 1){
cout << s[i];
}
}
}
}else if(c == 'D'){
for(int i=0; i<s.size(); i++){
if(s[i]>='0' && s[i]<='9'){
num += s[i];
}else{
if(num != ""){
int a = stoi(num);
for(int j=0; j<a; j++){
cout << s[i];
}
num = "";
}else{
cout << s[i];
}
}
}
}
return 0;
}