一、問題呈現
1.問題描述
Problem Description
本題要求編寫程序,根據輸入學生的成績,統計並輸出學生的平均成績、最高成績和最低成績。
2.輸入輸出
Input
輸入第一行首先給出一個正整數N,表示學生的個數。接下來一行給出N個學生的成績,數字間以空格分隔。
Output
按照以下格式輸出:
average = 平均成績
max = 最高成績
min = 最低成績
結果均保留兩位小數
3.測試樣例
樣例1
Sample Input
5
80 90 100 90 80
Sample Output
average = 88.00
max = 100.00
min = 80.00
樣例2
Sample Input
5
80 90 100 70 80
Sample Output
average = 84.00
max = 100.00
min = 70.00
二、源碼實現(+注釋)
//編碼及注釋:Code_流蘇
//定義頭文件
#include<stdio.h>
#include<stdlib.h>
//f函數 用於實現最大值和最小值的遍歷查找
double f(int *a,int n,int m)
{
int i;
//定義index整型變量 並初始化為0 用於存儲最大值和最小值下標索引
int index=0;
//循環遍歷 查找最大值和最小值
for(i=1;i<n;i++)
{
if(m==1)
{
if(a[i]>=a[index]) index=i; //查找最大值
}
else
{
if(a[i]<=a[index]) index=i;//查找最小值
}
}
//返回浮點值
return a[index]/1.0;
}
//主函數
int main()
{
//定義變量N用於存儲及輸入學生人數
int N;
//定義數組 用於 存儲 循環遍歷
int arr[10005];
printf("請輸入學生人數:");
scanf("%d",&N);
int i;
//定義sum用於存儲求和之后的值
int sum=0;
printf("請輸入這些學生的成績:");
//循環遍歷求和
for(i=0;i<N;i++)
{
scanf("%d",&arr[i]);
sum+=arr[i];
}
//輸出平均數
printf("average = %.2lf\n",sum/(double)N);
//輸出最大值
printf("max = %.2lf\n",f(arr,N,1));
//輸出最小值
printf("min = %.2lf\n",f(arr,N,2));
//返回0,代表程序執行結束
return 0;
}