【问题标题】:why output is 0 here. i am a newbie (20 days experience)为什么这里的输出为 0。我是新手(20天经验)
【发布时间】:2022-01-05 09:08:46
【问题描述】:

*我想在 sum_of_elements 函数中复制输入的数组作为参数,然后对数组的所有元素求和,但我得到的输出是 0。

#include <stdio.h>

int i, num, sum;
int sum_of_elements(int arr[]) {
  for (i = 0; i < num; i++) {
    for (i = 0; sum = 0, i < num; i++) {
      sum += arr[i];
    }
    return sum;
  }
}
int main() {
  printf("enter number of digits you want to add\n");
  scanf("%d", & num);

  int arr[num];

  for (i = 0; i < num; i++) {
    printf("enter number %d\n", i + 1);
    scanf("%d", & arr[i]);
  }
  int total = sum_of_elements(arr);
  printf("%d", total);

  return 0;

【问题讨论】:

  • 因为您在每次迭代后设置sum = 0。 (另外,外循环也没用)
  • 除了@CherryDT 的评论之外,最好将isum 局部变量传递给sum_of_elements 函数并将num 作为函数参数传递。不要使用全局变量,直到你明白什么时候这样做才方便。

标签: arrays c function sum arguments


【解决方案1】:

看这行代码:

for (i = 0; sum = 0, i < num; i++) {

这会将sum 重置为 0每个循环

应该是

for (i = 0, sum = 0; i < num; i++) {

但这样做可能会更好:

sum = 0;
for (i = 0; i < num; i++) {

【讨论】:

    【解决方案2】:

    问题在于 sum_of_elements 函数中的双 for 循环。

    删除多余的 for 循环,解决了错误。

    #include <stdio.h>
    
    int i, num, sum;
    int sum_of_elements(int arr[]) {
        for (i = 0; i < num; i++) {
            sum += arr[i];
        }
        return sum;
    }
    int main() {
        
        
          printf("enter number of digits you want to add\n");
          scanf("%d", & num);
        
          int arr[num];
        
          for (i = 0; i < num; i++) {
            printf("enter number %d\n", i + 1);
            scanf("%d", &arr[i]);
          }
          int total = sum_of_elements(arr);
          printf("%d", total);
        
          return 0;
    }
    

    【讨论】:

    • 你在 for 循环之前没有做 sum=0。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    相关资源
    最近更新 更多