《C语言及程序设计》实践项目——动态数组 ->【项目2-动态数组排序】

来源:互联网 发布:数据分析师需要考证吗 编辑:程序博客网 时间:2024/06/05 03:52

2017-04-30


编一个程序,输入某班某门课的成绩,进行排序后输出。成绩可能为小数。班级人数不定,要求采用动态数组完成。


//项目2-动态数组排序#include<stdio.h>#include<malloc.h>//数组打印函数void Print(float *x, int N){    int i, j;    for(i=0, j=1; i<N; i++, j++)    {        printf("student %d = %.2f\n", j, x[i]);    }    printf("\n");}//冒泡排序函数void Bubble_Sort(float *x, int N){    int i, j;    float t=0;    for(i=0; i<N-1; i++)    {        for(j=0; j<N-1-i; j++)        {            if(x[j] > x[j+1])            {                t = x[j];                x[j] = x[j+1];                x[j+1] = t;            }        }    }}//判断数据的大小顺序void Judgment_order(float *x, int N){    int i, flag=0;    for(i=0; i<N; i++)    {        if(x[i] > x[i+1])//判断数据是否从小到大排序顺序            flag = 1;    }    if(1==flag)//如果原始数据不是从小到大排序。则进行排序操作    {        Bubble_Sort(x, N);//调用冒泡排序函数        printf("after:\n");        printf("排序后的成绩\n");        Print(x, N);//输出排序后的成绩    }    if(0==flag)//如果原始数据是从小到大排序。则直接输出原始数据    {        printf("排序后的成绩\n");        Print(x, N);//输出排序后的成绩    }}int main(){    int count, i,j;    float *pf = NULL;    //输入班级人数    printf("输入班级人数:\n");    scanf("%d", &count);    //分配空间,用动态数组存储全班同学成绩    pf = (float *)malloc(count * sizeof(float));    //输入同学们的成绩    printf("输入同学们的成绩:\n");    for(i=0, j=1; i<count; i++, j++)    {        printf("学生 %d成绩:", j);        scanf("%f", &pf[i]);    }    //排序    Judgment_order(pf, count);    free(pf);    return 0;}
0 0
原创粉丝点击