我知道这个问题很多次,但我的代码中遇到了不同的问题,我尝试计算2-15之间长整数的总和。
代码:
long array[20];
long NUMBERS;
cout << "How many numbers ? : ";
cin >> NUMBERS;
long sum=0;
for (int i = 0; i < NUMBERS;i++){
cout << "Input number " << (i+1) << " : ";
cin >> array[i];
}
cout << "Calculate Sum" << endl;
for (int i = 0; i < NUMBERS;i++){
sum = sum + array[i];
}
cout << "Sum is : " << sum << endl;
当我输入这三个数字时。
输出
总和是:1370368
但实际答案是:3703627。
我试试这些解决方案 summing-large-numbers和sum-of-alternate-elements-of-integer-array但仍然没有得到正确的解决方案,如果用户输入不同范围的不同号码,我们也可以解决此问题。
答案 0 :(得分:5)
这不是关于编程,而是数学...... 希望这会有所帮助:http://www.wikihow.com/Add-Large-Numbers
(作为一个简单的例子,加1和11.结果是什么?12或21?)
答案 1 :(得分:0)
我的代码将大量数字与字符串相加。 首先,输入要求和的数字数(至25)。 然后输入数字(至180个“每个数字”)。
#include <iostream>
#include <stdlib.h>
using namespace std;
int main (){
int band;
cin >> band;
string string_of_number[25];
for (int i=0; i<band; i++){ //for get all string number
cin >> string_of_number[i];
}
int strings_length[band];
for (int i=0; i<band; i++){ //for get all length of strings
strings_length[i]=string_of_number[i].length();
}
int answer[180];
for(int i=0; i<180; i++){
answer[i]=0;
}
int remaner=0;
int sum=0;
int last=180;
for (int h=0; h<band; h++){ // for sum strings with sum answer one by one
int j=179;
for (int i=strings_length[h]; i>=0; i--){
if(string_of_number[h][i]=='\0'){
i--;
}
sum = (remaner + (string_of_number[h][i]-'0') + answer[j]) %10;
remaner = ((string_of_number[h][i]-'0') + answer[j]) / 10;
answer[j]=sum;
if (i==0 && remaner>0){
j--;
answer[j]+=remaner;
remaner=0;
}
if(last>j)
last=j;
j--;
}
}
for(; last<180; last++){
cout << answer[last];
}
}
答案 2 :(得分:-2)
您的程序似乎假设所有数字都是7位数:
1234567
123456 [0]
12345 [00]