【问题标题】:Find how many positive numbers there are in my array找出我的数组中有多少个正数
【发布时间】:2017-10-24 16:04:43
【问题描述】:

如何找出我的代码中有多少个正数?我得到错误的输出,请详细解释我的错误在哪里。我希望获得所需的确切输出。如果我将6 输入为n,那么我将插入六个数字,输出将显示我插入了多少个正数。

#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>

int main() {
    int n;
    scanf("%d",&n);
    int arr[n];
    int i;
    int p = 0;
    int arr_i;
    for (arr_i = 0; arr_i < n; arr_i++) {
        scanf("%d",&arr[arr_i]);
    }
    for (i = 0; i < n; i++) {
        int arr_index=i;
        if (arr[arr_index] > 0) {
            p++;
        }
        printf("%d",p);
    }

    return 0;
}

【问题讨论】:

  • 欢迎来到 Stack Overflow!当问题陈述只是“它不起作用”时,很难提供解决方案。请edit您的问题更完整地描述您预期会发生什么以及这与实际结果有何不同。请参阅 How to Ask 以获取有关什么是好的解释的提示。
  • 请详细说明“错误的输出”。编辑您的问题以显示该输入的实际输入、实际输出和预期输出。
  • 不需要arr_index - 您可以使用i 访问arr 的元素,例如arr[i]
  • 你应该在循环之后打印p,而不是在里面,并在格式字符串的末尾添加一个换行符
  • 你甚至不需要一个数组来解决这个问题。您可以在输入数字时轻松检查它们是否小于零,并相应地计算“非”情况。如果您只关心有多少是非负数,则无需保留任何数字。只需在它们进入时数数,并在完成后打印最终结果。

标签: c arrays


【解决方案1】:

试试这个: 只需在 for 循环之外打印 p

#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>

int main() {
    int n;
    scanf("%d",&n);
    int arr[n];
    int i;
    int p = 0;
    int arr_i;
    for (arr_i = 0; arr_i < n; arr_i++) 
    {
        scanf("%d",&arr[arr_i]);
    }
    for (i = 0; i < n; i++) 
    {
        int arr_index=i;
        if (arr[arr_index] > 0) 
        {
            p++;
        }
    }
            printf("%d",p);

    return 0;
}

【讨论】:

    【解决方案2】:

    你不需要使用 malloc 分配动态内存 - 希望这会有所帮助

    #include <stdio.h>
    
    #include <stdlib.h>
    
    
    int main() {
    char c;
    int n;
    scanf("%d", &n);
    int * arr;
    int i;
    int p = 0;
    arr = (int *)malloc(n * sizeof(int));
        for (i = 0; i < n; i++)
        {
            scanf("%d", &arr[i]);
            if (arr[i] > 0)
            {
                p++;
    }
    }
    
    
    printf(" %d", p);
    
    return 0;
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多