问题陈述
给你一个大小为 的整数数组。您需要打印数组元素的总和。
注意:有符号的 32 位整数值使用 bit 来表示数字的符号,其余 31 位表示大小。 32位整数的范围是.当我们将多个整数值相加时,所得总和可能会超出此范围。您可能需要在 C/C++ 中使用long long int
或在 Java 中使用 long 数据类型来存储此类总和。
输入格式
输入的第一行由一个整数组成。接下来的行包含描述数组的空格分隔的整数。
约束
输出格式
输出一个等于数组元素之和的单个值。
示例输入
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;
}
错误描述
输入(标准输入):
5
1000000001 1000000002 1000000003 1000000004 1000000005
您的输出(标准输出):
140692151765426
预期输出:
5000000015
编译器消息:
Wrong Answer
最佳答案
这工作正常:
#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
(无符号)转换
关于c - 简单的 C 程序,未知的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31593153/