我这个方法用到C和C++,是一种丰富的解法,其中测试点2没过原因是因为设立的内存卡边界,代码处已改正确。前缀不是都用的上的。
#include <stdio.h>
#include <math.h>
#define M 100
//printf("uuu\n")
#pragma warning(disable:4996)
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
#include <iostream>
#include <string>
using namespace std;
int main() {
int n;
cin >> n;
char arr[M*2][M*2];
string str;
getchar();
for (int i = 0; i < n; i++) {
fgets(arr[i], M*2, stdin);
strtok(arr[i], "\n");
str = arr[i];
int u = str.find(',');
u -= 3;
char* p = arr[i]+u;
int j=strncmp(p, "ong", 3);
int uu = str.find('.');
uu -= 3;
char* pp = arr[i]+uu;
int j2 = strncmp(pp, "ong", 3);
if ((j == 0) && (j2 == 0)) {
int y = str.rfind(' ');
int z = str.rfind(' ', y-1);
int o = str.rfind(' ', z-1);
if (o < u + 3) {
o = u+3;
}
arr[i][o+1] = '\0';
strcat(arr[i], "qiao ben zhong.");
cout << arr[i] << endl;
}
else {
cout << "Skipped"<<endl;
}
}
return 0;
}