我已经测试了多种解决此错误的方法,但是找不到解决方案。在应该查找所有(4.6,9.7)循环之外的数字的位置添加了一条注释。语法可能有错误吗?
int main()
{
int i,n;
float pom=0;
printf("vnesi broj na elementi na nizata\n");
scanf("%d",&n);
float arr1[n], arr2[n];
printf("vnesi elementi \n");
for(i=0;i<n;i++)
{
scanf("%f",&arr1[i]);
}
pom =((arr1[0]+arr1[n-1])/2);
int k = 0;
for(i=0;i<n;i++)
{
if(arr1[i]<=4.6 && arr1[i]>=9.7) // the problem lies here
{
arr2[k]=arr1[i];
k++;
printf("%f", arr1[i]);
}
}
printf("\n elementi od prva niza: \n");
for(i=0; i<n; i++)
{
printf("%.2f ", arr1[i]);
}
printf("\n\n elementi od vtora niza: \n");
for(i=0; i<k; i++)
{
printf("%f", arr2[i]); // is not printing the array
}
}
答案 0 :(得分:4)
if(arr1 [i] <= 4.6 && arr1 [i]> = 9.7)//问题出在这里
完全正确。一个数字如何既小于或等于4.6 又大于或等于9.7?它可以小于或等于4.6 ,或者大于或等于9.7。所以你的情况总是假的。
解决方案:
将&&
替换为||