首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用模数10将Array[10]与While循环一起递增,以将用户输入配对在一起

使用模数10将Array[10]与While循环一起递增,以将用户输入配对在一起
EN

Stack Overflow用户
提问于 2018-02-26 00:00:25
回答 3查看 52关注 0票数 0
代码语言:javascript
复制
#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

我知道有时如果没有系统暂停,就会发生这种情况,它会运行部分代码并结束,但我不确定这里出了什么问题。

EN

回答 3

Stack Overflow用户

发布于 2018-02-26 00:19:59

代码语言:javascript
复制
#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;

}
票数 0
EN

Stack Overflow用户

发布于 2018-02-26 00:24:28

您现在要做的就是打印数字中每个数字0-9的位数。如果您想将元素配对在一起,那么可以使用std::vector和迭代器。输入的位数可以是偶数,也可以是奇数,您必须考虑到这两种情况。

代码语言:javascript
复制
#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时,输出为:

代码语言:javascript
复制
1: 9
2: 8
3: 7
4: 6
5: 5
票数 0
EN

Stack Overflow用户

发布于 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 << ":"<

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48975468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档