我习惯于java,尽管知道理论,但仍然在努力克服C ++的基本语法。我有一个函数试图计算字符串中出现的次数,但输出是一个奇怪的选项卡。
这是我的代码:
#include <cstdlib>
#include <iostream>
#include <cstring>
/*
main
* Start
* prompt user to enter string
* call function
* stop
*
* count
* start
* loop chars
* count charts
* print result
* stop
*/
using namespace std;
void count(const char s[], int counts[]);
int main(int argc, char** argv) {
int counts[26];
char s[80];
//Enter a string of characters
cout << "Enter a string: "; // i.e. any phrase
cin.getline(s,80);
cout << "You entered " << s << endl;
count(s,counts);
//display the results
for (int i = 0; i < 26; i++)
if (counts[i] > 0)
cout << (char)(i + 'a') << ": " << counts[i] << "Times " << endl;
return 0;
}
void count(const char s[], int counts[]){
for (int i = 0; i < strlen(s); i++)
{
char c = tolower(s[i]);
if (isalpha(c))
counts[c - 'a']++;
}
}
这是输出:
输入字符串:Dylan
你进入了迪伦
b:1次
c:1Times
d:2次
f:1次
h:1次
i:1229148993Times
j:73次
l:2次
n:2次
p:1Times
r:1Times
v:1Times
您可以给予我任何帮助将不胜感激。尽管这很简单,但我还是个傻瓜。 -_-
答案 0 :(得分:2)
您的counts
未初始化。您需要先将所有元素设置为0。
答案 1 :(得分:2)
您需要将计数向量归零。
尝试
counts[26]={0};
答案 2 :(得分:1)
我不了解java,但你必须在C / C ++中初始化你的变量。这是您的代码:
#include <cstdlib>
#include <iostream>
#include <cstring>
using namespace std;
void count(const char s[], int counts[]){
for (int i = 0; i < strlen(s); i++)
{
char c = tolower(s[i]);
if (isalpha(c))
counts[c - 'a']++;
}
}
int main(int argc, char** argv) {
int counts[26];
char s[80];
//Enter a string of characters
cout << "Enter a string: "; // i.e. any phrase
cin.getline(s,80);
for(int i=0; i<26; i++)
counts[i]=0;
cout << "You entered " << s << endl;
count(s,counts);
//display the results
for (int i = 0; i < 26; i++)
if (counts[i] > 0)
cout << (char)(i + 'a') << ": " << counts[i] << "Times " << endl;
return 0;
}