#include<iostream.h>
void main()
{
int n,*h;
cout<<"输入学生个数:";
cin>>n;
h=new int[n];
for(int i=0;i<n;i++)
{
cout<<n<<"个学生的单科成绩为:"<<h[i]<<" ";
}
delete[]h;
}
我只能写到上面那个地步,但是如何处理单科成绩平均分,望指教。对NEW 和DELETE不太会运用,也不太明白是怎么一回事。
int* x=new int;
*x=10;
//内存:
-------------------------------------------------------------------------------------
*x==>> |1byte|1byte|1byte|1byte| | | | | | | | | | | |
-------------------------------------------------------------------------------------
\ /
\这一段内存放10这个值/
cout<<*x<<endl; //如果你的目的输出指向内存的值后就不再用到这指向这段内存的值那么就得回收:
delete x; //如果不回收,就不能再用到这段内存了.就像一个杯子装满了水,如果你不把水倒出
//去,那么这杯了就不能再装进的水了.一个int占四个字节,如果你的内存只有四个
//字节的大小,那么如果你不回收内存,就会没有内存空间可用了,那么就会造成程序
//崩溃.至于什么时候回收内存,那得看你程序实际情况了.
你说的我能够明白,但是具体应用起来还是不太懂,我刚才修改了一下,请指正
题目是这样的:用动态内存分配技术处理任意个学生的单科平均成绩
我的代码是:
#include<iostream.h>
void main()
{
int d,c[100];;
float *h,sum=0;
cout<<"请输入学生个数:";
cin>>d;
cout<<"请输入"<<d<<"个学生的单科成绩:";
for(int a=0;a<d;a++)cin>>c[a];
for(int i=0;i<d;i++)
{sum+=c[i];}
h=new float(sum/d);
cout<<d<<"个学生的单科平均成绩为:"<<*h<<endl;
delete h;
}
不知道和是不是按题目的要求做,请大家指正