You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言统计数组中介于a、b(包含两端)的元素个数及代码问题解决

错误分析

你代码的核心问题出在两个地方:

  1. 额外新增的d变量逻辑完全错误:你默认给d赋值为2,相当于不管数组里有没有a、b这两个元素,都要额外加上2个计数,仅当数组中出现a或b时才会把d置为0,这个逻辑和需求完全不符。
  2. 判断条件冗余:不需要拆分「等于上下限」「在上下限中间」两种情况,直接用一个范围判断就能覆盖所有包含上下限的场景。

正确实现

统计逻辑非常简单:遍历数组的每一个元素,只要元素满足>=a 且 <=b就给计数器加1即可,修正后的代码如下:

#include <stdio.h>

int main()
{
    int n,i,a,b,c=0;

    printf("Enter size of array: ");
    scanf("%d",&n);
    
    printf("Enter elements of array: ");
    int arr[n];
    
    for(i=0;i<n;i++){
        scanf("%d",&arr[i]);
    }
 
    printf("\nEnter lower limit element & upper limit element respectively: ");
    scanf("%d %d",&a,&b);

    for(i=0;i<n;i++){ 
        // 单个判断覆盖所有包含上下限的符合条件的情况
        if(arr[i] >= a && arr[i] <= b){
            c++;
        }
    }

    printf("Number of elements in between two elements (Both Inclusive) = %d",c);

    return 0;
}

用你给出的测试用例验证:

  • 测试用例arr = [1, 3, 3, 9, 10, 4]、a=9、b=12,符合条件的元素是9、10,输出为2,如果你预期输出是3,请检查你给出的测试用例数组是否有笔误(比如末尾元素是12而不是4)。

内容的提问来源于stack exchange,提问作者gokoci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 04:51:03