【发布时间】:2021-10-06 05:24:38
【问题描述】:
给定一个大小为 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. 我想不出正确的逻辑来解决这个问题。
#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;
}
请提出逻辑。我将非常感谢。
【问题讨论】:
-
为什么要将
[1, 3, 3, 9, 10, 4]与9和12作为限制打印3? 9 到 12(含)之间只有 2 个数字。不过,您可以简化代码。您只需要:if(arr[i]>=a && arr[i]<=b) ++c;在您的for循环中。 -
特别处理元素等于限制的情况有什么意义?
d是什么意思?您的示例是否正确也不清楚。在您的最后一个示例中,只有两个元素(9 和 10)符合条件。 -
欢迎来到堆栈溢出。我认为问题陈述要求包含范围内的 element 值的数量,并且如果没有元素具有该值 weird,则期望计算范围边界。我认为这是单独处理下限和上限的结果,因为数组中可能存在任何一个 - 也可能不存在。
标签: arrays c for-loop range counting