用C语言实现输入一组字符和一个目标字符,编写程序找出目标字符第一次出现和最后一次出现的位置并输出。初始位置从0开始。如果目标字符不在输入的字符中,则输出-1。例如,输入sdflsadjfl&&&wr12sdfasaa和目标字符s,输出0 21(此题不必使用数组,仅应用循环求解)
时间: 2024-12-21 13:31:42 浏览: 14
在C语言中,你可以通过遍历字符串,同时维护目标字符的起始位置和结束位置来实现这个功能。这里是一个简单的示例程序:
```c
#include <stdio.h>
#include <string.h>
int find_first_and_last(char str[], char target) {
int start = -1, end = -1; // 初始化目标字符的位置为-1,表示未找到
int i;
for (i = 0; str[i] != '\0'; i++) { // 遍历字符串
if (str[i] == target) { // 如果遇到目标字符
if (start == -1) { // 如果这是第一个目标字符,记录起始位置
start = i;
}
end = i; // 每次遇到就更新结束位置
}
}
// 输出结果
if (start == -1 && end == -1) { // 如果没找到目标字符,返回-1
printf("-1\n");
} else {
printf("%d %d\n", start, end);
}
}
int main() {
char input[] = "sdflsadjfl&&&wr12sdfasaa";
char target = 's';
find_first_and_last(input, target);
return 0;
}
```
在这个程序里,我们首先初始化了两个变量`start`和`end`来分别存储目标字符的首次和最后出现的位置。然后,我们在字符串中逐个检查每个字符,如果找到了目标字符,我们就更新`end`的位置。当字符串遍历完仍未找到目标字符,说明它不存在于输入字符串中,所以返回-1。
运行上述代码,如果你的目标字符是's',将会输出0 21,因为`s`第一次出现在索引0,最后一次出现在索引21。
阅读全文