-1 c loops for-loop undefined-behavior variable-length-array
问题如下:
使用以写入 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;
}
Run Code Online (Sandbox Code Playgroud)
具有零个元素的数组的声明
int i=0,num[i],sum,even,odd;
Run Code Online (Sandbox Code Playgroud)
调用未定义的行为。
实际上没有任何理由使用数组来完成此任务。
您还需要初始化变量 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 );
}
Run Code Online (Sandbox Code Playgroud)
如果要使用数组,那么您需要声明一个具有固定数量元素的数组并限制输入数量。或者您需要分配和重新分配动态分配的数组。但这会使您的程序因冗余代码而变得更加复杂。
归档时间: |
|
查看次数: |
300 次 |
最近记录: |