编写函数void fun(char *s,char *t,char *p)将未在字符串s中出现、而在字符串t中出现的字符, 形成...

根据给定的信息,我们需要实现一个C语言函数`void fun(char *s,char *t,char *p)`,该函数的功能是:将未在字符串`s`中出现、而在字符串`t`中出现的字符形成一个新的字符串并存储在指针`p`指向的空间内。新字符串中的字符按照在字符串`t`中的原始顺序排列,并且要去掉重复的字符。 ### 1. 问题理解与分析 题目要求我们找出字符串`t`中所有不在字符串`s`中出现的字符,并按照`t`中的顺序排列组成新的字符串存储到`p`所指向的空间里。同时,新字符串`p`中不能包含重复的字符。 - **示例一**:如果`s`为"12345",而`t`为"8624677",那么最终`p`中的字符串应为"867"。 - **示例二**:如果`s`为"good luck",而`t`为"thank you very much",那么最终`p`中的字符串应为"thanyverm"。 ### 2. 解决方案设计 为了完成这个任务,我们可以遵循以下步骤来实现函数`fun`: 1. **初始化**:设置两个循环变量`i`和`j`,其中`i`用来追踪目标字符串`p`的位置,`j`用于在`t`中查找字符。 2. **遍历字符串`t`**:对于`t`中的每一个字符,检查它是否在`s`中出现过。 3. **检查字符是否已经添加到`p`**:如果该字符没有在`s`中出现过,并且尚未被添加到`p`中,则将其添加到`p`中。 4. **避免重复**:通过比较`p`中已有的字符来确保不会添加重复的字符。 5. **终止条件**:当`t`遍历完毕后,添加结束符`\0`到`p`的末尾,以便正确表示字符串。 ### 3. 代码实现 下面是完整的代码实现: ```c #include<stdio.h> void fun(char *s, char *t, char *p) { int i = 0, j; // 初始化索引 while (*t != '\0') { // 遍历字符串t while (*t != *s && *s != '\0') { // 查找t中的当前字符是否出现在s中 s++; } if (*s == '\0' && *t != *s) { // 如果s遍历完都没有找到t中的当前字符 for (j = 0; j < i; j++) { // 检查当前字符是否已经在p中出现 if (*(p + j) == *t) break; } if (j == i) { // 如果当前字符没有在p中出现过 *(p + i) = *t; // 添加到p i++; // 更新p的位置 } } t++; // 移动到t的下一个字符 s = s - (i > 0 ? i : 1); // 重置s回到起始位置 } *(p + i) = '\0'; // 添加字符串结束符 } int main() { char s1[50], s2[50], s3[50]; // 定义字符串 printf("请输入字符串s: "); scanf("%s", s1); printf("请输入字符串t: "); scanf("%s", s2); fun(s1, s2, s3); // 调用函数 printf("结果字符串p: %s\n", s3); return 0; } ``` ### 4. 代码解析 - **输入**:程序首先提示用户输入字符串`s`和`t`。 - **处理**:调用`fun`函数处理输入的字符串。 - **输出**:输出结果字符串`p`。 ### 5. 测试 测试函数`fun`,使用提供的示例和其他自定义的测试案例来验证函数的正确性。例如: - `s = "12345", t = "8624677"` 应输出 `"867"`。 - `s = "good luck", t = "thank you very much"` 应输出 `"thanyverm"`。 通过这种方式,我们可以确保函数能够正确地执行预期的任务。





















例如: 当s为"12345", t为"8624677"时, p中的字符为: "867";
当s为”good luck”,t为”thank you very much”时,输出:”thanyverm”
#include <stdio.h>
void fun(char *s,char *t,char *p)
{
char *a;
int i=0,j;
a=s;
while(*t!='\0')
{
while(*t!=*s)
{
if(*s=='\0')break;
s++;
}
if(*s=='\0'&&*t!=*s)
{
for(j=0;j<i;j++)
{
if(*(p+j)==*t)break;
}
if(j==i)
{
*(p+i)=*t;
i++;
}
}
t++;

- 行走的瓶子Yolo2023-07-25这个文件提供了一个简洁而实用的函数,能够高效地处理字符串中未出现但在另一个字符串中出现的字符。
- 小小二-yan2023-07-25这个文件中的函数把问题的解决思路清晰明了地呈现出来,展示了作者对技术细节的熟悉和实际操作的经验。
- lowsapkj2023-07-25这个文件所提供的函数给予了开发者一个方便的工具,让人可以很快地处理字符串,提高了工作效率。
- 普通网友2023-07-25这个文件的函数真实地解决了一个常见的问题,而且代码简单易懂,不需要太高深的编程技巧。
- 丽龙2023-07-25阅读这个文件,你会发现它的代码风格朴实无华,很容易理解,不会让人觉得晦涩难懂。

- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 材料的组成、结构、构造及其对性能的影响.ppt
- 钢筋混凝土组合结构3.ppt
- (50+70+50)m连续刚构毕业设计计算书.doc
- K3V12.0零售-POS培训.ppt
- 微信小程序校园微社区(1).zip
- 2011版建筑工程预算定额说明.doc
- 电渣压力焊技术交底.doc
- 制定食品防护计划“怎样实现”.ppt
- 微信小程序蓝牙打印.zip
- 微信小程序点餐+SpringBoot.zip
- 工程部项目经理个人年终总结.doc
- 重庆某房建项目施工合同.doc
- 微信小程序 外卖.zip
- 水布垭高面板坝趾板基础灌浆升压研究与实践.doc
- [福建]框架核心筒结构办公大楼工程临电施工方案(41页).doc
- 机械成孔灌注桩质量检验要求.ppt


