输入n科成绩(浮点数表示),统计其中的最高分,最低分以及平均分。
数据范围:
, 成绩使用百分制且不可能出现负数
两行,
第1行,正整数n(1≤n≤100)
第2行,n科成绩(范围0.0~100.0),用空格分隔。
输出一行,三个浮点数,分别表示,最高分,最低分以及平均分(小数点后保留2位),用空格分隔。
5 99.5 100.0 22.0 60.0 88.5
100.00 22.00 74.00
#include <stdio.h>
int main() {
int n;
double sum=0;
scanf("%d",&n);
double arr[n],min,max,average;
for (int i=0;i<n;i++) {
scanf("%lf",&arr[i]);
}
for (int i=0;i<n;i++) {
for (int s=i;s<n;s++){
if (arr[s]>arr[i]) {
double t=arr[i];
arr[i]=arr[s];
arr[s]=t;
}
}
sum+=arr[i];
}
max=arr[0];
min=arr[n-1];
average=1.0*sum/n;
printf("%.2lf %.2lf %.2lf",max,min,average);
return 0;
} #include <stdio.h>
int main()
{
int n=0;
float arr[100]={0};
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%f",&arr[i]);
}
float min=100;
float max=0;
float average=0;
float sum=0;
for(int i=0;i<n;i++)
{
if(arr[i]<min)
{
min=arr[i];
}
if(arr[i]>max)
{
max=arr[i];
}
sum+=arr[i];
}
average=sum/n;
printf("%.2f %.2f %.2f",max,min,average);
return 0;
} #include <stdio.h>
int main() {
int a;
float b,c,d,e,f;
scanf("%d\n ",&a);
scanf("%f %f %f %f %f",&b,&c,&d,&e,&f);
float max= b;
max =(c > max )? c : max;
max =(d > max )? d : max;
max =(e > max )? e : max;
max =(f > max )? f : max;
float min= b;
min = (c < min) ? c :min;
min = (d < min) ? d :min;
min = (e < min) ? e :min;
min = (f < min) ? f :min;
float sum = b + c + d + e + f;
float avg = sum / a;
printf("%.2f %.2f %.2f",max,min,avg);
return 0;
} 从一个初学者的角度来看,难点在于怎么得出最大值与最小值,因为没学到数组,判断,循环,后来想到了三元换算符,只要用第一个初始值挨个去比较,按照条件更新大小就能得出最大值和最小值。嗯。
int main() {
int n;
float arr[5];
float max = 0.0, min = 100.0, sum = 0.0, avg = 0.0;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%f", &arr[i]);
sum += arr[i];
if (arr[i] > max) max = arr[i];
if (arr[i] < min) min = arr[i];
}
avg = sum / (float)n;
printf("%.2f %.2f %.2f", max, min, avg);
return 0;
} #include <stdio.h>
int main() {
int n = 0;
scanf("%d",&n);
float maxs = 0;
float mins = 0;
float sum = 0;
float average = 0;
int i = 1;
float input = 0;
while(i<=n)
{
scanf("%f",&input);
sum += input;
if(i == 1)
{
maxs = input;
mins = input;
}
if(i>1)
{
if(maxs<=input)
{
maxs = input;
}
if(mins>=input)
{
mins = input;
}
}
i++;
}
average = sum/n;
printf("%.2f %.2f %.2f\n",maxs,mins,average);
return 0;
}
纯小白
#include <stdio.h>
int main() {
int a,i=0;
scanf("%d",&a);
float arr[a];
while(i<a)
{
scanf("%f",&arr[i]);
i++;
}
float max,min,sum=arr[0];
max=arr[0];
min=arr[0];
i=i-a;
while(i<a-1)
{
if(arr[i+1]>max)max=arr[i+1];
if(arr[i+1]<min)min=arr[i+1];
sum=sum+arr[i+1];
i++;
}
float b=sum/a;
printf("%.2f %.2f %.2f",max,min,b);
return 0;
}
是bug吧,这一定是bug吧,为什么在这里面数组表达式可以是变量
#include <stdio.h>
float aaa(float arr[], int n)
{
int i = 0;
float max = arr[0];
for (i = 1; i < n; i++)
{
if (max < arr[i])
{
max = arr[i];
}
}
return max;
}
float bbb(float arr[], int n)
{
int i = 0;
float min = arr[0];
for (i = 1; i < n; i++)
{
if (min > arr[i])
{
min = arr[i];
}
}
return min;
}
float ccc(float arr[], int n)
{
int i = 0;
float a = 0;
for (i = 0; i < n; i++)
{
a = a + arr[i];
}
return a/n;
}
int main() {
int n = 0;
scanf("%d\n", &n);
float arr[] = { 0 };
int i = 0;
for (i = 0; i < n; i++)
{
scanf("%f", &arr[i]);
}
printf("%.2lf %.2lf %.2lf", aaa(arr, n), bbb(arr, n), ccc(arr, n));
return 0;
} #include <stdio.h>
int main() {
int a = 0;
float max = 0.0, min = 100.0, sum = 0.0, n = 0.0;
scanf("%d", &a);
for (int i = 0; i < a; i++) {
scanf(" %f", &n);
sum += n;
if (n > max) {
max = n;
}
if (n < min) {
min = n;
}
}
printf("%.2f %.2f %.2f\n",max,min,sum/a);
return 0;
} #include <stdio.h>
int main()
{
int n = 0;
float arr[5] = { 0 };
scanf("%d", &n);
scanf("%f %f %f %f %f", &arr[0], &arr[1], &arr[2], &arr[3], &arr[4]);
if(n >= 0 && n <= 100)
{
;
}
float max = arr[0];
float min = arr[0];
int i = 0;
float average = 0.0f;
for (i = 0; i < 5; i++)
{
if (max < arr[i])
max = arr[i];
if (min > arr[i])
min = arr[i];
average += arr[i];
}
printf("%.2f %.2f %.2f", max, min, average / 5.0f);
return 0;
}