6楼写的不太对吧 如果是a A的话那输出是A的次数为2
算法对 可是和题目要求不相符
算法对 可是和题目要求不相符
2008-06-05 21:14
2008-06-05 21:26
2008-06-05 21:28
2008-06-05 21:33
2008-06-05 21:38
2008-06-05 21:41
2008-06-05 21:46
程序代码:/*******************************************************************************
从键盘输入300个字符,统计其中各字母出现的次数,问号,感叹号,逗号,句号
出现的次数,哪个字母出现的频率最高 .
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
本程序增加了一些功能,即可显示及统计所有SACII中有的字符,但在字符数量一
致的情况下,最频繁出现的头一个字符被定为最高字符。
由于水平有限,所作代码十分粗糙,谨作参考。
还望大家指教一二,谢谢。
*******************************************************************************/
#include<stdio.h>
#include<string.h>
#define N 300
#define Y 255
void INSERTIONSORt(char *a) /* 将字符串排序 */
{
int k,i,j;
char key;
k=strlen(a);
for(j=1;j<k;j++)
{
key=a[j];
i=j-1;
while(i>=0&&a[i]>key)
{
a[i+1]=a[i];
i--;
}
a[i+1]=key;
}
}
void tongji(char *x,int *y) /* 统计字符出现的次数 */
{
int i,j,k,k1;
for(i=0;i<strlen(x);i++)
{
y[x[i]]=1;
for(j=i+1;j<strlen(x);j++)
if(x[i]==x[j])
{
y[x[i]]++;
j--;
k1=j;
while(x[k1]!='\0')
{
x[k1]=x[k1+1];
k1++;
}
}
}
}
int main(void)
{
char x[N];
int y[Y]={0};
int t=0,k,i;
printf("请输入一个300个字符以内的字符串,@结束输入:\n");
for(;t<N&&(x[t]=getch())!='@';t++)
printf("%c",x[t]);
INSERTIONSORt(x);
tongji(x,y);
printf("\n您输入的字符串中,下列字符出现的次数为:\n");
for(i=0;i<Y;++i)
if(y[i]>0)
printf("%c:\t%3d\n",i,y[i]);
for(i=0,k=y[i];i<Y;++i)
if(k<y[i])
{
k=y[i];
t=i;
}
printf("%c共输入了%d次,次数最多。\n",t,k);
getch();
}
2008-06-06 01:43
2008-06-06 06:52