求大家帮帮忙看下这个程序
请问这个程序为什么会访问非法内存呢?#include<iostream>
#include<string>
using namespace std;
class book
{
public:
string name;
int money;
int id;
};
int main()
{
book s[4];
int max,min,maxi,mini,temp,i;
string person;
cout<<"请输入4本书的信息"<<endl;
cout<<"书名 价格"<<endl;
for(i=0;i<4;i++)
{
cin>>s[i].name>>s[i].money;
s[i].id=i;
}
cout<<endl<<endl;
cout<<"所有数目信息:"<<endl;
for(i=0;i<4;i++)
{
cout<<s[i].id<<" 《"<<s[i].name<<"》 "<<s[i].money<<endl;
}
max=s[0].money;
min=s[3].money;
for(i=0;i<4;i++)
{
if(s[i].money>max)
{
max=s[i].money;
maxi=i;
}
}
for(i=0;i<4;i++)
{
if(s[i].money<min)
{
min=s[i].money;
mini=i;
}
}
cout<<"最贵的书是---- 书名:《"<<s[maxi].name<<"》 价格:"<<max<<endl;
cout<<"最便宜的书是-- 书名:《"<<s[mini].name<<"》 价格:"<<min<<endl;
cout<<endl<<endl;
cout<<"请输入编辑姓名"<<endl;
cin>>person;
cout<<"请输入让编辑修改价格的数目编号"<<endl;
cin>>temp;
cout<<"请输入 《"<<s[temp].name<<"》 的新价格"<<endl;
cin>>s[temp].money;
cout<<"编辑 "<<person<<" 将 《"<<s[temp].name<<"》的价格已经更改为:"<<s[temp].money<<endl;
return 0;
}