如何使用数组打印 10 位大数字的反转?
Posted
技术标签:
【中文标题】如何使用数组打印 10 位大数字的反转?【英文标题】:how can i print reverse of a big 10 digit number by using arrays? 【发布时间】:2021-04-23 12:40:57 【问题描述】:我一直在尝试编写一个函数来打印最大 10 位数字的 reveres 版本使用数组...但这里的问题是我的代码无法打印反向一个大的 10 位数字(如 9999999999 或 9784562312)正确...我不知道问题出在哪里! 有人有意见吗? (对不起,如果我有语法错误,我不是母语人士)
这里是代码:
int main()
const int size = 10;
int number, revers;
cin >> number;
revers = inverse( number, size );
cout<<revers;
int inverse( int n, int size)
int sum=0, array[size]=0, i=0;
for( i=0 ; n>=1 ; i++ )
array[i] = n % 10;
n /= 10;
int l=i;
i--;
for(int j=0 ; j<l ; j++, i--)
sum += pow(10,i)*array[j];
return sum;
【问题讨论】:
int
的范围是 -2147483648
到 2147483647
-- 如果需要有符号值,请使用较大的类型,例如 uint64_t
或 int64_t
。
std::string
是一个数组。
您不需要数组。 (并且你不应该使用 pow
处理整数问题。)
我也写了没有数组,但我只是想知道为什么它不能这样工作..
【参考方案1】:
您应该使用类似unsigned long long
而不是int
,因为该值超过了最大 int 类型。
【讨论】:
【参考方案2】:您可以只使用标准库提供的可用函数。 std::string
数据类型是一个数组,如果你坚持的话:
#include <cstdint>
#include <string>
#include <algorithm>
#include <iostream>
void printr(std::uint64_t x)
std::string s = std::to_string(x);
std::reverse(std::begin(s),std::end(s));
std::cout << s;
【讨论】:
以上是关于如何使用数组打印 10 位大数字的反转?的主要内容,如果未能解决你的问题,请参考以下文章