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