c++问题 动态内存分配

来源:百度知道 编辑:UC知道 时间:2024/05/15 22:18:46
#include<stdio.h>
#include<stdlib.h>
int mian()
{
int n,i,*p,he,max,min;
printf("输入学生人数:");
scanf("%d",&n);

if((p=(int * )calloc(n,sizeof(int)))==NULL)
{
printf("无法分配内存!\n");
exit(1);
}

printf("输入%d个学生的成绩:",n);
for(i=0;i<n;i++)
scanf("%d",p+i);

he=max=min=*p;
for(i=1;i<n;i++)
{
he=he+*p;
if(*p>max)
max=*p;
if(*p<min)
min=*p;
}

printf("这%d个学生的平均成绩为=%d,最高成绩为=%d,最低成绩为=%d\n",n,he/n,max,min);

free(p);

return 0;
}

为什么我编译的时候没错,但是在运行的时候却又错误呢?????

//这是我为你写的正确地代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,i,*p,max,min;
double he;
printf("输入学生人数:");
scanf("%d",&n);

if((p=(int * )calloc(n,sizeof(int)))==NULL)
{
printf("无法分配内存!\n");
exit(1);
}

printf("输入%d个学生的成绩:\n",n);
for(i=0;i<n;i++)
scanf("%d",p+i);

he=max=min=*p;
for(i=1;i<n;i++)
{
he=he+*(p+i);
if(*(p+i)>max)
max=*(p+i);
if(*(p+i)<min)
min=*(p+i);
}

printf("这%d个学生的平均成绩为=%f,最高成绩为=%d,最低成绩为=%d\n",n,he/n,max,min);

free(p);

return 0;
}

//再看一下您写的代码:
#include<stdio.h>
#include<stdlib.h>
int mian() //注意了main()要写正确了,这种错误注意.
{
int n,i,*p,he,max,min;
printf("输入学生人数:");
scanf("%d",&