第1个回答 推荐于2017-10-13
以下是C语言代码:
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int a[26]={0};
int i;
char c;
while ((c=getchar())!='\n')
if (isalpha(c)) a[tolower(c)-'a']++;
for (i = 0; i<26; i++) {
printf("%c\t:\t%d\n",'a'+i,a[i]);
}
return 0;
}
以下是运行所显示的结果:
第2个回答 推荐于2017-10-12
//统计一个文件里各个字符出现的次数,转换频率自己再加几句就是了,这里只统计了26个字母,如果还有更多的字符的话,将数组再扩大就行了,应该比较简单,我就不写了
#include<stdio.h>
#include<math.h>
void stat(char *file,int *statistic)
{
int i=0;
while(file[i++]!=0)
statistic[file[i-1]-97]++;
}
int main()
{
char file[100]={0};
int statistic[26]={0};
int i=0,j;
double s=0;
FILE *fp;
if((fp=fopen("1.txt","r"))==NULL)
{
printf("can't open 1.txt");
return 1;
}
while(!feof(fp))
fread(&file[i++],1,1,fp);
fclose(fp);
j=i;
stat(file,statistic);
for(i=0;i<26;i++)
printf("%c:%d\n",97+i,statistic[i]);
return 0;
}
//在源程序目录下建立一个文本文件1.TXT,里面输入字符串,就可以进行统计了本回答被提问者采纳
第3个回答 2008-03-06
#include <iostream.h>
#include <string.h>
void frequency( string& s, char& A[ ], int& C[ ], int &k )
{
// s是输入字符串,数组A[ ]中记录字符串中有多少种不同的字符,C[ ]中记录每
//一种字符的出现次数。这两个数组都应在调用程序中定义。k返回不同字符数。
int i, j, len = s.length( );
if ( !len )
{
cout << "The string is empty. " << endl;
k = 0;
return;
}
else
{
A[0] = s[0]; C[0] = 1; k = 1; /*语句s[ i ]是串的重载操作*/
for ( i = 1; i < len; i++ ) C[ i ] = 0; /*初始化*/
for ( i = 1; i < len; i++ )
{ /*检测串中所有字符*/
j = 0;
while ( j < k && A[j] != s[ i] ) j++; /*检查s[ i]是否已在A[ ]中*/
if ( j == k )
{
A[k] = s[ i]; C[k]++; k++
} /*s[ i]从未检测过*/
else C[ j]++; /*s[ i]已经检测过*/
}
}
}
/*
测试数据 s = "cast cast sat at a tasa\0"
A c a s t b
C 2 7 4 5 5
*/
//【另一解答】
include <iostream.h>
include "string.h"
const int charnumber = 128; /*ASCII码字符集的大小*/
void frequency( string& s, int& C[ ] )
{
// s是输入字符串,数组C[ ]中记录每一种字符的出现次数。
for ( int i = 0; i < charnumber; i++ ) C[ i] = 0; /*初始化*/
for ( i = 0; i < s.length ( ); i++ ) /*检测串中所有字符*/
C[ atoi (s[ i]) ]++; /*出现次数累加*/
for ( i = 0; i < charnumber; i++ ) /*输出出现字符的出现次数*/
if ( C[ i ] > 0 ) cout << "( " << i << " ) : \t" << C[ i ] << "\t";
}
第4个回答 2008-03-05
#include<stdio.h>
#include<ctype.h>
#define M 200
struct node
{int L[27];
char chr[27];
}ch;
char s[M];
main()
{ch.chr[0]='a',ch.chr[1]='b',ch.chr[2]='c',ch.chr[3]='d';
ch.chr[4]='e',ch.chr[5]='f',ch.chr[6]='g',ch.chr[7]='h';
ch.chr[8]='i',ch.chr[9]='j',ch.chr[10]='k',ch.chr[11]='l';
ch.chr[12]='m',ch.chr[13]='n',ch.chr[14]='o',ch.chr[15]='p';
ch.chr[16]='q',ch.chr[17]='r',ch.chr[18]='s',ch.chr[19]='t';
ch.chr[20]='u',ch.chr[21]='v',ch.chr[22]='w',ch.chr[23]='x';
ch.chr[24]='y',ch.chr[25]='z',ch.chr[26]='\0';
printf("put you words\n");
gets(s);
printf("%s\n",s);
tongji();
}
tongji()
{ int i,x,j,k;
char y;
for(i=0;i<M;i++)
if(isspace(s[i]))ch.L[26]=ch.L[26]+1;
for(i=0;i<M;i++)
switch(s[i])
{ case 'a':case 'A' : ch.L[0]=ch.L[0]+1;break;
case 'b':case 'B' : ch.L[1]=ch.L[1]+1;break;
case 'c':case 'C' : ch.L[2]=ch.L[2]+1;break;
case 'd':case 'D' : ch.L[3]=ch.L[3]+1;break;
case 'e':case 'E' : ch.L[4]=ch.L[4]+1;break;
case 'f':case 'F' : ch.L[5]=ch.L[5]+1;break;
case 'g':case 'G' : ch.L[6]=ch.L[6]+1;break;
case 'h':case 'H' : ch.L[7]=ch.L[7]+1;break;
case 'i':case 'I' : ch.L[8]=ch.L[8]+1;break;
case 'j':case 'J' : ch.L[9]=ch.L[9]+1;break;
case 'k':case 'K' : ch.L[10]=ch.L[10]+1;break;
case 'l':case 'L' : ch.L[11]=ch.L[11]+1;break;
case 'm':case 'M' : ch.L[12]=ch.L[12]+1;break;
case 'n':case 'N' : ch.L[13]=ch.L[13]+1;break;
case 'o':case 'O' : ch.L[14]=ch.L[14]+1;break;
case 'p':case 'P' : ch.L[15]=ch.L[15]+1;break;
case 'q':case 'Q' : ch.L[16]=ch.L[16]+1;break;
case 'r':case 'R' : ch.L[17]=ch.L[17]+1;break;
case 's':case 'S' : ch.L[18]=ch.L[18]+1;break;
case 't':case 'T' : ch.L[19]=ch.L[19]+1;break;
case 'u':case 'U' : ch.L[20]=ch.L[20]+1;break;
case 'v':case 'V' : ch.L[21]=ch.L[21]+1;break;
case 'w':case 'W' : ch.L[22]=ch.L[22]+1;break;
case 'x':case 'X' : ch.L[23]=ch.L[23]+1;break;
case 'y':case 'Y' : ch.L[24]=ch.L[24]+1;break;
case 'z':case 'Z' : ch.L[25]=ch.L[25]+1;break;
}
for(i=0;i<27;++i)
{k=i;
for(j=i+1;j<27;j++)
if(ch.L[k]<ch.L[j])k=j;
if(i!=k)
{x=ch.L[i]; y=ch.chr[i];
ch.L[i]=ch.L[k]; ch.chr[i]=ch.chr[k];
ch.L[k]=x; ch.chr[k]=y;
}
}
for(i=0;i<27;i++)
{printf("%c:",ch.chr[i]);
printf("%d\n",ch.L[i]);
}
}
只能统计空格和英文字母的个数