C++,输出的结果为什么是问号和笑脸?

#include<iostream>#include<cctype>usingnamespacestd;intmain(){charcount[26]={0};chars... #include<iostream>
#include<cctype>
using namespace std;
int main(){
char count[26]={0};
char str[100];
cin.getline(str,100);
for(int i=0;str[i]!='\0';++i){
if(isalpha(str[i])){
if(isupper(str[i])){
str[i]=tolower(str[i]);
}
++count[str[i]-'a'];
}
}
for(int i=0;i<26;++i){
if(count[i]!=0){
cout<<str[i]<<":"<<count[i]<<endl;
}
}
return 0;
}

本意是交你求一个字符串里各个字母出现的次数并输出。
展开
 我来答
solotony
2014-03-27 · TA获得超过599个赞
知道小有建树答主
回答量:700
采纳率:0%
帮助的人:572万
展开全部
输出时类型不对,构造成对应的字符和数值类型。
cout<< char('a' + i) <<":"<< int(count[i]) <<endl;
追问
这样子改前面输出的还是问号,后面的是对了。
追答
你都改到了吗,前面char('a' + i) ,后面int(count[i])
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
2014-03-27 · TA获得超过8609个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3464万
展开全部
#include <iostream>
#include <cctype>
using namespace std;
int main() {
int count[26] = {0};
char str[100];
int i;
cin.getline(str,100);
for(i = 0; str[i]; ++i) {
if(str[i] >= 'a' && str[i] <= 'z')
++count[str[i] - 'a'];
else if(str[i] >= 'A' && str[i] <= 'Z')
++count[str[i] - 'A'];
}
for(i = 0;i < 26;++i) {
if(count[i] != 0)
cout << (char)(i + 'a') << ": " << count[i] << endl;
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kongcup
2014-03-27 · TA获得超过442个赞
知道小有建树答主
回答量:149
采纳率:62%
帮助的人:82.2万
展开全部
在count[i]前加(int)强制转换一下
修改后:
cout<<str[i]<<":"<<(int)count[i]<<endl;

您的输出是有bug的:
应该为:
for(int i=0;i<26;++i){
if(count[i]>0){
cout<<(char)(i + 'a')<<":"<<(int)count[i]<<endl;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bai404844226
2014-03-27 · TA获得超过282个赞
知道小有建树答主
回答量:235
采纳率:0%
帮助的人:125万
展开全部
char count[26]={0}; 这一句改成int count[26]={0};就是数字了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式