成绩统计(函数的应用)
有10个同学的某科考试成绩存入s数组,求他们的平均分,并对成绩由高到低排序。
分析:
1.数据结构设计
数据如何存放,是要考虑的第一个问题。10个数据要存入计算机中,需要存入有10个元素的一维数组中,程序主要就是对这个数组操作。
2.总体设计
该程序要完成的任务稍微有点多,我们可以将其划分成三个函数实现,average()函数实现求10个同学的平均分,sort()函数完成10个同学成绩的排序,main()函数完成数据的定义、输入,并调用average()函数求出平均分,调用sort()函数完成排序。
/* Note:Your choice is C IDE */
#include "stdio.h"
//输入
void input(int a[10]){
int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
}
//冒泡排序
void choose(int a[10]){
int i,j,temp;
for(i=1;i<10;i++)
{
for(j=9;j>=i;j--)
{
if(a[j]<a[j-1]){
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
}
//输出
void output(int a[10]){
int i;
for(i=0;i<10;i++)
printf("%d\t",a[i]);
}
void main()
{
int a[10];
//输入
input(a);
//冒泡排序
choose(a);
//输出
output(a);
}
定义相应的函数,将所有成绩相加后除以人数即可
float average(float *a,int n)
{
float sum = 0;
for(int i=0;i<n;i++)
sum += a[i];
return sum/n;
}
void sort(float *a,int n)
{
int i,j;
float k;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(a[j] < a[j+1])
{
k = a[j];
a[j] = a[j+1];
a[j+1] = k;
}
}
}
void main()
{
float a[10];
printf("请输入10个成绩:");
int i;
for(i=0;i<10;i++)
scanf("%f",&a[i]);
sor(a,10);
float avg = average(a,10);
for(i=0;i<10;i++)
printf("%g ",a[i]);
printf("\n平均分:%.1f",avg);
}