![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
C语言编程:从键盘输入一串字符(长度不超过80),统计出各字母出现的次数(不区分大小写)。
C语言编程:从键盘输入一串字符(长度不超过80),统计出各字母出现的次数(不区分大小写)。想了好久都没点头绪,我自己的思路是大概定义个数组,输入的字符串放在数组里面,然后...
C语言编程:从键盘输入一串字符(长度不超过80),统计出各字母出现的次数(不区分大小写)。
想了好久都没点头绪,我自己的思路是大概定义个数组,输入的字符串放在数组里面,然后把字符串里面的大写字母和小写字母先转化,再用一个循环去对数组里面的元素出现次数做统计,并且输出该字母和次数。
不会写,麻烦大虾们打救下,最好给点注释。 展开
想了好久都没点头绪,我自己的思路是大概定义个数组,输入的字符串放在数组里面,然后把字符串里面的大写字母和小写字母先转化,再用一个循环去对数组里面的元素出现次数做统计,并且输出该字母和次数。
不会写,麻烦大虾们打救下,最好给点注释。 展开
4个回答
展开全部
#include <stdio.h>
#define MAX 100
void detect(char s[])
{
char ch[MAX];/*记录出现的字符*/
int num[MAX]={0};/*记录每个字符出现的次数*/
int i,j,n=0;
for(i=0;s[i]!='\0';i++)
{
for(j=0;j<n;j++)
if(s[i]==ch[j]||(ch[j]>='a'&&ch[j]<='z'&&s[i]+32==ch[j])) break;/*判断该字符是否已经出现过*/
if(j<n)/*该字符出现过,对应的记数器num[j]加一*/
num[j]++;
else/*该字符是新出现的字符,记录到ch[j]中,对应计数器num[j]加一*/
{
if(s[i]>='A'&&s[i]<='Z')
ch[j]=s[i]+32;
else
ch[j]=s[i];
num[j]++;
n++;/*出现的字符的种类数加1*/
}
}
for(i=0;i<n;i++)/*输出*/
printf("\'%c\'出现了%d次\n",ch[i],num[i]);
}
main()
{
int i=0;
char s[MAX];
printf("请输入一个字符串:");
while((s[i]=getchar())!='\n')/*输入*/
i++;
s[i]='\0';
detect(s);
}
#define MAX 100
void detect(char s[])
{
char ch[MAX];/*记录出现的字符*/
int num[MAX]={0};/*记录每个字符出现的次数*/
int i,j,n=0;
for(i=0;s[i]!='\0';i++)
{
for(j=0;j<n;j++)
if(s[i]==ch[j]||(ch[j]>='a'&&ch[j]<='z'&&s[i]+32==ch[j])) break;/*判断该字符是否已经出现过*/
if(j<n)/*该字符出现过,对应的记数器num[j]加一*/
num[j]++;
else/*该字符是新出现的字符,记录到ch[j]中,对应计数器num[j]加一*/
{
if(s[i]>='A'&&s[i]<='Z')
ch[j]=s[i]+32;
else
ch[j]=s[i];
num[j]++;
n++;/*出现的字符的种类数加1*/
}
}
for(i=0;i<n;i++)/*输出*/
printf("\'%c\'出现了%d次\n",ch[i],num[i]);
}
main()
{
int i=0;
char s[MAX];
printf("请输入一个字符串:");
while((s[i]=getchar())!='\n')/*输入*/
i++;
s[i]='\0';
detect(s);
}
展开全部
思路可以,就这么写啊
不用转化,大概可以这样
for(int i=0;i<strlen(input);i++) //遍历 input是输入字符串
{
switch input[i]
{
case a:
case A:
count[0]++;break;
……………………
case z:
case Z:
……………………
}
}
最后结果在count[0~25]数组里
不用转化,大概可以这样
for(int i=0;i<strlen(input);i++) //遍历 input是输入字符串
{
switch input[i]
{
case a:
case A:
count[0]++;break;
……………………
case z:
case Z:
……………………
}
}
最后结果在count[0~25]数组里
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
上面的差不多 我完善下
char string[80] = "";//存储输入的字符串
int count[25]; //存储每个字母出现次数
for(int i=0; i<25;i++)count[i] = 0;
//初始化下,因为可能有的字母没出现过,其实有个简单的初始化方法不记得了就只能这样了
cin<<string;// 输入字符串,这里用了c++的输入输出流你可以用c语言的输入
for(int j=0;j<strlen(string);j++) //遍历string
{
switch(string[j])
{
case a:
case A:
count[0]++;break;
case b:
case B:
count[1]++;break;
......//中间类似省略了
case z:
case Z:count [25]++;break;
default: break;
}
}
char string[80] = "";//存储输入的字符串
int count[25]; //存储每个字母出现次数
for(int i=0; i<25;i++)count[i] = 0;
//初始化下,因为可能有的字母没出现过,其实有个简单的初始化方法不记得了就只能这样了
cin<<string;// 输入字符串,这里用了c++的输入输出流你可以用c语言的输入
for(int j=0;j<strlen(string);j++) //遍历string
{
switch(string[j])
{
case a:
case A:
count[0]++;break;
case b:
case B:
count[1]++;break;
......//中间类似省略了
case z:
case Z:count [25]++;break;
default: break;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的思路就可以的阿。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询