分奇偶有点搞不明白,这是计算有问题还是程序有问题

img


这明明应该是两个奇数两个偶数,可程序显示1和3

img

但这样又是对的
请问是哪里出问题了

应该把循环里的 scanf_s 写在 if判断后面
否则第一次输入的那个不会参与计数

【以下回答由 GPT 生成】

问题出现在程序中使用了sizeof(numbers)/sizeof(numbers[0])来计算数组的长度。这并不是一个可靠的方法来获得数组的长度,因为数组作为函数参数或以其他方式传递时会被转换为指针。在这种情况下,sizeof(numbers)将返回整个数组的字节数,而不是数组的元素个数。

为了解决这个问题,你可以使用一个额外的变量来跟踪数组的长度,或者将数组的长度作为常量写入代码。

以下是修正后的代码:

#include <stdio.h>

int main() {
    int numbers[] = {1, 2, 3, 4};
    int length = sizeof(numbers)/sizeof(numbers[0]);
    int evenCount = 0;
    int oddCount = 0;

    for (int i = 0; i < length; i++) {
        if (numbers[i] % 2 == 0) {
            evenCount++;
        } else {
            oddCount++;
        }
    }

    printf("奇数个数:%d\n", oddCount);
    printf("偶数个数:%d\n", evenCount);

    return 0;
}

这样修改后,程序应该能够正确计算奇偶数的个数。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^