#include <iostream>
using namespace std;
int main()
{
long int number;
int digits;
cout << "Enter Number: ";
cin >> number;
int counter[10] = { 0,0,0,0,0,0,0,0,0,0 };
while (number != 0) {
digits = number % 10;
counter[digits] = counter[digits] + 1;
number = number / 10;
}
for (int i = 0; i<10; i++) {
if (counter[i] != 0) {
cout << i << ": " << counter[i] << endl;
}
}
return 0;
system("pause");
}我的代码有一个问题,当我运行它并输入一个数字时,实际上什么都没有发生。它应该运行类似于1234556789的代码,输出应该类似于1:9 2:8 3:7 4:6 5:5
我知道有时如果没有系统暂停,就会发生这种情况,它会运行部分代码并结束,但我不确定这里出了什么问题。
发布于 2018-02-26 00:19:59
#include <iostream>
using namespace std;
int main()
{
long int number;
int digits;
cout << "Enter Number: ";
cin >> number;
int counter[10]={0},a=0;
while (number != 0) {
digits = number % 10;
counter[a] = digits; //made changes to this line
number = number / 10;
++a;
}
for (int i = 0; i<10; i++) {
if (counter[i] != 0) {
cout << i << ": " << counter[i] << endl;
}
}
return 0;
}发布于 2018-02-26 00:24:28
您现在要做的就是打印数字中每个数字0-9的位数。如果您想将元素配对在一起,那么可以使用std::vector和迭代器。输入的位数可以是偶数,也可以是奇数,您必须考虑到这两种情况。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
long int number;
cout << "Enter Number: ";
cin >> number;
vector<int> digits;
if (number == 0)
{
digits.push_back(number);
}
while (number != 0)
{
digits.push_back(number % 10);
number /= 10;
}
auto it_begin = digits.begin();
auto it_end = digits.end() - 1;
if (digits.size() % 2 == 1)
{
for (; it_end != it_begin; ++it_begin, --it_end)
{
cout << *it_end << ": " << *it_begin << endl;
}
cout << *it_end << endl;
}
else
{
for (; it_begin < it_end; ++it_begin, --it_end)
{
cout << *it_end << ": " << *it_begin << endl;
}
}
}当number = 1234556789时,输出为:
1: 9
2: 8
3: 7
4: 6
5: 5发布于 2018-02-26 00:38:35
如果你想要前10个不。仅使用此代码
包括使用命名空间标准;int main() {long int number;cout << "Enter Number:";cin >> number;for (int i= 1;i<=10;i++) {cout << I << ":"<
https://stackoverflow.com/questions/48975468
复制相似问题