资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
文档供参考,可复制、编制,期待您的好评与关注! 第11章 字符串和字符串函数编程练习 1设计并测试一个函数,可以从输入读取n个字符(包括空格、制表符和换行符),把结果存储在一个数组中,这个数组的地址通过参数来传递。 #include void input(char *p, int n);int main(void) char a81; int n; puts(input the char number of your string:); scanf(%d,&n); getchar(); /滤去回车 puts(input your string:); input(a,n); puts(a); return 0;void input(char *p, int n) int i; for (i=0;in;i+) *(p+i) = getchar(); *(p+i) = 0; 2修改并测试练习1中的函数,使得可以在n个字符后,或第一个空格、制表符、换行符后停止读取输入,由上述情况中最先被满足的那个终止读取(不能用scanf()函数)。 #include #include void input(char *p, int n);int main(void) char a81; int n; puts(input the char number of your string:); scanf(%d,&n); getchar(); /滤去回车 puts(input your string:); input(a,n); puts(a); return 0;void input(char *p, int n) int i; for (i=0;in;i+) *(p+i) = getchar(); if( isspace(*(p+i) ) break; *(p+i) = 0; 3设计并测试一个函数,其功能是读取输入行里的第一个单词到数组,并丢掉该行中其他的字符。一个单词的定义是一串字符,其中不含空格、制表符和换行符。 #include #include void word(char *p);int main(void) char a81; puts(input your string:); gets(a); word(a); puts(a); return 0;void word(char *p) int begin,end; for(begin=0; isspace( *(p+begin) ) ;begin+) continue; for(end=begin; !isspace( *(p+end) ) ;end+) continue; *(p+end) = 0; for(; *(p + begin) != 0; p+) *p = *(p + begin); *p = 0; 4设计并测试一个函数,其功能是搜索由函数的第一个参数指定的字符串,在其中查找由函数的第二个参数指定的字符的第一次出现的位置。如果找到,返回指向这个字符的指针:如果没有找到,返回空字符(这种方式和strchr()函数的功能一样)。在一个使用循环语句为这个函数提供输入的完整程序中进行测试。 #include char *mystrchr(char *, char );int main(void) char str81; char ch; char *p; do puts(input range string:); gets(str); puts(input match char:); ch = getchar(); getchar(); p = mystrchr(str, ch); if ( p ) puts(Find!); puts(p); else puts(Cant find!); puts(input any char except q to go on.); gets(str); while(*str != q); puts(Quit.); return 0;char *mystrchr(char *p, char ch) char *p_save = p; if(*p = 0) return NULL; while(1) if(*p = ch) return p_save; else if(*+p = 0) return NULL; p_save = p; 5编写一个函数is_witlun()。它接受两个参数,一个是字符,另一个是字符串指针。其功能是如果字符在字符串中,就返回一个非O值(真);如果字符不在字符串中,就返回O值(假)。在一个使用循环语句为这个函数提供输入的完整程序中进行测试。 #include int is_within(char *p, char ch);int main(void) char str81; char ch; do puts(input range string:); gets(str); puts(input match char:); ch = getchar(); getchar(); if ( is_within(str, ch) ) puts(Find!); else puts(Cant find!); puts(input any char except q to go on.); ch = getchar(); getchar(); while(ch != q); puts(Quit.); return 0;int is_within(char *p, char ch) while(*p != 0) if(*p = ch) return 1; p+; return 0; 6strncpy (sl,s2,n)函数从s2复制n个字符给sl,并在必要时截断s2或为其填充额外的空字符。如果s2的长度等于或大于n,目标字符串就没有标志结束的空字符。函数返回sl。自己编写这个函数,并在一个使用循环语句为这个函数提供输入的完整程序中进行测试。 #include char *mystrncpy(char *p1, char *p2, int n);int main(void) char str181; char str281; int n; do puts(input string1:); gets(str1); puts(input string2:); gets(str2); puts(input the number of copying char:); scanf(%d,&n); getchar(); puts(After copying:); puts(mystrncpy(str1, str2, n); puts(input any char except q to go on.); gets(str1); while(*str1 != q); puts(Quit.); return 0;char *mystrncpy(char *p1, char *p2, int n) char *p=p1; while(*p1+ != 0) continue; *-p1 = *p2; n-; while(n0 & *p2 != 0) *+p1 = *+p2; n-; return p; 7编写一个函数string_in(),它接受两个字符串指针参数。如果第二个字符串被包含在第一个字符串中,函数就返回被包含的字符开始的地址。例如,string_in(hats,at)返回hats中a的地址,则,函数返回空指针。在一个使用循环语句为这个函数提供输入的完整程序中进行测试。 #include char *string_in(char *p1, char *p2);int main(void) char str181; char str221; char *p; do puts(input range string:); gets(str1); puts(input match string:); gets(str2); p = string_in(str1, str2); if ( p ) puts(Find!); puts(p); else puts(Cant find!); puts(input any char except q to go on.); gets(str1); while(*str1 != q); puts(Quit.); return 0;char *string_in(char *p1, char *p2) char *p1_save = p1, *p2_save = p2; if(*p1 = 0 | *p2 = 0) return NULL; while(1) if(*p1 = *p2) if(*+p2 = 0) return p1_save; if(*+p1 = 0) return NULL; else if(*+p1 = 0) return NULL; p1_save = p1; p2 = p2_save; 8编写一个函数,其功能是使输入字符串反序。在一个使用循环语句为这个函数提供输入的完整程序中进行测试。 #include void reverse(char *p);int main(void) char str81; do puts(input a string:); gets(str); reverse
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号