#include <stdio.h>
#include <stdlib.h> // 包含 <stdlib.h> 来使用 malloc 和 free
struct Student
{
char name[10];
int age;
float score;
};
int main()
{
int len;
printf("请输入学生人数:\n");
scanf("%d", &len);
struct Student k;
struct Student *pArr;
pArr = (struct Student *)malloc(len * sizeof(struct Student));
if (pArr == NULL)
{
printf("内存分配失败\n");
return 1;
}
for (int i = 0; i < len; i++)
{
printf("请输入第%d个学生的姓名:\n", i + 1);
scanf("%9s", pArr[i].name); // 限制输入的字符串长度
printf("请输入第%d个学生的年龄:\n", i + 1);
scanf("%d", &pArr[i].age);
printf("请输入第%d个学生的分数:\n", i + 1);
scanf("%f", &pArr[i].score);
}
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - i - 1; j++)
{
if (pArr[j].score > pArr[j + 1].score)
{
k = pArr[j];
pArr[j] = pArr[j + 1];
pArr[j + 1] = k;
}
}
}
for (int i = 0; i < len; i++)
{
printf("第%d个学生的姓名是:%s\n", i + 1, pArr[i].name);
printf("第%d个学生的年龄是:%d\n", i + 1, pArr[i].age);
printf("第%d个学生的分数是:%f\n", i + 1, pArr[i].score);
}
// 释放动态分配的内存
free(pArr);
return 0;
}
遇到问题1:
C4996
解决方法:
在“属性”里的“c/c++”里的“预处理器”里加入“_CRT_SECURE_NO_WARNINGS”
遇到问题2:
一开始显示的是乱码
解决方法:
在高级保存选项里将编码改成中文编码