这是问的原始问题: 1.用户最多可输入20个数字,这些数字将存储在一个数组中。写入函数将作为输入并返回最小值,最大值和平均值。使用这些函数计算数组的最小值,最大值和平均值。
这是我所拥有的,但我不知道为什么它不起作用,有什么建议吗?
#include <stdio.h>
void arrmin(int a[],int num_elements);
void arrmax(int a[], int num_elements);
void arraver(int a[],int num_elements);
int main(void)
{
int a[20],c,min,max;
float avg;
printf("Enter 20 numbers of elements in array\n");
for (c = 0; c < 20; c++)
scanf("%d", &a[c]);
min=max=a[0];
arrmax(a,a[20]);
printf("Maximum value is %d\n", max);
arrmin(a,a[20]);
printf("Minimum value is %d\n", a[20]);
arraver(a,a[20]);
printf("Average value is %f\n", a[20]);
getch();
}
void arrmax(int a[], int num_elements)
{
int i, max;
for (i=0; i<num_elements; i++)
{
if (a[i]>max)
{
max=a[i];
}
}
return(max);
}
void arrmin(int a[], int num_elements)
{
int i, min;
for (i=0; i<num_elements; i++)
{
if (a[i]<min)
{
min=a[i];
}
}
return(min);
}
void arraver(int a[], int num_elements)
{ int sum,i;
float avg;
sum=0;
avg=0;
for (i=0; i<num_elements;i++)
{
sum=sum+a[i];
avg=(float)sum/(i+1);
}
return(avg);
}
答案 0 :(得分:0)
你的逻辑看起来很不错,但有一些小问题。固定代码在答案的底部给出。
<强>的问题:强>
将20
传递给arrmax
,arrmin
和arraver
arrmax(a,a[20]);
变为arrmax(a, 20)
。您可能希望arr...
函数返回int
或float
而不是void
void arrmax(...)
变为int arrmax(...)
void arraver(...)
变为float arraver(...)
请务必实际使用函数返回的值
arrmax(a,20);
变为max = arrmax(a, 20);
等。请务必在各自的功能中初始化max
和min
个变量。
max = a[0];
min = a[0];
min
和aver
打印机应打印min
和aver
而不是a[20]
。
printf("Min is %d\n", a[20]);
变为printf("Min is %d\n", min);
printf("Average is %f\n", a[20]);
变为printf("Average is %f\n", aver);
固定代码:
#include <stdio.h>
int arrmin(int a[],int num_elements);
int arrmax(int a[], int num_elements);
float arraver(int a[],int num_elements);
int main(void)
{
int a[20],c,min,max;
float avg;
printf("Enter 20 numbers of elements in array\n");
for (c = 0; c < 20; c++)
scanf("%d", &a[c]);
max = arrmax(a,20);
printf("Maximum value is %d\n", max);
min = arrmin(a,20);
printf("Minimum value is %d\n", min);
avg = arraver(a,20);
printf("Average value is %f\n", avg);
getch();
}
int arrmax(int a[], int num_elements)
{
int i, max;
max = a[0];
for (i=1; i<num_elements; i++)
{
if (a[i]>max)
{
max=a[i];
}
}
return(max);
}
int arrmin(int a[], int num_elements)
{
int i, min;
min = a[0];
for (i=1; i<num_elements; i++)
{
if (a[i]<min)
{
min=a[i];
}
}
return(min);
}
float arraver(int a[], int num_elements)
{
int sum,i;
float avg;
sum=0;
avg=0;
for (i=0; i<num_elements;i++)
{
sum=sum+a[i];
avg=(float)sum/(i+1);
}
return(avg);
}