今天来做一道比较经典的题目
求最大值,最小值和平均值,常用于信息统计;
以成绩为例:
输入n科成绩(浮点数表示),统计其中的最高分,最低分以及平均分。
数据范围:1≤n≤100 1≤n≤100 , 成绩使用百分制且不可能出现负数
一般要用到数组,选择和循环语句
原理:数组存储数据
通过循环遍历数据
通过选择比较数据求出大小
#include <stdio.h>
int main ()
{
int n;
scanf ("%d",&n); //输入信息个数
float score [100] = {0};//这里我们初始化的数组大小为100
float max = 0.0f;//成绩的最小值为0,把最大值初始化为零方便信息的更替
float min = 100.0f;//同理
float sum = 0.0f;
float avg = 0.0f;
int i ;
for (i = 0;i<n;i++)//循环实现数据的录入
{
scanf ("%f",&score[i]);
sum +=score[i];//求和
avg =sum / n;
if (score[i] > max)
{
max = score[i];//最大值的更替
}
if(score[i] < min)
{
min = score [i];//最小值的更替
}
}
printf ("%.2f %.2f %.2f",max,min,avg);//保留两位小数
}
用函数来实现
#include <stdio.h>
// 函数声明
void readScores(float scores[], int n);
void calculateStats(float scores[], int n, float* max, float* min, float* avg);
int main() {
int n;
scanf("%d", &n);
float score[100] = { 0 };
float max = 0.0f, min = 100.0f, avg = 0.0f;
// 调用函数读取成绩
readScores(score, n);
// 调用函数计算统计数据
calculateStats(score, n, &max, &min, &avg);
// 输出结果
printf("%.2f %.2f %.2f", max, min, avg);
return 0;
}
// 读取成绩的函数
void readScores(float scores[], int n) {
int i;
for (i = 0; i < n; i++) {
scanf("%f", &scores[i]);
}
}
// 计算最大值、最小值和平均值的函数
void calculateStats(float scores[], int n, float* max, float* min, float* avg) {
int i;
float sum = 0.0f;
for (i = 0; i < n; i++) {
sum += scores[i];
if (scores[i] > *max) {
*max = scores[i];
}
if (scores[i] < *min) {
*min = scores[i];
}
}
*avg = sum / n;
}
一定要先申明需要用到的所有函数和成员,不然容易写漏,也方便检查;用函数要注意函数调用的先后顺序和数据录入的顺序,避免产生冲突。同时函数的命名尽量有意义,建议用英文命名,方便他人阅读和改进。
标签:min,int,max,最大值,float,C语言,最小值,scores,avg From: https://blog.csdn.net/qq_74737616/article/details/144311674