您将获得一个大小为整数的数组。您需要打印数组元素的总和。
注意:带符号的32位整数值使用位来表示数字的符号,使用剩余的31位来表示幅度。 32位整数的范围是。当我们添加几个整数值时,结果总和可能会超出此范围。您可能需要在C / C ++中使用long long int
或在Java中使用长数据类型来存储此类总和。
输入的第一行包含一个整数。下一行包含描述数组的空格分隔整数。
输出一个等于数组元素总和的值。
5
1000000001 1000000002 1000000003 1000000004 1000000005`
5000000015
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n,i;
scanf("%d",&n);
long int a[5],sum;
for(i=0;i<=n-1;i++){
scanf("%ld %ld %ld %ld %ld",&a[1],&a[2],&a[3],&a[4],&a[5]);
}
for(i=0;i<=n-1;i++){
sum = sum + a[i];
}
printf("%ld",sum);
return 0;
}
输入(stdin):
5
1000000001 1000000002 1000000003 1000000004 1000000005
您的输出(标准输出):
140692151765426
预期产出:
5000000015
编译器消息:
Wrong Answer
答案 0 :(得分:3)
这很好用:
#include <inttypes.h>
int main()
{
int n,i;
scanf("%d",&n);
unsigned long long int a[5];
unsigned long long int sum=0;
for(i=0;i<n;i++)
{
scanf("%llu",&a[i]);
}
for(i=0;i<n;i++)
{
printf("%llu\n",sum);
sum = sum + a[i];
}
printf("\nSum is : %llu",sum);
return 0;
}
将ll
long-long修饰符与u
(无符号)转换一起使用
答案 1 :(得分:2)
这里基本上不需要数组。刚
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
long long int a, sum = 0;
while (n--) {
scanf("%lld", &a);
sum += a;
}
printf("%lld", sum);
return 0;
}
答案 2 :(得分:1)
该计划有以下问题:
数组索引错误:数组大小为5,从0开始,只能使用[4],但对于scanf(),它会尝试读取值为&amp; a [5]。< / p>
当您使用硬编码索引a [1],a [2]等时,不使用for循环。相反,下面的代码将更好地获得输入,如下所示:
for (i = 0; i < n; i++ ) {
scanf("%ld",&a[i]);
}
总和包括:sum = sum + a [i];
当i = 0时 - &gt; a [0]将具有垃圾值,因为当从[1]开始扫描时,不从用户获取输入。由于数组未初始化,因此它是未初始化的自动变量,它可能会有垃圾值,这些垃圾值将被添加到总和中。
sum本身也没有初始化,因此它将包含垃圾值并且首次添加:sum = sum + a [0];这个垃圾值将被添加。
希望这可以回答您对意外输出的疑问。
答案 3 :(得分:0)
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n,i;
cin >> n;
long long int s=0;
long int a[10];
if(n>=1 && n<=10)
{
for(i=0;i<n;i++)
{
cin>>a[i];
s=s+a[i];
}
}
cout<<s;
return 0;
}
答案 4 :(得分:-1)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n,i;
scanf("%d",&n);
long int a[10];
long long sum=0;
for(i=0;i<=n-1;i++){
scanf("%ld",&a[i]);
}
for(i=0;i<=n-1;i++){
sum = sum + a[i];
}
printf("%ld",sum);
return 0;
}