热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

PrograminCisshowingawrongresult,OddNumber

如何解决《PrograminCisshowingawrongresult,OddNumber》经验,为你挑选了1个好方法。

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:

#include 

int 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];

    }

你看得到差别吗?第二个中有额外的一行。在不起作用的版本中,您重新声明了一些局部变量,并将值分配给了这些局部变量。这就是为什么它不起作用。您没有对更高范围的“原始”变量进行任何操作,随后将其打印到屏幕上。

此外,这两部分实际上打破,因为你永远不初始化要么sumEvensumOdd0,所以它们的值是不确定的,而你加入未定值创建其他未定值。此错误是否产生可观察到的症状是不确定的。

另一个问题是您这样声明数组:

int even_lister[i];

但是i是您设置0且从未更改过的变量。因此,这些数组的长度为零,对它们的每次访问都是非法的。也许您打算n改用?

您确实需要打开编译器警告并更仔细地阅读代码。


推荐阅读
author-avatar
虔州小小编_590
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有