我正在尝试创建一个程序来计算提供的数组中偶数的数量。当我现在运行程序时,它将返回数组中的数字量,但不会返回偶数的数量。由于某种原因,我的count_even函数不起作用。有人可以帮忙吗?
#include <stdio.h>
int main()
{
int data_array_1[] = { 1, 3, 5, 7, 9, 11 };
int data_array_2[] = { 2, -4, 6, -8, 10, -12, 14, -16 };
int data_array_3[] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
int data_array_4[] = { 6, 2, 4, 5, 1, -9 };
int data_array_5[] = { 1, 3, 9, 23, 5, -2, 4 };
int result_1 = count_even(data_array_1, 6);
printf("data_array_1 has %d even numbers.\n", result_1);
int result_2 = count_even(data_array_2, 8);
printf("data_array_2 has %d even numbers.\n", result_2);
int result_3 = count_even(data_array_3, 11);
printf("data_array_3 has %d even numbers.\n", result_3);
int result_4 = count_even(data_array_4, 6);
printf("data_array_4 has %d even numbers.\n", result_4);
int result_5 = count_even(data_array_5, 7);
printf("data_array_5 has %d even numbers.\n", result_5);
return 0;
}
int count_even(int* data_array, int size)
{
int even_num = 0;
for (int i = 0; i == size; i++)
{
if (data_array[size] % 2 == 0)
{
even_num++;
}
}
return even_num;
}
答案 0 :(得分:2)
for循环中的条件错误。 正确的条件应该是&#34;只要索引小于&#34;,但你的是&#34;只要索引等于&#34;。
条件应为i < size
。
至于结果,它似乎应该返回0(对于非工作代码),而不是size
。
此外,当您使用size
时,您使用i
作为索引。
答案 1 :(得分:0)
在你的count_even函数中,你使用size属性作为数组索引,当它应该是i
int count_even(int* data_array, int size)
{
int even_num = 0
for(int i = 0; i <= size, ++i)
{
if(data_array[i] % 2 == 0)
{
even_num++;
}
}
return even_num;
}
答案 2 :(得分:0)
这两行是代码中问题的根源:
for (int i = 0; i == size; i++)
{
if (data_array[size] % 2 == 0)
for()
语句应该是:
for (int i = 0; i < size; i++)
所以循环在到达数组末尾时退出
if()
语句总是查看数组末尾之外的相同条目,这是未定义的行为
if()
语句应为:
if (data_array[i] % 2 == 0)
但是,模数运算符&
不是负数
更好的选择是:
if ( !(data_array[i] & 1 ) )