编写一个程序,输入一个字符串str(长度不超过30)和一个字符ch,通过指针查找、统计字符串str中字符ch出现的位置(区分大小写)。 【输入形式】 输入一个字符串str,以及一个字符ch 【输出形式】 若ch在str中存在,输出位置,位置之间以空格分隔 若ch在str中不存在,输出NULL 输出后面无换行符
时间: 2023-06-07 20:10:40 浏览: 70
好的,您的问题已收到。以下是对您的问题的回答:
程序如下:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void find_positions(char *str, char ch) {
int len = strlen(str);
int count = 0;
for (int i = 0; i < len; i++) {
if (str[i] == ch) {
count++;
if (count == 1) {
cout << i;
} else {
cout << " " << i;
}
}
}
if (count == 0) {
cout << "NULL";
}
}
int main() {
char str[31];
char ch;
cin >> str >> ch;
find_positions(str, ch);
return 0;
}
```
输入示例:
```
Hello World!
o
```
输出示例:
```
4 7
```
希望这个程序能够满足您的需求。如果您有其他问题,请随时提出。
相关问题
编写一个程序,输入一个字符串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出现的位置(区分大小写)。
### 回答1:
可以按照以下步骤编写程序:
1. 定义一个字符指针变量,指向输入的字符串str。
2. 定义一个整型变量count,用于统计字符ch在字符串str中出现的次数。
3. 使用while循环遍历字符串str,判断当前字符是否等于字符ch,如果是,则输出当前字符的位置(可以使用指针计算)并将count加1。
4. 循环结束后,输出字符ch在字符串str中出现的次数。
示例代码如下:
```
#include <stdio.h>
#include <string.h>
int main() {
char str[31], ch;
printf("请输入一个字符串(长度不超过30):");
scanf("%s", str);
printf("请输入一个字符:");
scanf(" %c", &ch);
char *p = str;
int count = ;
while (*p != '\') {
if (*p == ch) {
printf("%d ", p - str);
count++;
}
p++;
}
printf("\n字符%c在字符串%s中出现了%d次。\n", ch, str, count);
return ;
}
```
### 回答2:
编写一个程序,输入一个字符串str(长度不超过30)和一个字符ch,通过指针查找、统计字符串str中字符ch出现的位置(区分大小写)。
首先,我们需要定义一个指向字符串的指针,用于存储输入的字符串。然后,我们需要定义一个字符型变量ch,用于存储输入的字符。接下来,我们需要定义一个整型变量count,用于统计字符ch在字符串str中出现的次数。
我们可以使用for循环结构来遍历字符串str,每次循环中使用if条件语句判断当前字符是否等于字符ch。如果相等,则将当前下标存储在一个int类型的数组中,同时将count加1。最后,输出该字符在字符串中出现的次数和对应的索引位置。
下面是该程序的示例代码:
```
#include <stdio.h>
#include <string.h>
int main()
{
char str[31]; //定义一个指向字符串的指针,长度不超过30.
char ch; //定义一个字符型变量,用于存储输入的字符
int count = 0; //定义一个整型变量count,用于统计字符ch在字符串str中出现的次数
int index[30] = {0}; //定义int类型的数组,用于存储字符ch在字符串中出现的位置
printf("请输入一个字符串: ");
scanf("%s", str);
printf("请输入一个字符: ");
scanf("%c", &ch);
for (int i = 0; i < strlen(str); i++)
{
if (str[i] == ch)
{
index[count] = i;
count++;
}
}
printf("字符 %c 在字符串 %s 中出现了 %d 次, 位置为: ", ch, str, count);
for (int i = 0; i < count; i++)
{
printf("%d ", index[i]);
}
printf("\n");
return 0;
}
```
在运行程序时,我们可以输入字符串和字符,程序会输出该字符在该字符串中出现的次数及对应的索引位置。
需注意的是,我们使用了strlen()函数来获取字符串的长度,所以需要包含<string.h>头文件。同时,在输入字符时,为了避免出现字符输入错误,我们可以在scanf()函数之前加入getchar()函数,用于清空输入缓冲区。
### 回答3:
本程序的实现思想是通过指针查找字符串中某个字符出现的位置。具体实现过程如下:
1.定义一个字符串str和一个字符ch,通过输入函数输入这两个变量的值。
2.定义一个指针变量p指向字符串str的第一个字符。
3.定义一个整型变量count,表示字符ch在字符串str中出现的次数。
4.通过循环遍历字符串str,每遍历一个字符,判断该字符是否等于字符ch。若相等,则将该字符在字符串str中的位置输出,并将count加1。
5.循环结束后,输出字符ch在字符串str中出现的次数。
下面是程序的具体实现:
#include <stdio.h>
#include <string.h>
int main()
{
char str[31], ch, *p;
int count = 0, i;
printf("请输入一个字符串str:");
scanf("%s", str);
printf("请输入一个字符ch:");
scanf(" %c", &ch); //注意要在%c前加一个空格,以排除缓冲区中的换行符
p = str;
for (i = 0; i < strlen(str); i++) //遍历字符串
{
if (*p == ch) //判断该字符是否等于字符ch
{
count++; //字符ch出现的次数加1
printf("字符ch在字符串str中的位置为%d\n", i + 1); //输出该字符在字符串中的位置
}
p++; //指针向后移动
}
if (count == 0)
printf("字符ch在字符串str中未出现\n");
else
printf("字符ch在字符串str中出现了%d次\n", count);
return 0;
}
需要特别注意的是,输入一个字符串时,scanf函数会将空格作为字符串的结束符,因此无法输入带有空格的字符串。如果需要输入包含空格的字符串,则需使用gets函数来输入,该函数会读取输入缓冲区中的全部字符,直到遇到回车键才结束读取。以下是使用gets函数的修改:
#include <stdio.h>
#include <string.h>
int main()
{
char str[31], ch, *p;
int count = 0, i;
printf("请输入一个字符串str:");
gets(str);
printf("请输入一个字符ch:");
scanf(" %c", &ch); //注意要在%c前加一个空格,以排除缓冲区中的换行符
p = str;
for (i = 0; i < strlen(str); i++) //遍历字符串
{
if (*p == ch) //判断该字符是否等于字符ch
{
count++; //字符ch出现的次数加1
printf("字符ch在字符串str中的位置为%d\n", i + 1); //输出该字符在字符串中的位置
}
p++; //指针向后移动
}
if (count == 0)
printf("字符ch在字符串str中未出现\n");
else
printf("字符ch在字符串str中出现了%d次\n", count);
return 0;
}
综上,本程序通过指针查找字符串中某个字符出现的位置,并统计该字符在字符串中出现的次数。通过此程序的学习,我们可以更加清晰地认识指针在C语言中的应用,并进一步提高编程能力。
阅读全文