编写一个程序,输入一个字符串str和一个字符ch,通过指针查找,统计字符串str中ch出现的位置
时间: 2023-06-13 11:05:10 浏览: 83
下面是一个 C++ 的程序实现:
```c++
#include <iostream>
using namespace std;
void findChar(char* str, char ch) {
int count = 0;
for (int i = 0; str[i] != '\0'; i++) {
if (str[i] == ch) {
count++;
cout << "字符" << ch << "出现在第" << i+1 << "个位置" << endl;
}
}
if (count == 0) {
cout << "字符" << ch << "在字符串中未出现" << endl;
}
}
int main() {
char str[100], ch;
cout << "请输入一个字符串:";
cin.getline(str, 100);
cout << "请输入一个字符:";
cin >> ch;
findChar(str, ch);
return 0;
}
```
程序首先输入一个字符串和一个字符,然后通过指针遍历字符串,统计字符出现的次数并输出其位置。如果字符在字符串中未出现,则输出提示信息。
相关问题
编写一个程序,输入一个字符串str和一个字符ch,通过指针查找,统计字符串str中字符ch出现的位置
下面是一个示例程序,实现了输入一个字符串和一个字符,然后通过指针查找,统计字符串中字符出现的位置:
```c
#include <stdio.h>
#include <string.h>
void find_char(const char *str, char ch);
int main()
{
char str[100], ch;
printf("请输入字符串:");
gets(str);
printf("请输入要查找的字符:");
scanf("%c", &ch);
find_char(str, ch);
return 0;
}
void find_char(const char *str, char ch)
{
int count = 0;
const char *p = str;
while (*p)
{
if (*p == ch)
{
printf("%d ", p - str);
count++;
}
p++;
}
if (count == 0)
{
printf("未找到该字符");
}
else
{
printf("\n共找到%d个字符", count);
}
}
```
运行程序后,输入一个字符串和一个字符,程序会输出该字符在字符串中出现的位置,如果没有找到该字符,则输出提示信息。
输入字符串str和一个字符ch,通过指针查找,统计字符串str中字符ch位置,r
OK,我明白了。对于你的问题,我可以给出以下 C++ 代码,实现该功能:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void countCharPos(const char* str, char ch, int* result) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
if (str[i] == ch) {
(*result)++;
cout << "ch 在字符串的第 " << (i + 1) << " 个位置" << endl;
}
}
}
int main() {
char str[100], ch;
int result = 0;
cout << "请输入字符串 str: ";
cin >> str;
cout << "请输入字符 ch: ";
cin >> ch;
countCharPos(str, ch, &result);
cout << "字符 ch 在字符串中共出现了 " << result << " 次" << endl;
return 0;
}
```
这里的 `countCharPos` 函数是关键,实现了查找字符 ch 在字符串 str 中出现的次数,以及每次出现的位置。为了避免拷贝字符串,这里使用了字符指针。`result` 是一个指向结果的指针,通过指针传递,并在函数内部被修改。
需要注意的是,这里并没有对输入字符串的长度进行检查,可能存在越界访问的风险。实际应用时,需要对输入的字符串进行长度检查,并进行必要的校验。