C语言 成绩统计(函数的应用)

成绩统计(函数的应用)

有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);
}