马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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循环体根本就进不去啊,
写代码的时候注意;后空几格再写注释,不然你这写在一起很难看
|