由键盘输入两个字符串(假设第一个字符串必包含第二个字符串,如第一个字符串为ABCDEF,第二个为CDE,则CDE包含在ABCDEF中),现要求变成输出第二个字符串在第一行字符串中出现的位置。(如果第二个字符串在第一个字符串中出现多次,则以最前出现的为准)用c语言作答
时间: 2024-12-12 15:11:30 浏览: 13
以下是一个用C语言实现的程序,它可以满足你的要求:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[100], str2[100];
int i, j, found, position;
// 输入两个字符串
printf("请输入第一个字符串(包含第二个字符串):");
scanf("%s", str1);
printf("请输入第二个字符串:");
scanf("%s", str2);
// 查找第二个字符串在第一个字符串中的位置
for (i = 0; str1[i] != '\0'; i++) {
if (str1[i] == str2[0]) { // 找到可能的起始位置
found = 1;
for (j = 0; str2[j] != '\0'; j++) {
if (str1[i + j] != str2[j]) {
found = 0;
break;
}
}
if (found) {
position = i;
break;
}
}
}
// 输出结果
if (found) {
printf("第二个字符串在第一个字符串中出现的位置:%d\n", position);
} else {
printf("第二个字符串不在第一个字符串中出现。\n");
}
return 0;
}
```
这个程序的工作原理如下:
1. 首先,我们声明了两个字符数组来存储输入的字符串。
2. 使用 `scanf` 函数从键盘读取两个字符串。
3. 然后,我们使用一个嵌套循环来查找第二个字符串在第一个字符串中的位置。外层循环遍历第一个字符串的每个字符,内层循环检查从当前位置开始的子字符串是否与第二个字符串匹配。
4. 如果找到匹配,我们记录下位置并退出循环。
5. 最后,我们检查是否找到了匹配,并输出结果。如果没有找到,我们也会相应地通知用户。
这个程序假设第一个字符串确实包含第二个字符串。如果你不确定是否包含,你可能需要添加额外的错误处理。
阅读全文