繁体   English   中英

C 循环程序以零结束,计数未知

[英]C program for loop ended with a zero with unkown count

问题如下:

使用以写入 0 结尾的 for 循环,计算偶数和、奇数和,

我不知道为什么我的代码不起作用:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int i = 0, num[i], sum, even, odd;
        
    for (;;) {
        printf("Write a number: ");
        scanf("%d", &num[i]);
        if (num[i] == 0) {
            break;
        }
        if (num[i] % 2 == 0) {
            even += num[i];
        } else
            odd += num[i];
            i++;
        }
       
        printf("Sum of even is: %d\n", even);
        printf("Sum of odd is: %d", odd);
        return 0;
    }

零元素数组的声明

int i=0,num[i],sum,even,odd;

调用未定义的行为。

实际上,没有任何理由为此任务使用数组。

您还需要初始化偶数和奇数变量。 也不使用变量 sum 。

该程序可以通过以下方式查找示例

#include <stdio.h>

int main( void ) 
{
    int even = 0, odd = 0;

    while ( 1 )
    {
        printf( "Enter a number (0 - stop): " );

        int num;

        if ( scanf( "%d", &num ) != 1 || num == 0 ) break;

        if (num % 2 == 0)
        {
            even += num;
        }
        else 
        {
            odd += num;
        }
    }

    printf( "Sum of even is: %d\n", even );
    printf( "Sum of odd is: %d", odd );
}

如果您要使用数组,那么您需要声明一个具有固定数量元素的数组并限制输入数量。 或者您需要分配和重新分配一个动态分配的数组。 但这会使您的程序变得更加复杂,并带有冗余代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM