在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
习题2-4: 编写函数squeeze(s1,s2),将字符串s1中任何与字符串s2中字符匹配的字符都删除 在写次函数之前,先看下一个更简单的函数squeeze(char s[], int c),从字符串s中删除字符c #include<stdio.h> void squeeze(char s[], int c) { int i,j; for(i=j=0; s[i]!='\0'; i++) if(s[i]!=c) s[j++]=s[i]; s[j]='\0'; } int main() { char s[]={}; int i=0; while((s[i++]=getchar())!=100) ; squeeze(s,'a'); printf("结果为:%s\n",s); system("pause"); return 0; } 执行效果如下:
函数删除了指定的字符'a'。 再看前面的习题: #include <stdio.h> void squeeze(char s1[], char s2[]) { int i,j,k; i=k=0; for(; s1[i]!='\0'; i++) { for(j=0; s2[j]!='\0' && s2[j]!=s1[i]; j++) //j=0必须在for循环里面, ; //不能定义到外面去,这是内层循环 if(s2[j]=='\0') s1[k++]=s1[i]; } s1[k]='\0'; } int main() { char s1[]={"zhiyu"}; char s2[]={"liu"}; printf("%s\n",s1); squeeze(s1,s2); printf("%s\n",s1); system("pause"); return 0; } 执行效果:
小结:循环的指示器变量初始化,外层的可以在外面初始化,内层的决不能放到外层初始化,这是一个很简单的问题,我就犯了这么低级的错误。其实放到循环体里初始化挺好的。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论