我正在制作一个程序,用于从数组中分离偶数和奇数整数。我给了偶数和奇数数组3个元素但是当没有3个偶数/奇数整数时它打印出一些随机数。有没有办法定义要打印的内容。如果需要,这是代码:
P.S。我找到了问题的解决方案,但它有不同的方法,所以我只是想知道我可以这样做,如果没有,为什么?谢谢!
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
#include <time.h>
int main()
{
int nubmers[3];
int even[3];
int odd[3];
for(int i = 0; i < 3; i++)
{
printf("Enter %d element : ", i);
scanf(" %d", &numbers[i]);
if(numbers[0]%2 == 0)
{
even[0] = numbers[0];
}
else
{
odd[0] = numbers[0];
}
if(nubmers[1]%2 == 0)
{
even[1] = numbers[1];
}
else
{
odd[1] = numbers[1];
}
if(numbers[2]%2 == 0)
{
even[2] = numbers[2];
}
else
{
odd[2] = numbers[2];
}
}
printf("Even : %d\n", even[i]);
printf("Odd : %d\n", odd[i]);
return 0;
}
答案 0 :(得分:2)
在循环内部,你应该使用循环计数器变量i
而不是固定索引0
,1
和2
。
此外,你可以计算偶数和奇数值。
最后,您可以打印偶数值列表和奇数值列表。
int main()
{
int nubmers[3];
int even[3];
int odd[3];
int noEven = 0, noOdd = 0;
for(int i = 0; i < 3; i++)
{
printf("Enter %d element : ", i);
scanf(" %d", &numbers[i]);
if (numbers[i]%2 == 0)
even[noEven++] = numbers[i];
else
odd[noOdd++] = numbers[i];
}
for(int i = 0; i < noEven; i++)
printf("Even : %d\n", even[i]);
for(int i = 0; i < noOdd; i++)
printf("Odd : %d\n", odd[i]);
return 0;
}
答案 1 :(得分:1)
如何显示比数组中少的元素
定义任何“Not-In-Use”值并使用此值初始化数组。
“非使用中”值应该是您明确知道在程序运行期间不需要/使用的任何值。
在您的情况下,您可以采用可能的最小type(d)
,其定义为name
。
int
确保未使用“Not-In-Use”值:
INT_MIN
如果您稍后想要仅检查那些已被使用/触摸过的元素,只需遍历数组,跳过所有等于“Not-In-Use”值的元素。
#include <stdio.h>
#include <limits.h> /* for INT_MIN */
#define NOT_IN_USE INT_MIN
int main(void)
{
...
for (size_t i = 0; i < 3;: ++i)
{
numbers[i] = NOT_IN_USE;
even[i] = NOT_IN_USE;
odd[i] = NOT_IN_USE;
}