第六章编程练习第一题
程序员文章站
2024-02-29 17:22:28
...
题目:请编写一个函数,它在一个字符串中进行搜索,查找所有在一个给定字符串集合中出现的字符。这个函数的原型应该如下:
char *find_char(char *source, char *chars);
它的基本功能是:
1.查找source字符串中匹配chars字符串中任何字符的第一个字符,然后函数返回一个指向source中第一个匹配所找到的位置的指针。
2.如果scource中的所有字符均布匹配chars中的任何字符,函数就返回一个NULL指针。
3.如果任何一个参数为NULL,或任何一个参数所指向的字符串为空,函数野返回一个NULL指针。
例如:假定source指向ABCDEF。如果chars指向XYZ、JURY或QQQQ,函数就返回一个NULL指针。如果chars指向XRCQEF,函数就返回一个指向source中C字符的指针。参数所指向的字符串是绝不会被修改的。
要求:
a.你不应该使用任何用于操纵字符串的库函数(如strcpy,strcmp,index等);
b.函数中的任何地方都不应该使用下标引用。
//*********************************************************************************************************************
#include<stdio.h>
char *find_char(char *source, char *chars);
int main()
{
char C1[] = "bbbbgggghhhh";
char C2[] = "aaaassss";
printf("%c\n",*find_char(C1, C2));
return 0;
}
char *find_char(char *source, char *chars)
{
char a = 0;
int k = 0;
int l = 0;
char *null=NULL;//返回的NULL指针;
char *i = &a;
char *j = &a;
int n1 = 0;
int n2 = 0;
i = source;
j = chars;
while (*i != '\0') {
n1++;
i++;
}//计算出source数组的长度;n1,即为source字符串的长度;
printf("%d\n", n1);
while (*j != '\0') {
n2++;
j++;
}//计算出chars数组的长度;n2,即为chars字符串的长度;
printf("%d\n", n2);
i = source;
j = chars;
for (k;k < n1;k++) {
j = chars;
l = 0;
for (l;l < n2;l++) {
if (*i == *j) {
return i;
}
if (*i == NULL || *j == NULL) {
return null;
}
j++;
}
i++;
}
return null;
}
/* 对于这个要求:3.如果任何一个参数为NULL,或任何一个参数所指向的字符串为空,函数野返回一个NULL指针。for (k;k < n1;k++)
for (l;l < n2;l++)
这两个判断语句已经可以判断字符串是否为空,为空的话n1||n2==0;那么不管是经过循环还是直接跳出循环返回NULL都是符合要求的。推荐阅读
-
第六章编程练习第一题
-
java编程思想练习题-第2章练习10 博客分类: javajava编程思想课后题 javajava编程思想
-
第六章第二十题(计算一个字符串中字母的个数)(Count the letters in a string) - 编程练习题答案
-
CPrimer Plus第6版第十六章编程练习答案(C语言)(自学记录)
-
C Primer Plus 第6版 第9章 编程练习
-
C Primer Plus 第6版 第6章 编程练习
-
java编程思想练习题-第5章练习8-this实现细节详解
-
第六章第二十一题(电话按键盘)(Phone keypads) - 编程练习题答案
-
python编程练习(小甲鱼)第31-35课
-
第三模块:面向对象&网络编程基础-第1章 面向对象-练习题(编程题)