11 10 学生成绩结构体函数实现
将11 08 堆空间创建结构体学生成绩的冒泡排序提取为函数
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
struct students//8
{
char* name;
float* scores;
};
void bubble(struct students *p,int len)
{
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - 1 - i; j++)
{
float sum1 = p[j].scores[0] + p[j].scores[1] + p[j].scores[2];
float sum2 = p[j + 1].scores[0] + p[j + 1].scores[1] + p[j + 1].scores[2];
if (sum1 < sum2)
{
struct students tmp = p[j];
p[j] = p[j + 1];
p[j + 1] = tmp;
}
}
}
}
void main()
{
struct students* p = (struct students*)malloc(sizeof(struct students) * 3);
for (int i = 0; i < 3; i++)
{
p[i].name = (char*)malloc(sizeof(char) * 21);
p[i].scores = (float*)malloc(sizeof(float) * 3);
printf("姓名,统率,智力,武力\n");
scanf("%s%f%f%f", p[i].name, &p[i].scores[0], &p[i].scores[1], &p[i].scores[2]);
//getchar();
}
//冒泡排序
bubble(p, 3);
//输出
for (int i = 0; i < 3; i++)
{
printf("%s\t", p[i].name);
printf("%.1f\t", p[i].scores[0]);
printf("%.1f\t", p[i].scores[1]);
printf("%.1f\n", p[i].scores[2]);
}
//释放
for (int i = 0; i < 3; i++) {
free(p[i].name);
free(p[i].scores);
}
free(p);
system("pause");
}
11 10 学生成绩结构体函数实现
