我一直在玩一些代码,尝试一些东西,我想制作一个程序,可以接收任意数量(或至少 100 位)的数字,然后将它们相加,但令我沮丧的是,它由于某种原因只显示 10,我不确定为什么。我已经尝试了很多东西,但没有帮助。
我试过改变向量的大小,将 int 变成 long long int,或者尝试从互联网上尝试一些东西,但没有任何帮助。
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main()
{
vector<long long int> number;
long long int av;
cin >> av;
for (int i = 0; i != 342; i++) {
double fool = pow(10, i);
int lol = int(fool);
long long kik = (av / lol);
int c = kik % 10;
if (c > 0)
number.push_back(c);
}
int hah = 0;
for (int j = number.size() - 1; j >= 0; j--) {
if (number[j] > 0) {
cout << number[j] << endl;
hah = hah + number[j];
}
}
cout << hah << endl;
}
你想读入一个非常大的数字,然后把它的组成数字相加。我认为你在这里有一个XY问题。没有任何类型可以容纳具有数百位数字的 int。这是一个大数字。
而是使用一个字符串,然后迭代它的数字,将它们转换为非常小的整数,然后对它们求和。
例如
#include <iostream>
#include <cctype>
#include <string>
int main() {
std::string in;
std::getline(std::cin, in);
unsigned int sum = 0;
for (auto c : in) {
if (!std::isdigit(c)) {
std::cerr << "Non-digit char encountered." << std::endl;
return 1;
}
sum += c - '0';
}
std::cout << "Sum is " << sum << std::endl;
return 0;
}