【问题描述】 编写一个程序,输入一个字符串str(长度不超过30)和一个字符ch,通过指针查找、统计字符串str中字符ch出现的位置(区分大小写)。 【输入形式】 输入一个字符串str,以及一个字符ch 【输出形式】 若ch在str中存在,输出位置,位置之间以空格分隔 若ch在str中不存在,输出NULL 输出后面无换行符
时间: 2023-06-09 18:06:30 浏览: 97
您好,我可以为您回答编程问题。针对您的问题,可以使用如下代码实现:
``` cpp
#include <stdio.h>
#include <string.h>
int main()
{
char str[31], ch;
int len, i, count = 0;
int pos[30];
scanf("%s", str); //输入字符串
scanf(" %c", &ch); //输入字符
len = strlen(str);
for (i = 0; i < len; i++)
{
if (str[i] == ch)
{
pos[count++] = i; //存储位置
}
}
if (count == 0) //若不存在
{
printf("NULL");
}
else //存在
{
for (i = 0; i < count - 1; i++)
{
printf("%d ", pos[i]); //输出位置
}
printf("%d", pos[count - 1]); //最后一个位置后面不需空格
}
return 0;
}
```
希望能够解决您的问题。如果您还有其他问题,请随时向我提问。
相关问题
编写一个程序,输入一个字符串str(长度不超过30)和一个字符ch通过指针查找、统计字符串str中字符ch出现的位置(区分大小写)。【输入形式】输入一个字符串str,以及一个字符ch
下面是一个简单的 C 语言程序,实现了输入字符串和字符,然后查找并统计字符在字符串中出现的位置:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[31], ch;
printf("请输入一个字符串(长度不超过30):");
scanf("%s", str);
printf("请输入一个字符:");
scanf(" %c", &ch); // 注意需要加一个空格,避免读取上一次输入的回车符
int count = 0;
printf("字符 %c 在字符串中出现的位置:", ch);
for (int i = 0; i < strlen(str); i++) {
if (str[i] == ch) {
printf("%d ", i);
count++;
}
}
printf("\n字符 %c 在字符串中共出现了 %d 次。\n", ch, count);
return 0;
}
```
程序首先提示用户输入一个字符串和一个字符,然后通过 `scanf()` 函数分别读取输入。接下来,程序用一个循环遍历字符串中的每个字符,检查是否与目标字符相同,如果相同则打印出该字符在字符串中的位置,并计数器加一。最后,程序输出字符在字符串中出现的次数。注意字符串长度不能超过 30,否则可能会出现缓冲区溢出的问题。
问题描述 编写一个程序,输入一个字符串str(长度不超过30)和一个字符ch,通过指针查找、统计字符串str中字符ch出现的位置(区分大小写)。 输入形式 输入一个字符串str,以及一个字符ch 输出形式 •若ch在str中存在,输出位置,位置之间以空格分隔 若ch在str中不存在,输出NULL •输出后面无换行符
以下是 C++ 代码实现,可以实现你的需求:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[31], ch;
cin >> str >> ch;
int len = strlen(str);
bool flag = false;
for (int i = 0; i < len; i++) {
if (str[i] == ch) {
cout << i << " ";
flag = true;
}
}
if (!flag) {
cout << "NULL";
}
return 0;
}
```
程序首先输入一个字符串 `str` 和一个字符 `ch`,然后使用 `strlen` 函数获取字符串的长度。接下来使用一个 for 循环遍历字符串,如果当前字符等于 `ch`,则输出字符在字符串中的位置,并将标志变量 `flag` 设为 `true`。最后判断标志变量是否为 `true`,如果是,则说明字符 `ch` 在字符串 `str` 中出现过,否则输出 `NULL`。
阅读全文