首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序来查找两个元素a和b之间的元素数(其中a和b都是包含的)。

程序来查找两个元素a和b之间的元素数(其中a和b都是包含的)。
EN

Stack Overflow用户
提问于 2021-07-30 17:15:54
回答 2查看 5.6K关注 0票数 1

给出一个大小为n的未排序数组,编写一个程序来查找用户定义数组的两个用户定义元素a和b(其中a和b都包含)之间的元素数。

输入: arr = 1、2、2、7、5、4

a=2 b=5

产出:4

(数字是: 2,2,5,4)。

如果是a=6 b=15,则输出为3(数字为: 6、7、15)

我尝试了以下代码,但是对于arr = 1、3、3、9、10、4,对于a=9 & b=12,它显示的是输出:- 2。但是输出应该是3。我无法找到解决这个问题的正确逻辑。

代码语言:javascript
复制
#include <stdio.h>

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

    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++;
            d=0;
        }
        
        if(arr[i]>a && arr[i]<b){
            c++;
        }
    }

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

    return 0;
}

请提出逻辑。我会对此非常感激的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-30 17:32:37

最后一个for循环中的这个语句

代码语言:javascript
复制
d=0;

产生一个逻辑错误。

其中一种方法是声明两个变量,而不是一个变量d

例如

代码语言:javascript
复制
int lower_limit = 0, upper_limit = 0;

然后在for循环中写入

代码语言:javascript
复制
for ( i = 0; i < n; i++ ){ 
    if ( arr[i] >= a && arr[i] <= b ){
        c++;
        lower_limit |= a == arr[i];
        upper_limit != b == arr[i];  
    }
}

c += !lower_limit + !upper_limit;

这是一个演示程序。

代码语言:javascript
复制
#include <stdio.h>

int main(void) 
{
    int arr1[] = { 1, 2, 2, 7, 5, 4 };
    size_t n = sizeof( arr1 ) / sizeof( *arr1 );
    
    int a = 2, b = 5;
    
    size_t count = 0;
    int lower_limit = 0, upper_limit = 0;
    
    for ( size_t i = 0; i < n; i++ )
    {
        if ( a <= arr1[i] && arr1[i] <= b )
        {
            ++count;
            lower_limit |= arr1[i] == a;
            upper_limit |= arr1[i] == b;
        }
    }
    
    count += !lower_limit + !upper_limit;
    
    printf( "Number of elements between %d and %d is %zu\nv", a, b, count );
    
    a = 6; b = 15;
    
    count = 0;
    lower_limit = 0; upper_limit = 0;
    
    for ( size_t i = 0; i < n; i++ )
    {
        if ( a <= arr1[i] && arr1[i] <= b )
        {
            ++count;
            lower_limit |= arr1[i] == a;
            upper_limit |= arr1[i] == b;
        }
    }
    
    count += !lower_limit + !upper_limit;
    
    printf( "Number of elements between %d and %d is %zu\n", a, b, count );
    
    return 0;
}

程序输出是

代码语言:javascript
复制
Number of elements between 2 and 5 is 4
Number of elements between 6 and 15 is 3
票数 1
EN

Stack Overflow用户

发布于 2022-05-05 11:58:44

代码语言:javascript
复制
numbers in 'array' greater than num1 and less than num2. solution :- 

function arrbtn(num1, num2, arr) {
    let newarr = [];
    for(i = 0; i < arr.length; i++) {
            if(num1 <arr[i] && num2 > arr[i]) {
        newarr.push(arr[i]); 
        }
    }
    return newarr;
}
console.log(arrbtn(3, 8, [1, 5, 95, 0, 4, 7]))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68594798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档