作业:思维导图:
作业:在堆区空间连续申请5个int类型大小空间,用来存放从终端输入的5个学生成绩,然后显示5个学生成绩,再将学生成绩升序排序,排序后,再次显示学生成绩。显示和排序分别用函数完成
要求:用malloc和free完成
代码:
#include <stdio.h>
#include <stdlib.h>
void Display(int *p);
void Sort(int *p);
int main(int argc, const char *argv[])
{
//堆区申请5个int大小的空间
int *p=(int *)malloc(sizeof(int)*5);
printf("输入学生成绩: ");
for(int i=0;i<5;i++)//输入成绩
scanf("%d",p+i);
Display(p);//输出成绩
Sort(p);//排序并输出成绩
free(p); //释放指针并置空
p=NULL;
return 0;
}
void Display(int *p)
{
printf("学生的成绩为: ");
for(int i=0;i<5;i++)
printf("%d ",p[i]);
printf("\n");
}
void Sort(int *p)
{
int temp;
printf("排序后成绩为: ");
for(int i=0;i<5;i++)//外循环,假设当前位置为最小
{
for(int j=i;j<5;j++)//内循环,依次与j比较
{
if(p[i]>p[j])//如果i位置值不是最小,则交换值,保证位置i值最小
{
temp=p[j];
p[j]=p[i];
p[i]=temp;
}
}
printf("%d ",p[i]);
}
printf("\n");
}
标签:排序,导图,堆区,Day1,int,学生,printf,成绩
From: https://blog.csdn.net/qq_53627084/article/details/144380675