1】思维导图:
2】在堆区空间连续申请5个int类型大小空间,用来存放从终端输入的5个学生成绩,然后显示5个学生成绩,再将学生成绩升序排序,排序后,再次显示学生成绩。显示和排序分别用函数完成
要求:用malloc和free完成
参考代码,
#include<stdio.h>
#include<stdlib.h>
void show(int *p)
{
for(int i=0; i<5; i++)
{
printf("%d ",p[i]);
}
printf("\n");
}
void sorts(int *p)
{//冒泡排序
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4-i; j++) {
if (p[j] > p[j + 1]) {
int temp = p[j];
p[j] = p[j + 1];
p[j + 1] = temp;
}
}
}
}
int main(int argc, const char *argv[])
{
//在堆区连续申请了5个4个字节的大小空间,并将地址赋值给p2
int *p = (int *)malloc(sizeof(int)*5);
for(int i=0; i<5; i++)
{
scanf("%d",&p[i]); //输入成绩
}
printf("学生成绩如下:\n");
show(p);
printf("排序后:\n");
sorts(p);
show(p);
free(p);//释放内存
p = NULL;//避免野指针
return 0;
}