【问题标题】:Average of Even Numbers and Product of all Odd Numbers偶数的平均值和所有奇数的乘积
【发布时间】:2017-12-15 10:43:26
【问题描述】:
#include <stdio.h>
#include <conio.h>

int getn(int n, int i);

int main()
{
    int n, i;

    getn(n, i);

    getch();
    return 0;
}
int getn(int n, int i)
{
    int even = 0;
    int odd = 1;
    int avg;

    printf("Enter ten integers: \n");
    for (i = 1 ; i <= 10 ; i++)
    {
        printf("Integer %d: ", i);
        scanf("%d", &n);
        if ( n % 2 == 0 )
        {
            even = even + n;
        }
        else
        {
            odd = odd * n;
        }
    }
    avg = even / 10;
    printf("\n\nAverage of even numbers: %d", avg);
    printf("\nProduct of odd numbers: %d", odd);
}

似乎偶数计算有效,但当涉及到奇数时,它给出了错误的答案。请帮忙 我们的讲师希望我们使用循环或迭代。没有数组。请帮帮我

【问题讨论】:

  • 格式化和缩进对编译器来说并不重要,但对于试图阅读代码的人来说却很重要。请编辑您的问题,使其更具可读性。
  • 如果 avg 的结果是小数怎么办? int -> float,想想这个
  • 为什么要将ni 传递给getn?它们只是在getn 中用作局部变量,在main 中未定义。
  • 确保数字的乘积适合 int。或者尝试使用 long 或 float
  • 你得到了什么,与你的预期相比? codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question

标签: c integer average product


【解决方案1】:

首先,您的 C 代码需要更正:

  1. 至少在使用前给出getn的原型
  2. getn 被定义为返回 int 并且不返回任何内容。将int 替换为void 或返回一个值。

第二,

  1. 你的代码计算十个数字的乘积,如果这个乘积太大,它不能按原样存储在int 中。例如,输入十次数字 3 效果很好,结果是 59049,但如果输入十次数字 23,它会回答 1551643729,这是错误的,因为 23^10=41426511213649 但不能存储在int。这称为算术溢出
  2. 您的平均值很差,因为您对ints 求和,但平均值(通常)是一个有理数(平均值(2,3)=2.5,不是吗?)。所以double avg = out/10.0;(表示计算浮点除法)和printf("Average %f\n",avg);会更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 2019-06-13
    相关资源
    最近更新 更多