我正在尝试计算特定区域中数字的频率 0 <=数字<16,87 <=数字<100。
我试图在循环内使用if块并尝试增加 main(){int sum = 0;}
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int a[5]={0};
int i,n,sum=0;
srand(time(NULL));
for(i=1;i<=50;i++)
{
n=1+rand() % 100;
a[n/20]++;
}
for(i=0;i<5;i++)
{
if(0<=a[i]<=16){
sum++;
}
} printf("%d",sum);
}
我应该在输出中得到不同的数字,但输出始终是相同的数字“ 5”
答案 0 :(得分:3)
if(0<=a[i]<=16){
不是正确的表达。由于(0 <= a [I])将始终为true(1)或false(0),因此始终为true。这两个值均小于16。您想要这样的东西:
if ((a[i] >= 0) && (a[i] <= 16))
顺便说一句,请务必注意编译器警告。在这种情况下,它可以准确地告诉我问题出在哪里。