Enter number of integers to be stored : 5
Enter 5 integers:
1 2 3 4 5
There are 2 even numbers in the set. There are 3 odd numbers in the set.
Even numbers:
2 4
Odd numbers:
1 3 5
Output:
Sum of Odd Numbers is 51 Sum of Even Numbers is 6 -------------------------------- Process exited after 3.389 seconds with return value 0 Press any key to continue . . .
This is the code:
#includeint main() { int N, n; printf("Enter number of integers to be stored : "); scanf("%d", &N); int count[N]; printf("\nEnter %d integers: \n", N); for(int n=0;n 我的程序怎么了?我已经尝试了所有我知道的:(奇数值给出了奇怪的结果。
1> Lightness Ra..:这是您计算偶数之和的部分,它起作用:
if(count[n]%2==0) { even_lister[i]=count[n]; sumEven+=even_lister[i]; }现在,这里是您计算奇数之和的部分,而不是:
else //OddSummation { int odd_lister[i], sumOdd, i=0; odd_lister[i]=count[n]; sumOdd+=odd_lister[i]; }你看得到差别吗?第二个中有额外的一行。在不起作用的版本中,您重新声明了一些局部变量,并将值分配给了这些局部变量。这就是为什么它不起作用。您没有对更高范围的“原始”变量进行任何操作,随后将其打印到屏幕上。
此外,这两部分实际上打破,因为你永远不初始化要么
sumEven
或sumOdd
到0
,所以它们的值是不确定的,而你加入未定值创建其他未定值。此错误是否产生可观察到的症状是不确定的。另一个问题是您这样声明数组:
int even_lister[i];但是
i
是您设置0
且从未更改过的变量。因此,这些数组的长度为零,对它们的每次访问都是非法的。也许您打算n
改用?您确实需要打开编译器警告并更仔细地阅读代码。