gpt4 book ai didi

C 程序没有打印正确的总和

转载 作者:太空狗 更新时间:2023-10-29 16:10:55 24 4
gpt4 key购买 nike

c 程序没有打印正确的总和。我每次都尝试不同的数字,甚至尝试在每次迭代时使用变量将索引值存储在数组中。

#include <stdio.h>
#include <malloc.h>

//find sum using pointers

int find_sum(int *a,int n) {
int sum=0;
int i;
for (i=0; i<n; i++){
sum=sum + *(a+i);
}

printf("sum= %i",sum);
}

int main(){
int n;
printf("Enter length of array: ");
scanf("%i",&n);

int *a=(int *)malloc(n*sizeof(int));
int i;
for (i=0; i<n; i++){
printf("Enter %i numbers",n);
int b=*(a+i);//used to store the value at that index.
scanf("%i",&b);
}

find_sum(a,n);
return 0;
}

输出结果是:

Enter length of array: 3Enter 3 numbers1Enter 3 numbers2Enter 3 numbers3sum= 0

最佳答案

考虑这一行:

int b=*(a+i);  //used to store the value at that index. 

这会创建一个名为 b 的新本地 int,它现在包含 a+i 中的内容(即此时未知)。

然后您将本地 int 替换为用户输入的内容:

scanf("%i",&b);

但是您永远不会返回并更新a

我可能会建议:

int b;//used to store the value at that index. 
scanf("%i",&b);
*(a+i) = b;

例如

int main() {
int n;
printf("Enter length of array: ");
scanf("%i",&n);

int *a=(int *)malloc(n*sizeof(int));
int i;
for (i=0; i<n; i++) {
printf("Enter number %i: ",n);
int b;
scanf("%i", &b);
*(a+i) = b;
}

find_sum(a, n);

free(a); // if you malloc, don't forget to `free`

return 0;
}

或者,如果你不想处理 mallocfree(它们很容易引入内存错误),你可以只使用数组:

int main() {
int n;
printf("Enter length of array: ");
scanf("%i", &n);

int a[n];
int i;
for (i=0; i<n; i++) {
printf("Enter number %i: ", n);
scanf("%i", &a[i]);
}

find_sum(a, n);
return 0;
}

关于C 程序没有打印正确的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37495761/

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