c++ - 将逗号格式化为长整型

标签 c++ integer long-integer long-long

这是我第一次发布问题。我希望在一项非常古老的计算机科学作业上得到一些帮助,但我一直没有时间完成它。我不再上课了,只是想看看如何解决这个问题。

读入一个整数(任何有效的 64 位 integer = long long类型)并输出相同的数字,但插入逗号。

如果用户输入 -1234567890,您的程序应该输出 -1,234,567,890。 Comm作为 应该出现在每三个有效数字之后(如果剩余更多数字)开始 从小数点开始,向左移动到更重要的数字。如果数 输入不需要逗号,不要添加任何。例如,如果输入是 234 你 应该输出 234。输入 0 应该产生输出 0。请注意上面的示例 该数字可以是正数或负数。您的输出必须保持大小写 输入。

我对编程还比较陌生,这就是我所能想到的:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
  long long n;
  cout << "Enter an integer:" << endl;

    cin >> n;

        int ones = n % 10;
        int tens = n / 10 % 10;
        int hund = n / 100 % 10;
        int thous = n / 1000 % 10;
        int tthous = n / 10000 % 10;

    cout << tthous << thous << "," << hund << tens << ones << endl;

  return 0;
}

最初的作业禁止使用字符串、数组和 vector ,所以请不要给出涉及这些的建议/解决方案。 我知道可能需要某种 for 循环才能在必要的位置正确插入逗号,但我只是不知道如何着手实现这一点。

提前感谢所有提供帮助的人!

最佳答案

为了让您了解如何解决这个问题,我已经完成了一个简单的实现。请记住,这只是一个简单的示例:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
  long long n = -1234567890;

  if ( n < 0 )
    cout << '-';

  n = abs(n);

  for (long long i = 1000000000000; i > 0; i /= 1000) {
    if ( n / i <= 0 ) continue;
    cout << n / i ;
    n = n - ( n / i) * i;
    if ( n > 0 )
       cout << ',';
  }

  return 0;
}

http://coliru.stacked-crooked.com/a/150f75db89c46e99

关于c++ - 将逗号格式化为长整型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58071775/

相关文章:

c++ - popen()如何工作以及如何在Linux上将其实现为C++代码?

c++ - 如何在 C++ 中隐藏类的某些字段

C++ 从源生成器生成文件 - 有这样的吗?

c++ - 如何使用 BOOST_MPL_ASSERT

python - 可迭代的长对象?

c++ - 我无法理解使用 C/C++ 的 codility PermMissingElem 错误

Python - 迭代整数列表

java - 如何从计算机上的文件中打印和删除整数

c++ - 在 C/C++ 中不可能否定 -2147483648?

java - 将日期插入sqllite时将字符串日期转换为long的原因是什么?