私はITのジュニア学生です。プログラムの出力に問題があります。このプログラムの考え方は、関数を使用して 10 個の要素の配列を読み取り、要素の平均を取得してから、最大値と最小値を取得するというものです。最大値と最小値は正しいのですが、平均値は奇妙なものを示しています。コードを確認して、何をすべきか教えてください。または何らかの方法で私を助けてください。
出力は次のとおりです (10 ではなく 11 の数字を要求していることに注意してください。ループ パラメーターを変更して 10 だけを取るようにすると、奇妙なものが表示されます)
enter the group of integers numbers
1
2
3
4
5
6
7
8
9
0
9
1 2 3 4 5 6 7 8 9 0the avg is 3.500000
9
1Press any key to continue . . .
// func-sortarray.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#define size 10
void readarray(int []);
void average(int []);
void printArray(int []);
void max(int []);
void min(int []);
int _tmain(int argc, _TCHAR* argv[])
{
int sarray[size];
readarray(sarray);
printArray(sarray);
average(sarray);
max(sarray);
min(sarray);
return 0;
}
void readarray(int a[])
{
printf("enter the group of integers numbers\n");
for (int i=0; i<=size-1 ;i++)
scanf("%d\n",&a[i]);
}
void average(int a[])
{
int i;
double avg;
double total = 0;
for (i=0; i <= size-1; i++)
{
total = total + a[i];
}
avg = total /size-1;
printf("the avg is %f\n",avg);
}
void printArray(int a[])
{
int j;
for (j = 0; j <= size - 1; j++)
printf( "%2d", a[ j ]);
}
void max(int a[])
{
int ma =a[0];
for (int j=0;j<size-1;j++)
{
if (ma<a[j])
ma=a[j];
}
printf("%d",ma);
}
void min(int a[])
{
int mi =a[0];
for (int j=0;j<size-1;j++)
{
if (mi>a[j])
mi=a[j];
}
printf("\n%d",mi);
}
事前に感謝