如何使用 switch 语句查找数字中数字的频率?
How to find the frequency of digits in a number using a switch statement?
对于我的计算机科学大学介绍 class,我们必须编写一个程序来输出给定整数中数字的频率。例如,如果数字为 124243294,则输出为:
Number Frequency
1 1
2 3
3 1
4 2
9 1
您必须使用switch语句来获取数字的频率。
你可以这样做:
int number;
std::cin >> number;
std::string s = std::to_string(number);
int freq[10] = {};
for(char ch : s)
{
switch (ch)
{
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
freq[ch - '0']++;
break;
}
}
std::cout << "Number Frequency\n";
for(int i = 0; i < 10; ++i)
{
if (freq[i] != 0)
std::cout << std::setw(7) << std::left << i << freq[i] << "\n";
}
但是,为什么必须使用 switch
?我会改用 std::(unordered_)map
,例如:
int number;
std::cin >> number;
std::string s = std::to_string(number);
std::map<char, int> freq;
for(char ch : s) {
freq[ch]++;
}
std::cout << "Number Frequency\n";
for(auto &elem : freq) {
std::cout << std::setw(7) << std::left << elem.first << elem.second << "\n";
}
对于我的计算机科学大学介绍 class,我们必须编写一个程序来输出给定整数中数字的频率。例如,如果数字为 124243294,则输出为:
Number Frequency
1 1
2 3
3 1
4 2
9 1
您必须使用switch语句来获取数字的频率。
你可以这样做:
int number;
std::cin >> number;
std::string s = std::to_string(number);
int freq[10] = {};
for(char ch : s)
{
switch (ch)
{
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
freq[ch - '0']++;
break;
}
}
std::cout << "Number Frequency\n";
for(int i = 0; i < 10; ++i)
{
if (freq[i] != 0)
std::cout << std::setw(7) << std::left << i << freq[i] << "\n";
}
但是,为什么必须使用 switch
?我会改用 std::(unordered_)map
,例如:
int number;
std::cin >> number;
std::string s = std::to_string(number);
std::map<char, int> freq;
for(char ch : s) {
freq[ch]++;
}
std::cout << "Number Frequency\n";
for(auto &elem : freq) {
std::cout << std::setw(7) << std::left << elem.first << elem.second << "\n";
}