c++,我写了一个程序,不知道为什么输出值永远都是0,2。各位大大,求解答啊~~~

#include<cstdlib>#include<iostream>usingnamespacestd;intmain(){chara[100];intb[26]={0... #include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
char a[100];
int b[26]={0};
int i,j,t,c,l;
int max,min;
printf("Please input a word\n");
scanf("%s",a);
l=strlen(a);
for(c=0;c<l;c++)
switch(a[c])
{
case 'a':b[0]++;break;
case 'b':b[1]++;break;
case 'c':b[2]++;break;
case 'd':b[3]++;break;
case 'e':b[4]++;break;
case 'f':b[5]++;break;
case 'g':b[6]++;break;
case 'h':b[7]++;break;
case 'i':b[8]++;break;
case 'j':b[9]++;break;
case 'k':b[10]++;break;
case 'l':b[11]++;break;
case 'm':b[12]++;break;
case 'n':b[13]++;break;
case 'o':b[14]++;break;
case 'p':b[15]++;break;
case 'q':b[16]++;break;
case 'r':b[17]++;break;
case 's':b[18]++;break;
case 't':b[19]++;break;
case 'u':b[20]++;break;
case 'v':b[21]++;break;
case 'w':b[22]++;break;
case 'x':b[23]++;break;
case 'y':b[24]++;break;
case 'z':b[25]++;break;
}

for(i=0;i<26;i++){
for(j=1;j<26;j++)
if(b[i]>b[j])
{
b[i]=t;
b[i]=b[j];
t=b[j];
}}
max==b[25];
min==b[0];
printf("%d\n",max);
printf("%d\n",min);
system("PAUSE");
return 0;
}
展开
 我来答
angzel
2011-10-05
知道答主
回答量:35
采纳率:0%
帮助的人:22.2万
展开全部
if(b[i]>b[j])
{
b[i]=t;
b[i]=b[j];
t=b[j];
}
这个是我见过的最经典排序交换,好好看看!!!

max==b[25];
min==b[0];
这个是赋值吗

还有 同意一楼的回答 >O_O<
追问
饿。。。
求原谅啊~~~咱是新手~~~
是不是把他改成{
t=b[i]
b[i]=b[j];
b[j]=t;
}
max=b[25];
min=b[0];
啊。。
追答
那些case 我不知道 你是用什么样的耐心写下来的 写得多 效率还不高
改成
if (islower(a[c]) b[a[c] - 'a']++; // 这样多简洁

要求输出这个单词出现次数最多的字母的出现次数,和出现最少的字母的出现次数
后面求max 和min的时候 不要用排序 没有必要

max = min = b[0];
for( char ic = 1; ic b[ic] ? max : b[ic];
min = min < b[ic] ? min : b[ic];
}
4y5ji4
2011-10-05 · TA获得超过131个赞
知道小有建树答主
回答量:532
采纳率:0%
帮助的人:155万
展开全部
你想干什么?这程序错的一塌糊涂,o(>﹏<)o!
追问
就是输入1个单词,都是小写字母,要求输出这个单词出现次数最多的字母的出现次数,和出现最少的字母的出现次数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b24d8a85d
2011-10-05 · TA获得超过101个赞
知道答主
回答量:77
采纳率:100%
帮助的人:64.5万
展开全部
scanf("%s",a); a前面加&
追问
a是一个数组名啊,数组名不就代表了他的地址吗?。。
追答
哈哈,我错了,没细看 -_-!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-10-05
展开全部
char a[100];
int b[26]={0};
int i,j,t,c,l;
int max,min;
printf("Please input a word\n");
scanf("%s",a);
l=strlen(a);
for(c=0;c<l;c++)
b[a[c]-97]++;
for(i=0;i<26;i++)
for(j=i+1;j<26;j++)
if(b[i]>b[j])
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
max=b[25];
min=b[0];
printf("%d\n",max);
printf("%d\n",min);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式