这段代码有什么问题?使用Array输出C中整数的最小值,最大值和平均值的程序

时间:2013-09-12 10:08:57

标签: c

/*C program that outputs minimum, maximum and average of integers*/

#include <stdio.h>
#include <conio.h>

void main()
{
int i,a[5],min,max;
float avg;
printf("\n Enter any number : ");
scanf("%d",&a[0]);
max=a[0];
min=a[0];
avg=0;
for(i=1; i++;)
{
printf("\n Enter any0 Number : ");
scanf("%d",&a[i]);
if(a[i]>max)
{
max=a[i];
}
else
{
min=a[i];
}
avg=avg+a[i];

}

avg=avg/5;

printf("\n The minimum number is %d",min);
printf("\n The maximum number is %d",max);
printf("\n The average is %f",avg);

getch();

}

它应该询问用户5次,但它没有:(? 输出应该像......这个

输出:

输入数字:4 输入数字:6 输入数字:7 输入数字:20 输入数字:1

最低为1。 最高为20。 平均值是7.6。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

你的for循环错误

for(i=1; i++;)

这应该是

for(i=1;i<5; i++) //because you already scanned a[0].. you need to scan till a[4]    

use avg=a[0]; instead of avg=0; 

in for loop you need to write use if (a[i]<min) instead of else

修改后的代码

#include <stdio.h>

void main()
{
        int i,a[5],min,max;
        float avg;
        printf("\n Enter any number : ");
        scanf("%d",&a[0]);
        max=a[0];
        min=a[0];
        avg=a[0];

        for(i=1;i<5;i++)
                {
                printf("\n Enter any0 Number : ");
                scanf("%d",&a[i]);
                if(a[i]>max)
                max=a[i];
                if( a[i]< min )
                min=a[i];

                avg=avg+a[i];

                }

                avg=avg/5;

printf("\n%d ,%d, %f\n",min,max,avg);
}

答案 1 :(得分:0)

for(i = 1; i ++;)应更改为

for(i=1; i<5; i++)

else {min = a [i];应该改为

if (a[i] < min)
{
    min=a[i];
}

答案 2 :(得分:0)

你有其他答案中提到的错误的for循环条件。

此外,您应该修复在for-loop中分配给min变量的条件。现在这是不正确的。

此外,您在开头设置avg = 0是错误的。它应该是avg = a[0],因为一个元素的平均值等于该元素的值。