当前位置:首页 > 内存 > 正文

c语言动态内存分配例题

  • 内存
  • 2024-05-22 08:56:49
  • 7170

一、c语言程序设计(关于动态内存分配)问题。高手进

#include

#include

#include

voidmain()

{

intn,i,k,m,sum=0,*p,high_score,low_score;//定义常量

floatave_score;

printf("请输入学生人数:");

scanf("%d",&n);

p=(int*)malloc(n*sizeof(int));//动态内存分配

if(p==NULL)

{

printf("可用内存不足。");

exit(0);

}

printf("请输入学生成绩:\n");

for(i=0;i

scanf("%d",p+i);//输入学生的分数

for(k=0;k

{

*(p+k))

{

m=*p;

*p=*(p+k);

*(p+k)=m;

}

}

for(k=0;k

{

if(*(p+n-1)<*(p+k))//这里你犯了一个错误,如果有n个学生,地址应该是

{                                                         n-1,您使用p+n并指向任何数字,错误。

                                       m=*(p+n-1);

*(p+k)=m;

}

}

for(i=0;i

sum+=*(p+i);

ave_score=sum*1.0/n;

hign_score=*(p+n-1);//也应该是p+n-1

low_score=*p;

printf("学生平均成绩为%f\n“,ave_score);//输出

printf("学生最高分是%d\n",highn_score);

printf("学生最低分是%d\n",low_score);

free(p);

}

PS:关于指针的问题很容易出错。使用“寻找什么”。如果没有语法错误,则错误通常是指针地址的问题。

该程序是正确的,并且可以获得持续的结果。解贴吧