gpt4 book ai didi

c - 如何操作数组?

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:02 28 4
gpt4 key购买 nike

我有一个数组

arr[]={7,5,-8,3,4};

我必须更新同一个数组到

arr[]={7,12,4,7,11};

我的代码:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>

int sumArr(int *arr, int size);

void main()
{

int arr[] = { 7,5,-8,3,4 };
int i, size, res = 0;

printf("Enter Size Of The Array:");
scanf("%d", &size);

res = sumArr(arr, size);

for (i = 0; i < size; i++)
{
printf("%d\n", res);
}

}


int sumArr(int *arr, int size)
{

int i;

for (i = 0; i < size; i++)
{
arr[i+1]+= arr[i];

printf(" %d \n", arr[i + 1]);
}

return arr[i+1];
}

输出应该是:7,12,4,7,11但在我的代码中,输出是:12,4,7,11,-858993449,58196502,58196502,58196502,58196502,58196502

有什么提示吗?我可以对输入和输出数组使用辅助函数,会有帮助吗?

最佳答案

你的代码有几个错误:

  • 一旦 i+1 到达数组末尾,您就需要停止求和循环
  • 您的代码知道大小;没有必要从最终用户那里读取它
  • 你需要打印一次res的值,而不是循环打印
  • 您应该考虑将程序的打印部分从 sumArray 移动到 main

修改非常简单:

int sumArr(int *arr, int size) {
// Stop when i+1 reaches size; no printing
for (int i = 0; i+1 < size; i++) {
arr[i+1]+= arr[i];
}
return arr[size-1];
}

main 中打印:

printf("sum=%d\n", res);
for (int i = 0; i < size; i++) {
printf("arr[%d] = %d\n", i, arr[i]);
}

Demo.

关于c - 如何操作数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51851023/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com