#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);
}
偶数计算似乎有效,但当涉及奇数时,它给出了错误的答案。请帮忙 我们的老师希望我们使用循环或迭代。没有数组。请帮助我
最佳答案
首先,您的 C 代码需要一些修正:
- 使用前至少给出
getn
的原型(prototype) getn
被定义为返回int
并且不返回任何内容。将int
替换为void
或返回一个值。
第二,
- 您的代码计算十个数字的乘积,如果该乘积太大,则无法按原样存储在
int
中。例如,如果您输入十次数字 3,结果是 59049,但是如果您输入十次数字 23,它会回答 1551643729,这是错误的,因为 23^10=41426511213649 但不能存储在int
。这称为算术溢出。 - 你的平均值很糟糕,因为你对 int 求和,但平均值(一般来说)是一个有理数(average(2,3)=2.5 不是吗?)。所以
double avg = out/10.0;
(意味着计算 float 除法)和printf("Average %f\n",avg);
会更好。
关于c - 偶数的平均值和所有奇数的乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47830637/