【问题描述】 编写一个程序,输入一个字符串str(长度不超过30)和一个字符ch,通过指针查找、统计字符串str中字符ch出现的位置(区分大小写)。 【输入形式】 输入一个字符串str,以及一个字符ch 【输出形式】 若ch在str中存在,输出位置,位置之间以空格分隔 若ch在str中不存在,输出NULL 输出后面无换行符 【样例输入1】 Shanghaijiaotongdaxue h 【样例输出1】 1 5 【样例输入2】 Helloworld @ 【样例输出2】 NULL
时间: 2023-11-22 11:56:26 浏览: 92
C语编写一个函数,由实参传入一串字符,统计这串字符中字母、数字、空格、和其他 字符的个数,在主函数中输入字符串以及输出上述结果。
5星 · 资源好评率100%
下面是一个可能的解法,使用指针逐个遍历字符串,并记录出现位置。如果最终没有出现,就输出 NULL。
```c
#include <stdio.h>
int main() {
char str[31], ch;
printf("请输入一个字符串(长度不超过30):");
scanf("%s", str);
printf("请输入一个字符:");
scanf(" %c", &ch); // 注意要在前面加一个空格,消耗掉输入缓冲区中的回车符
char *p = str; // 定义一个指针,初始指向字符串的首地址
int pos = 0; // 记录出现位置的数组下标
int found = 0; // 标记是否找到了
while (*p != '\0') { // 当指针指向的字符不是字符串的结尾符时
if (*p == ch) { // 如果找到了
printf("%d ", pos); // 输出位置
found = 1; // 标记为已找到
}
p++; // 指针后移
pos++; // 数组下标后移
}
if (!found) { // 如果没有找到
printf("NULL");
}
return 0;
}
```
阅读全文