输入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
//思路:
// 1.用一个float数组a[100]来存储输入的各个科目成绩,
// 2.再定义一个指针变量保存数组的首地址,
// 3.再通过输入科目数n的值,用一个for循环按顺序存到数组里;
// 4.如何找出最大值和最小值:用冒泡排序;
// 5.如何求出平均值:遍历数组累加值在除以科目数n.
int main()
{
int n=0;
int i=0;
float a[100]={0};
float * p=&a;
float max=0;
float min=0;
float ave=0;
scanf("%d",&n);
for(i=0;i<n;i++)//将科目成绩存到数组里
{
scanf("%f",p);//注意,这里数组p就是数组的首地址,不用取地址&
p++;
}
//接下来用冒泡排序找出最大值和最小值,只需要一趟,比较n-1次就行
//冒泡:有两种方式,
// 1.将最小的先冒出来
// 2.将最大的先冒出来
max=a[0];//将max设为第一个元素
min=a[0];//将min设为第一个元素
for(i=0;i<n-1;i++)
{
if(a[i]<=a[i+1])
{
max=max<=a[i+1]?a[i+1]:max;//比较两个数的最大值,再和max比较,找出最大值存到max里
min=min<=a[i]?min:a[i];//比较上一轮的最小值和这一轮的最小值两个数的最小值,找出最小值
}
else
{ max=max>a[i]?max:a[i];
min=a[i+1]<min?a[i+1]:min;
}
// ave=ave+*p++;//这种写法错了,在之前P指针已经指向最后一个元素了
ave+=a[i];
}
ave=(ave+a[n-1])/n;
printf("%.2f %.2f %.2f",max,min,ave);
return 0;
#include <stdio.h>
int main()
{
int n, i;
double max = 0,min = 100, sum = 0;
double a[105];
scanf("%d", &n);
for(i=0;i<n;i++)
{
scanf("%lf", &a[i]);
if(a[i]>max)
max = a[i];
if(a[i]<min)
min = a[i];
sum+=a[i];
}
printf("%.2lf %.2lf %.2lf", max, min, sum/n);
return 0;
} #include <stdio.h>
int main() {
int num;
scanf("%d",&num);
float arr[num];
for(int i=0;i<num;i++){
scanf("%f",&arr[i]);
}
float max=0.00;
float min=100.00;
float sum=0.00;
for(int j=0;j<num;j++){
if(arr[j]>max){
max=arr[j];
}
if(arr[j]<min){
min=arr[j];
}
sum+=arr[j];
}
printf("%.2f %.2f %.2f",max,min,sum/num);
return 0;
} #include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, n;
float *score;
float max, min, aver;
while (scanf("%d", &n) != EOF && (n >= 1 && n <= 100))
{
score = (float *)malloc(n * sizeof(float));
if (NULL == score)
{
fprintf(stderr, "Memory allocation failed!\n");
exit(EXIT_FAILURE);
}
for (i = 0; i < n; i++)
{
scanf("%f", &score[i]);
}
max = min = aver = score[0];
for (i = 1; i < n; i++)
{
max = max < score[i] ? score[i] : max;
min = min > score[i] ? score[i] : min;
aver += score[i];
}
aver /= n;
printf("%.2f %.2f %.2f\n", max, min, aver);
free(score);
score = NULL;
}
return 0;
} //简单但是要注意内存分配的问题;#include <stdio.h>
int main()
{
float min = 0.0f;
float max = 0.0f;
float ave = 0.0f;
float score = 0.0f;
int n = 0;
int i = 0;
scanf("%d", &n);
scanf("%f", &score);
min = score;
max = score;
ave += score;
i = n;
while(--i)
{
scanf("%f", &score);
min = min < score ? min : score;
max = max > score ? max : score;
ave += score;
}
ave /= n;
printf("%.2f %.2f %.2f\n", max, min, ave);
return 0;
} #include <stdio.h>
int main() {
double n,score,max,sum=0.0;
double min=100.0;
scanf("%lf",&n);
getchar();
for(int i=0;i<n;i++)
{
scanf("%lf",&score);
sum+=score;
if(score>max)
{
max=score;
}
if(score<min)
{
min=score;
}
}
printf("%.2lf %.2lf %.2lf",max,min,sum/n);
return 0;
} #include <stdio.h>
void bubble_sort(double *arr, int len);
int main(void)
{
int subject = 0;
double sum = 0;
scanf("%d", &subject); // The length of array
double subject_score[subject]; // Initialize the array
for (int i = 0; i < subject; i++)
{
scanf("%lf", &subject_score[i]);
sum += subject_score[i];
}
bubble_sort(subject_score, subject);
printf("%.2lf %.2lf %.2lf\n", subject_score[0], subject_score[subject - 1], sum / subject);
return 0;
}
// @brief bubble sort(from min to max)
void bubble_sort(double *arr, int len)
{
double temp_val = 0;
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
temp_val = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp_val;
}
}
}
}
#include <stdio.h>
int main()
{
float max = 0;
float min = 999;
float sum = 0;
int n = 0;
scanf("%d", &n);
while (n--)
{
float a;
scanf("%f", &a);
//总和
sum += a;
//最大值
if (max < a)
max = a;
//最小值
if (min > a)
min = a;
}
//输出
printf("%.2f %.2f %.2f", max, min, sum / 5.0);
return 0;
} #include<iostream>
#include<iomanip>
using namespace std;
int main(){
int a;
float max, min, agv, total, temp;
cin >> a;
cin >> temp;
min = temp;
max = temp;
total = temp;
for (int i = 0; i < a-1; i++){
cin >> temp;
total += temp;
if (temp > max)
max = temp;
if (temp < min)
min = temp;
}
agv = total / a;
cout << fixed << setprecision(2) << max << ' ' << min << ' ' << agv << endl;
return 0;
} #include<stdio.h>
int main()
{
int j,i,n,t;
scanf("%d\n",&n);
float a[100],average,sum=0;
for(i=1;i<=n;i++)
scanf("%f ",&a[i]);
for(i=1;i<=n-1;i++)
for(j=1;j<=n-i;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=1;i<=n;i++)
{
sum=sum+a[i];
}
average=sum/n;
printf("%.2f %.2f %.2f",a[n-1],a[0],average);
return 0;
}