C++问题,请大鸟们指点!

来源:百度知道 编辑:UC知道 时间:2024/06/06 02:26:46
题目:学院某班的20个学生成绩已经产生,辅导员需要统计这个班的学生成绩,需求出最高分数,平均成绩,并要求按照从高分到低分的顺序进行排序。
下面是我写的代码,运行时出现["0x004013bd"引用的"0x00233000"内存,该内存不能为"read"]这样的错误提示。另外运行结果也不对,得到的最高成绩是:3.31878e-039,排序就出了个:1:3.31878e-039,不知道哪里出了问题,请大鸟们指点一下,最好详细点,谢谢!
[注:]我是用 Dev C++编的!
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
float getAverage(float grade[])
{
int size;
size==sizeof(grade)/4;
float sum=0;
for(int i=0;i<size;i++)
{
sum=sum+grade[i];
}
return sum/size;
}
float getMax(float grade[])
{
int size;
size=sizeof(grade)/4;
float max=grade[0];
for(int i=0;i<size;i++)
{
if(max<grade[i])
{
max=grade[i];
}
}
return max;
}
vo

size==sizeof(grade)/4;
这里错了,我正在调试,发现的第一逻辑错误
你的 那个成绩乱码是由于 数组没有初始化导致的.
只传送了首地址...这样就行啦

#include <iostream>
#include <stdlib.h>
#include <time.h>
#define NumberOfStrudent 20
using namespace std;
float getAverage(float grade[])
{
int size;
size=NumberOfStrudent;
float sum=0;
for(int i=0;i<size;i++)
{
sum=sum+grade[i];
}
return sum/size;
}
float getMax(float grade[])
{
int size;
size=NumberOfStrudent;
float max=grade[0];
for(int i=0;i<size;i++)
{
if(max<grade[i])
{
max=grade[i];
}
}
return max;
}
void indexArray(float grade[])
{
int size;
float temp;
size=NumberOfStrudent;
for(int i=0;i<size-1;i++)
{
for(int j=0;j<size-i;j++)
{
if(grade[j]<grade[j+1])
{
temp=grade[j];
grade[j]