6楼写的不太对吧 如果是a A的话那输出是A的次数为2
算法对 可是和题目要求不相符
算法对 可是和题目要求不相符
/******************************************************************************* 从键盘输入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(); }