需要操作字符串的这类题一定不要操作字符串然后打印字符串,方法一定是不用修改字符串,直接打印部分字符串+遇到要修改的地方再加上题目要求的字符串打印
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
int n,i,j,flag = 0,k;
scanf("%d",&n);
getchar();
char Poetry[n+1][101];
for(i=0;i<n;i++){
gets(Poetry[i]);
}
for(i=0;i<n;i++){
for(j=0;j<strlen(Poetry[i]);j++){
if(Poetry[i][j]==','){
if(Poetry[i][j-1]!='g'||Poetry[i][j-2]!='n'||Poetry[i][j-3]!='o'){ //检查前半句是否是ong结尾,若果不是,直接跳出当前循环
flag = 1;
break;
}
}
if(Poetry[i][j]=='.'){
if(Poetry[i][j-1]!='g'||Poetry[i][j-2]!='n'||Poetry[i][j-3]!='o'){ // 代表后半句不是ong结尾
flag = 1; //flag 作为标志位,标志是否能被槽改 ,1代表不能。
break;
}else{ //代表可以更换
int kon = 0;
int l;
for(l=strlen(Poetry[i])-1;kon<3;l--){ //找到倒数第三个空格的位置。
if(Poetry[i][l]==' '){
kon++;
}
}
for(k=0;k<=l+1;k++){ //先打印倒数第三个空格之前的所有字符
printf("%c",Poetry[i][k]);
}
printf("qiao ben zhong.\n"); //进行曹改,这类题一定不要操作字符串然后打印字符串,方法一定是不用修改字符串,进行部分输出字符串。
break;
}
}
}
if(flag==1){
printf("Skipped\n");
flag = 0;
}
}
}