用C语言编写一个程序,要求:统计一行文字中某一字母出现的次数和位置,区分大小写。要求将该功能包装成一 个函数,在主函数中完成输入输出。建议使用 vector 存储位置。
时间: 2023-06-13 07:07:07 浏览: 135
以下是用C语言编写的程序,可实现统计一行文字中某一字母出现的次数和位置,区分大小写,并将该功能包装成一个函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 1000
int count_char(char *str, char ch, int *pos);
int main()
{
char str[MAX_LEN], ch;
int pos[MAX_LEN], count, i;
printf("Enter a string: ");
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0';
printf("Enter a character: ");
scanf("%c", &ch);
count = count_char(str, ch, pos);
printf("The character '%c' appeared %d times at position(s): ", ch, count);
for (i = 0; i < count; i++) {
printf("%d", pos[i] + 1);
if (i != count - 1) {
printf(", ");
}
}
printf("\n");
return 0;
}
int count_char(char *str, char ch, int *pos)
{
int count = 0, i;
for (i = 0; i < strlen(str); i++) {
if (str[i] == ch) {
pos[count] = i;
count++;
}
}
return count;
}
```
在主函数中,先输入一行字符串和要统计的字符,然后调用 `count_char` 函数来统计该字符出现的次数和位置。函数中使用了一个整型数组 `pos` 来存储该字符出现的位置,最后返回该字符出现的次数。
注意,由于输入字符串时可能会包含换行符,因此需要使用 `fgets()` 函数来读取输入,然后将换行符替换成字符串结束符。此外,在输出位置时需要将每个位置加上 1,以符合人类的习惯。
该程序使用了 `vector` 的思想,即动态添加元素到数组中。由于不知道要统计的字符在字符串中出现的次数,因此需要先遍历一遍字符串来确定数组 `pos` 的长度,然后再遍历一遍字符串来将每个位置添加到数组中。这样做的好处是不需要提前知道要统计的字符出现的次数,也不需要事先分配足够大的数组空间。
阅读全文