关于申请动态内存来管理学生成绩

来源:百度知道 编辑:UC知道 时间:2024/06/15 01:11:40
#include<iostream.h>

struct Student
{
char name[ 20 ];
float score;
};

int main()
{
Student *student;
int studentNum;

cout << "Please input student number:";
cin >> studentNum;

//申请内存空间
students = new Student[ studentNum ];

if( students == NULL )
{
cout << "Insufficient memory! \n";
return ;
}

// 读入学生信息
cout << "Please input student name and score:\n";
for( int i = 0; i < studentNum; i++ )
{
cout << i + 1 << " : ";
cin >> students[ i ].name >> students[ i ].score;
}

//计算平均成绩
float sum = 0;
for ( i = 0; i < studentNum; i++ )
sum += students[ i ].score;

cout <<"\nThe average score is " << sum/studentNum << endl;

Student *student; 这句定义的student没有在后面使用;
students = new Student[ studentNum ]; 这句应该改成
Student* students = new Student[ studentNum ];

在c语言里面,结构体的声明是要这样写的
struct Student *students.
或者在定义的时候,这样写
typedef struct Student_
{
char name[ 20 ];
float score;
}Student;
然后下面就可以直接用了。

student前面要加struct

看到下面的错误没:
error C2065: 'students' : undeclared identifier
这说明你没有定义它,其实你在main()函数体内的第一行代码:
Student *student; //这一句改成Student *students;

改了上面的这一行语句,程序可以运行得到想要的效果.
不过还是有点问题,有的编译器会给出警告信息.
这是因为,你定义的是int main()程序运行出口应该返回一个整型数据,比如,return 1;这样就不会出现警告了.