第14讲 维数组 二维数组做函数参数
第14讲 二维数组 二维数组做函数参数
练习 为什么? 删除字符串中的某一字符x。 因为当前的字 void Delete(char a. char x)符已经是后边 int i. 挪过来的,所 for(i=0:@q[i]=o;i++) 以要再判断 下a[是不是x [if(a[i]==x) 氐for(j=:[]=”小+ la[j] alj
2 练习 ▪ 删除字符串中的某一字符x。 void Delete(char a[], char x) { 判断a串中每一个字符是不是x, 是的话删除。 } int i; for(i=0;a[i]!=‘\0’;i++) {if(a[i]==x) 删除a[i](从a[i]开始的每一个字符 向前挪动一个位置); } {for(j=i; a[j]!=‘\0’;j++) {a[j]= a[j+1]; } i--; } •为什么? •因为当前的字 符已经是后边 挪过来的,所 以要再判断一 下a[i]是不是x
练习答案 include <stdio .h> 为什么? void maino 吸收掉前一次 int i, I 输入后的结束符 char a[20],ch 回车 printf("Input a strin J. gets(a: getchar o r printf Input a character to delete: ) ch=getchar: Delete(a, ch: printf after deleting: %s\n,a)
3 练习答案 #include <stdio.h> void main() { int i,l; char a[20],ch; printf("Input a string: "); gets(a); getchar(); printf("Input a character to delete: "); ch=getchar(); Delete(a,ch); printf(“after deleting:%s\n”,a); } •为什么? •吸收掉前一次 输入后的结束符 “回车”
/函数功能:删除从地址a开始的字符 串中的某一字符x*/ void Delete( char a, char x) 或者 int i for(i=0; *(a+i) #include <stdio. h> [if((a+i== void maino (for(j=: tint j char a[20],ch, *p=a; printf("Input a string: ) gets(a) getchar(; printf("Input a character to delete: ch=getchar(; Delete(p, ch): o printfcafter deleting%s\n"a);
4 或者 /*函数功能:删除从地址a开始的字符 串中的某一字符x */ void Delete(char *a, char x) { int i; for(i=0;*(a+i)!=‘\0’;i++) {if(*(a+i)==x) /*找到x,删除*/ {for(j=i; *(a+j)!=‘\0’;j++) {*(a+j) = *(a+j+1); } i--; } } } #include <stdio.h> void main() { int i,l; char a[20],ch, *p=a; printf("Input a string: "); gets(a); getchar(); printf("Input a character to delete: "); ch=getchar(); Delete(p,ch); printf(“after deleting:%s\n”,a); }
/函数功能:将从地址a开始的字符串中除了字 符x以外,全部写到b数组中* void Delete(char a, char x, char b) int I,J 再或者 for(i=0,j=0 * #include <stdio.h> ⌒只要不是 void maind0 if((a+i)l=X I int i, char a[20], b[20], ch, *p=a printf("Input a string: ) 1 gets(a) j++:/复 getchar printf("Input a character to delete: ch=getchar(; b+j)=0:/ Delete(p, ch, b) o printf"after deleting%s\n"b);
5 再或者 /*函数功能:将从地址a开始的字符串中除了字 符x以外,全部写到b数组中 */ void Delete(char *a, char x,char *b) { int i,j; for(i=0,j=0;*(a+i)!=‘\0’;i++) { /*只要不是x,就复制过去*/ if(*(a+i)!=x) { *(b+j)=*(a+i); j++;/*复制一个字符,下标加一次*/ } } *(b+j)=‘\0’; /*末尾加上\0*/ } #include <stdio.h> void main() { int i,l; char a[20],b[20],ch,*p=a; printf("Input a string: "); gets(a); getchar(); printf("Input a character to delete: "); ch=getchar(); Delete(p,ch,b); printf(“after deleting:%s\n”,b); }