![](/img/trans.png)
[英]Evaulating the square root of a number greater than 1 upto a certain precision
[英]Elements greater than certain number
我想在数组中找到大于给定数字的元素数。 就像我有以下数组:{ 10, 113, 34, 2, 19, 57} 并且想要查找大于 30 的数字,那么我会得到 3。
这是我的代码
#include <stdio.h>
int main()
{
int array[] = { 10, 113, 34, 2, 19, 57};
int n = sizeof(array) / sizeof(array[0]);
int A = 30;
int l = 0;
int r = n - 1;
int leftGreater = n;
while (l <= r) {
int m = l + (r - l) / 2;
if (array[m] > A) {
leftGreater = m;
r = m - 1;
}
else
l = m + 1;
}
printf("%d",n - leftGreater);
}
但是我得到的是 5 而不是 3。谁能帮我解决这个问题?
一个简单for
循环就足够了:
#include <stdio.h>
int main(void)
{
int array[] = { 10, 113, 34, 2, 19, 57 };
int n = sizeof(array) / sizeof(array[0]);
int x = 30, res = 0;
for (int i = 0; i < n; i++)
{
if (array[i] > x)
{
res++;
}
}
printf("%d\n", res);
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.