将数组的元素从第一个元素交替到下一个元素并打印交替的数组

时间:2017-01-05 16:51:41

标签: c arrays function

我坚持创建一个程序:

  1. 用户输入数组中elemnet的大小。
  2. 用户自己输入元素。
  3. 计算第一个元素+第二个的总和,而不是第一个+第二个+第三个等...
  4. 使用新值替换数组并打印它。
  5. 例如: - 用户输入:[7,5,-8,3,4] - 输出:[7,12,4,7,11]

    我的代码尝试这样做,但没有达到正确的结果,我认为我的数组算法有问题。有人可以帮忙吗?

    前4位数字的输出遍布地图:12,-3,-5 ....

    int main () {
    
        int *arr;
        int i, n;
    
        printf("Please enter the size of the array : ");
        scanf("%d", &n);
    
        arr = (int*)malloc(n*sizeof(int));
    
        for (i=0; i<n; i++)
        {
            printf("Please enter array values: ");
            scanf("%d", &arr[i]);
        }
    
        printf("The alternated array is: \n");
    
        for (i=0; i<n; i++)
            printf("%d ", arr[i]+arr[i+1]);
    }
    

1 个答案:

答案 0 :(得分:1)

现在您需要做的就是以下

int *arr2 = malloc( n * sizeof( int ) );

int sum = 0;
for ( i = 0; i < n; i++ )
{
   sum += arr[i];
   arr2[i] = sum;
} 

依此类推。:)

在填充第二个数组后,您可以按照与第一个数组相同的方式输出它。

至于这个循环

for (i=0; i<n; i++)
    printf("%d ", arr[i]+arr[i+1]);

然后它没有意义

printf("The new array is: \n");

新数组在哪里?:))

此外还尝试访问数组之外​​的内存。

在程序结束时写

free( arr );
free( arr2 );

考虑到您需要将程序拆分为函数。