【问题标题】:alternate the elements of an array from the first one to next and print the alternated array [closed]将数组的元素从第一个元素交替到下一个元素并打印交替的数组[关闭]
【发布时间】:2017-01-05 16:51:41
【问题描述】:

我的任务是创建一个程序:

  1. 用户输入数组中元素的大小。
  2. 用户自己输入元素。
  3. 计算第一个元素 + 2nd 的总和,而不是 1st + 2nd + 3rd 等...
  4. 用新值替换数组并打印出来。

例如: - 用户输入:[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]);
}

【问题讨论】:

  • 那有什么问题?
  • 他们的问题是他们没有阅读有关如何使用该网站的教程
  • 所以你的新数组的每个元素都需要是所有元素的总和,直到你的旧数组的相应位置......你不需要添加两个以上的元素吗?那些?还是保持一个累计?

标签: c arrays function


【解决方案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 );

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

【讨论】:

  • 是的,这应该适用。
  • 我的错,我不需要打印到新数组,我需要用新值替换现有数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多