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;
}
本意是交你求一个字符串里各个字母出现的次数并输出。 展开
#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;
}
本意是交你求一个字符串里各个字母出现的次数并输出。 展开
4个回答
展开全部
输出时类型不对,构造成对应的字符和数值类型。
cout<< char('a' + i) <<":"<< int(count[i]) <<endl;
cout<< char('a' + i) <<":"<< int(count[i]) <<endl;
追问
这样子改前面输出的还是问号,后面的是对了。
追答
你都改到了吗,前面char('a' + i) ,后面int(count[i])
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在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;
}
}
修改后:
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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char count[26]={0}; 这一句改成int count[26]={0};就是数字了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询