请使用指针,编写程序,从键盘输入一个字符串,并统计各字母出现的次数(不区分大小写)。
如图所示:
#include <stdio.h>
#include <ctype.h>
void func(int *num)
{
char ch;
// 获取输入
while ((ch=getchar()) != '\n')
{
if (isalpha(ch))
{
// 大写转换
ch = tolower(ch);
// 计数,+1
(*(num + (ch - 'a')))++;
}
}
}
int main()
{
// 字母只有26个,定义统计数组
int num[26] = { 0 };
printf("请输入字符串:");
func(num);
// 输出统计
int i = 0;
for (i = 0; i < 26; i++)
{
if (num[i])
{
printf("字母%c的个数为:%d个\n", i + 'a', num[i]);
}
}
return 0;
}
可以在一行输出字母的个数,可以自行修改一下,使符合输出格式
#include<stdio.h>
int main()
{
char str[100];
char *p=str;
int a[26]={0};
gets(str);
while(*p!='\0')
{
if(*p>='a'&&*p<='z')
a[*p-'a']++;
if(*p>='A'&&*p<='Z')
a[*p-'A']++;
p++;
}
for(int i=0;i<26;i++)
{
printf("%d ",a[i]);
}
return 0;
}
其他思路....
#include<stdio.h>
int main()
{
char a[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char b[26]={'\0'};
char *p,*q;
int sum=0;
printf("请输入字符:");
gets(b);
p=a;q=b;
for(p=a;*p!='\0';p++)
{
sum=0;
for(q=b;*q!='\0';q++)
{
if(*p==*q||*p==*q+32)
sum++;
}
if(sum)
printf("字母%c的个数为:%d个\n",*p,sum);
}
return 0;
}