用c语言编写一个程序,输入两个字符串 str1和str2,求两者的交集若该交集非空,则将其输出,若无交集则不输出。交集指的是同时出现在两个字符串中的字符,输出顺序按昭str1中的出现的先后顺序排列。 str1和str2的长度都不超过20读入str1和str2可使用scanf("g”,str1);读入,也即str1 和str2内部没有空白字符《空格,制表符,换行符) 测试说明平台会对你编写的代码进行测试:测试输入: abcdefghijk12314bc78h92 预期输出: bchi
时间: 2024-02-23 13:01:20 浏览: 92
以下是用 C 语言编写的程序实现输入两个字符串 str1 和 str2,求两者的交集,若该交集非空,则将其输出,若无交集则不输出。
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[21], str2[21], result[21] = {0};
int len1, len2, i, j, k = 0;
scanf("%s %s", str1, str2);
len1 = strlen(str1);
len2 = strlen(str2);
for (i = 0; i < len1; i++) {
for (j = 0; j < len2; j++) {
if (str1[i] == str2[j] && strchr(result, str1[i]) == NULL) {
result[k++] = str1[i];
}
}
}
if (k > 0) {
printf("%s\n", result);
}
return 0;
}
```
程序的核心是通过两个嵌套的循环遍历两个字符串中的所有字符,判断是否同时出现在两个字符串中,并将其加入到结果字符串中(注意在加入前要判断该字符是否已经存在于结果字符串中)。最后,如果结果字符串非空,则将其输出。
相关问题
用c语言编写一个程序,在程序中输入字符串str2,将其中所有小写字母复制到字符串组str1中
好的,下面是用 C 语言编写的程序,可以将输入的字符串 `str2` 中的所有小写字母复制到字符串数组 `str1` 中:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(void) {
char str1[100] = {0};
char str2[100];
// 读取字符串
printf("请输入一个字符串:");
fgets(str2, 100, stdin);
// 复制小写字母到 str1
int j = 0;
for (int i = 0; str2[i] != '\0'; i++) {
if (islower(str2[i])) {
str1[j] = str2[i];
j++;
}
}
// 输出结果
printf("复制的小写字母为:%s\n", str1);
return 0;
}
```
程序中先定义了两个字符数组 `str1` 和 `str2`,其中 `str1` 初始化为全 0。然后使用 `fgets()` 函数读取用户输入的字符串 `str2`,遍历字符串中的每个字符,并使用 `islower()` 函数判断字符是否为小写字母,如果是就将该字符复制到 `str1` 中,并将下标 `j` 加 1。最后通过 `printf()` 函数输出复制的小写字母即可。
需要注意的是,由于 `fgets()` 函数会将用户输入的换行符也读取进来,因此在遍历 `str2` 字符串时,需要判断字符是否为字符串结尾的空字符 `\0` 而不是换行符 `\n`。
c语言输入两个字符串str1和str2,将字符串str2倒置后接在字符串str1后面。
可以使用C语言的字符串函数来实现这个问题,具体步骤如下:
1. 使用`gets()`函数分别输入两个字符串`str1`和`str2`。
2. 使用`strlen()`函数获取字符串`str2`的长度。
3. 使用循环将字符串`str2`倒置。
4. 使用`strcat()`函数将倒置后的字符串`str2`和字符串`str1`连接起来。
5. 输出连接后的字符串`str1`。
下面是代码示例:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str1[100], str2[100];
int len, i;
// 输入两个字符串
printf("请输入两个字符串:\n");
gets(str1);
gets(str2);
// 获取字符串str2的长度
len = strlen(str2);
// 将字符串str2倒置
for (i = 0; i < len / 2; i++) {
char temp = str2[i];
str2[i] = str2[len - i - 1];
str2[len - i - 1] = temp;
}
// 将倒置后的字符串str2和字符串str1连接起来
strcat(str1, str2);
// 输出连接后的字符串str1
printf("连接后的字符串为:%s\n", str1);
return 0;
}
```