C语言编程:从键盘输入一串字符(长度不超过80),统计出各字母出现的次数(不区分大小写)。

C语言编程:从键盘输入一串字符(长度不超过80),统计出各字母出现的次数(不区分大小写)。

想了好久都没点头绪,我自己的思路是大概定义个数组,输入的字符串放在数组里面,然后把字符串里面的大写字母和小写字母先转化,再用一个循环去对数组里面的元素出现次数做统计,并且输出该字母和次数。

不会写,麻烦大虾们打救下,最好给点注释。

#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);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-26
思路可以,就这么写啊
不用转化,大概可以这样
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]数组里
第2个回答  2010-12-26
上面的差不多 我完善下
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;
}
}
第3个回答  2010-12-26
你的思路就可以的阿。。。。

C语言:从键盘上输入一个字符串,假定该字符串的长度小于80,计算其中字 ...
} printf("字母个数:%d\\n数字个数:%d\\n空格个数:%d\\n",a,b,c);}

编程实现:从键盘输入一个字符串,长度不超过80,统计其中英文字母的个数...
printf("共有%d个英文字母\\n",n);}

C语言从键盘上输入一串字符 (不超过 80 个字符 ),直到回车 结束。输 ...
printf("刚才输入的字符中其他个数为 %d\\n", n);return 0;}

编写一个C语言程序:从键盘读入一行文本,统计每个英文字母出现的次数
1、循环读取字符,直到换行为止。对于每个字符,执行以下流程。2、判断是否为英文字母,即小写和大写两种。3、如果是英文字母,则统计个数。输入部分,可以存为数组,也可以每输入一个字符计算一次。二、参考代码:include <stdio.h>int main(){ int c; int cnt[52]={0}; while((c=get...

C语言编程:输入一串英文字母,统计每个字母(不区分大小写)出现的次数
include<iostream> include<string> using namespace std;int main(){ char str[50];int n=0;char *p;p=str;cout<<"请输入字符串:"<<endl;cin>>str;for(int i=0;*p!='\\0';p++){ if(('a'<=*p && *p<='z') || ('A'<=*p && *p<='Z')){ n++;cout<<*p<<" ";} el...

...从键盘读入一行文本,统计每个英文字母出现的次数。
include#include#defineMAX100intmain(){charstr[MAX];\/\/输入的字符串,最大长度是MAX-1,因为有一个字符串结束符inti=0,count[52]={0};\/\/count数组用来存储各个字母出现的次数scanf("%s",str);while(str[i]!='\\0'){if(str[i]>='a'&&str[i]count[str[i]-97+26]++;}if(str[i]>...

从键盘输入一行字符(长度小于80),将其中的大写字母转化成小写字母,再...
include <stdio.h>int main(){ char s[80]; int i; gets(s); for(i = 0;s[i]; i ++) if(s[i]>='A' && s[i]<='Z') s[i]+=32; puts(s); return 0;}

c语言作业:输入一串字符串,以'!'结束,不分大小写,统计其中每种英文字...
include <stdio.h>\/\/注意是字符串 include <string.h> int main(){ int i,count[26]={0},k=0;char a[80];gets(a);for(i=0;a[i]!='!';i++)if(a[i]>='a'&&a[i]<='z')count[a[i]-'a']++;for(k=0;k<26;k++)if(count[k]!=0)printf("%c:%d\\n",k+'a',...

C语言 编写程序,从键盘输入若干个英文字母,并统计各字母出现的次数
0][i] = j;\/\/初始化字母表index[1][i] = 0;\/\/初始化字母出现的次数j++;}j = 97;for(i=26;i<52;i++){index[0][i] = j;\/\/初始化字母表index[1][i] = 0;\/\/初始化字母出现的次数j++;}printf("Please input a word:\\n\\n");gets(input);for(i=0;input[i]!='...

c语言,从键盘输入一串字符串,统计字符串中特定字符的个数,并输出...
程序设计思路如下:从键盘分别输入字符串和要统计的字符,然后对此字符串从头开始逐个与所统计的字符比较,如相同,则让计数器加1,知道字符串整体比较结束为止,计数器中就是需统计的字符的个数。include "stdio.h"main(){ char str[100],ch; \/*定义str字符串,定义ch用来存放要统计的字符*\/ ...

相似回答