C语言程序设计姜恒远著.ppt

若从键盘输入Computer ? (“?”表示Enter键),则将输入的字符串Computer送入字符数组sarray中。gets函数将返回字符数组sarray的起始地址。 7.4.6 字符串处理例 int palindrome(char *str, int head,int tail)/*递归 */ { if(head=tail) return 1; if(str[head]!=str[tail]) return 0; else return palindrome(str,head+1,tail-1); } 7.4.6 字符串处理例 例7.30 编写函数int fun(char *a, char *b),统计子串b在母串a中出现的次数并返回统计值。如母串为“asd asasdfg asd as zx67 asd mklo”,子串为“as”,则函数应返回6。主函数中接收键盘输入的母串和子串,输出统计结果。 母串用i遍历,子串用j遍历,对于每个a[i],查看其后续几个字符是否组成子串,若是则计数加1,否则i移至下一位置。 “for(j=i,k=0; a[j]==b[k]kstrlen(b);j++,k++);” i为当前母串指向的字符下标 j从i开始,比较母串中与子串中的字符,若a[i](包括a[i])后续有strlen(b)个字符与子串中对应的字符相等,则表示a[i]开头即是子串开始,否则a[i]开始则不是子串,i移至下一位置继续比较。 7.4.6 字符串处理例 int fun(char *a, char *b) { int i,j,k, count=0; for(i=0;a[i]!= ‘\0’;i++){ /* 母串用i遍历 */ for(j=i,k=0; a[j]==b[k]kstrlen(b);j++,k++); /* 内循环结束 */ if(b[k]== ‘\0’) /* 表示跳出循环时子串已经遍历结束 */ count++; } return count; } 7.4.6 字符串处理例 *例7.31 编写函数int replace_str(char *s,char *t,char *g),将母串s中出现的第一个子串t替换成子串g。 如对于母串s 为 “abcdefaaaghi”,子串t为 “aaa”, 替换子串g为 “bb”,则替换后的母串s为 “abcdefbbghi”。 7.4.6 字符串处理例 *例7.32 编写函数实现整数、浮点数与字符串的相互转换。 由于输入输出数据都是以字符串方式存放在I/O流中,所以输入输出函数一般都要进行整数、浮点数与字符串的相互转换。 如输入数字串“-123”, 则把“-123”转换成机器内部表示的整数存储; 输入数字符串“123.456”, 则把“123.456”转换成机器内部表示的浮点数存储,输出则相反。 *7.5指针数组及应用 7.5.1指针数组 7.5.2指向指针变量的指针变量 7.5.3带形式参数的main函数 7.5.1指针数组 指针数组,即一个数组中每一个数组元素都存放同基类型的地址。 指针数组声明的一般形式为: 类型标识 *数组名[整常量表达式] 如: int *p[4]; p为一个有4个数组元素的数组,每个数组元素都是int型指针,即都可以存放基类型为int型变量的存储空间的地址。 注意与int (*point)[4]的区别 7.5.1指针数组 若图书馆有若干本书,希望把书名放在一个数组中,然后对这些书目进行排序和查询。 用二维字符数组存放与使用指针数组的存储区别 7.5.1指针数组 使用二维字符数组存放,排序时需要使用strcpy函数移动字符串(如例7.25) 用指针数组存放,排序时字符串可以不动,只需改变指针数组内元素的值即可 7.5.1指针数组 例7.33 用选择法对数组name中的“字符串”升序排序。 void sort(char **name,int n) { char *temp; int i,j,k; for(i=0;in-1;i++){ k=i; for(j=i+1;jn;j++) if(strcmp(name[k],name[j])0) k=j; if(k!=i) { temp=name[i]; name[i]=name[k];

文档评论(0)

1亿VIP精品文档

相关文档