从控制台输入一个字符串,长度与内容自定。统计各个字母在字符串中出现的次数。要求:1) 声明一个并在main()函数中调用,该函数实现对字母出现次数的统计,其参数包含一个字符指针;2) 不允许使用数组下标访问数组元素或为数组元素赋值;3) 忽略大小写;4) 仅需输出字符串中曾经出现过的字母的统计结果
#include <stdio.h>
int word[26]= {0};
void tong(char *s)
{
while(*s)
{
if(*s>='a' && *s<='z')
(*(word+(*s-'a')))++;
else if(*s>='A' && *s<='Z')
(*(word+(*s-'A')))++;
s++;
}
}
int main()
{
char s[100];
gets(s);
tong(s);
for(int i=0; i<26; i++)
{
if(*(word+i)>0)
{
printf("%c %d\n",'a'+i,*(word+i));
}
}
return 0;
}
遍历字符串,用一个int a[26]来记录每个字符出现的次数就可以了,用指针指向数组的首地址,移动指针操作。
运行结果:
代码:
#include <stdio.h>
void fun(char* str)
{
int a[26], i, * pn;
//初始化a数组
pn = a;
for (i = 0; i < 26; i++, pn++)
*pn = 0;
//重置pn
pn = a;
while (*str != '\0')
{
if (*str >= 'a' && *str <= 'z')
{
i = *str - 'a';
*(pn + i) = *(pn + i) + 1;
}
else if (*str >= 'A' && *str <= 'Z')
{
i = *str - 'A';
*(pn + i) = *(pn + i) + 1;
}
str++;
}
//输出结果
for (i = 0; i < 26; i++)
{
if (*(pn + i) != 0)
printf("%c : %d\n", 'a' + i, *(pn + i));
}
}
int main()
{
char buf[1000];
printf("请输入一个字符串:");
gets(buf); //读取一行字符串
fun(buf);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!