|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目~!
根据要求再写一个字符统计程序,不过这个要更复杂一些。
要求 A:统计用户输入的所有字符个数;
要求 B:统计不同的字符个数,并打印出来
要求 C:找出出现次数最多的字符。
我的代码:
- #include <stdio.h>
- #include <string.h>
- #define MAX 128
- int main()
- {
- char str1[MAX];
- char str2[MAX];//这个数组储存不同的字符
- int i=0,j,k=0,r,flag,space1,space2;
- int count=1,temp,max;
-
- printf("请输入英文文本:");
- while((str1[i++]=getchar())!='\n')
- { space1=i;
- for(j=0;j<i;j++)
- {
- flag=0;
- if(!(str1[i]-str1[j]))
- {flag=1;break;}//flag用于表示录入的该字符是否不曾在前面出现,只要出现一次就是1.
- }
- if(!flag)//如果是新字符flag就是0,在str2储存这个新字符。
- { str2[k++]=str1[i];
- space2=k;
- }
- }
- str1[space1]='\0';
- str2[space2]='\0';
-
- for(j=0;j<k;i++);//用str2中的每个字符与str1中的每个字符相减
- {
- for(r=0;r<i;r++)
- {
- temp=1;
- if(!(str2[j]-str1[r]))
- {temp+=1;}//如果差是0 就往上加一个
- }
- if(temp>count)//但是count只记录重复数temp最大的值 只输出重复数最大的元素
- {
- count=temp; max=j;
- }
- }
- printf("你总共输入了%d个字符,其中不同的字符个数有%d个.\n" ,strlen(str1),strlen(str2));
- printf("它们是:%s\n" ,str2);
- printf("出现最多的字符是‘%c’,它总共出现了%d次\n" ,str2[max],count);
- return 0;
- }
复制代码
问题在于:我这个程序从一开始就无法执行!!
显示了请输入英文文本:
我可以往里输入字符串 比如abcdefsfdgd
可是我按了回车以后没有下一步反应!!!
光标移到了下一行 但是什么也没有再显示 也不能再输入字符!
好难受啊 之前也有过这种情况 参考答案能改回来
可这次和小甲鱼答案思路不太一样(没有他那么秀),不想把自己的思路全部推倒对着答案重来一遍,而且
- while((str1[i++]=getchar())!='\n')
复制代码
我是从小甲鱼那里学来的,难道出了问题吗?还是因为我用的是VC6.0版本问题所以不行。
我也调了好一会,这个j的值老是不正常,后来发现31行最后for();这里多个分号,for循环体根本就进不去啊,
写代码的时候注意;后空几格再写注释,不然你这写在一起很难看
|
|