c - 简单的 C 程序,未知的输出

标签 c arrays int long-integer

问题陈述

给你一个大小为 的整数数组。您需要打印数组元素的总和。

注意:有符号的 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/

相关文章:

java - 如何使用Java实现类似数组的数据结构?

c++ - 如何在不使用堆栈或数组的情况下从 int 中提取每个数字? (C++)

php - 使用 php 从数据库中的整数创建并回显一个字符串

c - 为什么不能在 C 中比较结构的 NULLness?

c - 从指针打印?

arrays - 如何检查直线多边形是否相交

c - 将指向设备分配矩阵的指针从 C 返回到 Fortran

php - 使用平面数组获取多维数组值

swift - 我很困惑... 8、16、32 和 64 位格式到底是什么?

objective-c - Objective C 数组和对象释放