删除公共字符_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/f0db4c36573d459cae44ac90b90c6212?tpId=182&tqId=34789&ru=/exam/oj
题目
描述
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
输入描述:
每个测试输入包含2个字符串
输出描述:
输出删除后的字符串
示例1
输入:
They are students. aeiou
输出:
Thy r stdnts.
题解
// 引入标准输入输出流头文件
#include <stdio.h>
// 引入字符串处理函数库
#include <string.h>
// 定义最大字符串长度为100
#define MAX_LEN 100
// 定义函数 fun,接收一个字符指针 p1 和一个字符 p2 作为参数
int fun(char* p1, char p2) {
// 使用指针 p1 遍历字符串,直至遇到空字符('\0')
while (*p1) {
// 如果当前字符与给定字符 p2 相等,则返回1(表示找到匹配字符)
if (*p1 == p2) {
return 1;
}
// 指针 p1 向后移动一位,指向下一个字符
p1++;
}
// 若遍历结束仍未找到匹配字符,则返回0
return 0;
}
int main() {
// 定义两个大小为 MAX_LEN 的字符数组 arr1 和 arr2,并初始化为全零
char arr1[MAX_LEN] = {0};
char arr2[MAX_LEN] = {0};
// 通过 gets 函数分别从标准输入读取一行数据到 arr1 和 arr2(注意:使用 gets 函数存在安全风险,建议使用 fgets 替代)
gets(arr1);
gets(arr2);
// 初始化循环变量 i 为0
int i = 0;
// 使用指针遍历 arr1 中的字符
while (arr1[i]) {
// 调用函数 fun,检查 arr2 是否包含当前字符 arr1[i]
// 若不存在于 arr2,则输出该字符
if (fun(arr2, arr1[i]) == 0) {
printf("%c", arr1[i]);
}
// 自增循环变量 i,指向 arr1 的下一个字符
++i;
}
// 主函数返回 0,表示程序正常执行完毕
return 0;
}