题目:
编写一个程序,先读入一段正文,然后删除其中的单词from,in,at,an,on,最后显示该结果文本段
#include<stdio.h> #include<math.h> #include<string.h> void replace(char a[],int len){ for(int i=0;i<len;i++) if(a[i]==','||a[i]=='.'||a[i]=='!') a[i]=' '; for(int i=0;i<len;i++) if(a[i]==' ') if(a[i+1]==' ') for(int j=i+1;j<len;j++) a[j]=a[j+1]; } int divide(char a[],char (*pattern)[10]) { //i在a中走,j,k在pattern中走 int n=(int)strlen(a); int j=0,k=0; for(int i=0;i<n;i++) { while(a[i]!=' ') pattern[j][k++]=a[i++]; j++; k=0; } return j; } void find(char (*pattern)[10],int num_letter){ char target[5][7]={{"from"},{"in"},{"at"},{"an"},{"on"}}; for(int i=0;i<num_letter;i++) for(int j=0;j<5;j++) if(strcmp(pattern[i], target[j])==0) strcpy(pattern[i], " "); } void print(char (*pattern)[10],int num_letter) { for(int i=0;i<num_letter;i++) if(strcmp(pattern[i], " ")!=0) printf("%s ",pattern[i]); } int main(){ char text[100]; gets(text); int n=(int)strlen(text); char pattern[15][10]; for(int i=0;i<15;i++) strcpy(pattern[i], " "); replace(text, n);//替换 int num_letter=divide(text, pattern);//切分 print(pattern, num_letter);//输出切分过后的字母 find(pattern, num_letter);//寻找符合题意的字母并删除 printf(" ================= "); print(pattern, num_letter); printf(" "); }