C++程序运行时输入1直接结束程序了,没有执行程序,这是为什么?
```c++
#include <iostream>
#include<fstream>
#include <iomanip>
#include<algorithm>
using namespace std;
#define MAXSIZE 1000;
typedef struct {
int num;
string name;
double price;
}Book;
typedef struct
{
Book *elem;
int length;
}SqList;
SqList L;
class Library
{
public:
void read();
void print();
void add();
void delet();
void reset();
void search();
void sort();
void newsort();
};
void Library::read() //将文件中的数据逐条读入顺序表book中
{
int i = 0;
ifstream inFile("book.txt");
while (!inFile.eof()) {
inFile >> L.elem[i].num >> L.elem[i].name >> L.elem[i].price;
i++;
}
inFile.close();
cout << "读取完毕!" << endl;
}
void Library::print()//打印所有图书信息
{
for (int i = 0; i < sizeof(L.elem); i++)
{
cout << L.elem[i].num << L.elem[i].name << L.elem[i].price;
}
cout << "--------------------------" << endl;
}
void Library::add()//插入图书信息
{
string xname;
int xnum;
double xprice;
int n;
cout << "请依次输入插入位置、书号、书名、价格" << endl;
cin >> n >> xnum >> xname >> xprice;
for (int i = 0; i < sizeof(L.elem); i++)
{
if (n == i + 1)
{
for (int i = n; i < sizeof(L.elem); i++)
{
L.elem[i + 1].num = L.elem[i].num;
L.elem[i + 1].name = L.elem[i].name;
L.elem[i + 1].price = L.elem[i].price;
}
L.elem[i + 1].num = xnum;
L.elem[i + 1].name = xname;
L.elem[i + 1].price = xprice;
}
}
}
void Library::delet()//删除图书
{
cout << "请输入要删除的图书号";
int n;
cin >> n;
for (int i = 0; i < sizeof(L.elem); i++)
{
if (L.elem[i].num == n)
{
for (int j = i; j < sizeof(L.elem); j++)
{
L.elem[j].num = L.elem[j + 1].num;
L.elem[j].name = L.elem[j + 1].name;
L.elem[j].price = L.elem[j + 1].price;
}
}
}
}
void Library::reset()//价格更新
{
cout << "价格更新" << endl;
for (int i = 0; i < sizeof(L.elem); i++)
{
if (L.elem[i].price < 45)
{
L.elem[i].price = L.elem[i].price * 1.2;
}
if (L.elem[i].price > 45)
{
L.elem[i].price = L.elem[i].price * 1.1;
}
}
print();
}
void Library::search()//图书查找
{
cout << "按位置查找请按1,按书名查找请按2";
int temp;
cin >> temp;
if(temp==2)
{
cout << "请输入要查找图书的名字:" << endl;
string n;
cin >> n;
int a = 0;
bool b = 1;
for (int i = 0; i < sizeof(L.elem); i++)
if (L.elem[i].name == n)
{
a++;
b = 0;
cout << L.elem[i].num << L.elem[i].name << L.elem[i].price;
}
cout << "找到了" << a << "本目标书籍" << endl;
if (b) cout << "抱歉,没有找到目标书籍!" << endl;
}
if (temp == 1)
{
cout << "请输入要查找图书的位置:" << endl;
int n;
cin >> n;
int a = 0;
bool b = 1;
for (int i = 0; i < sizeof(L.elem); i++)
if (L.elem[i].num == n)
{
a++;
b = 0;
cout << L.elem[i].num << L.elem[i].name << L.elem[i].price;
}
cout << "找到了" << a << "本目标书籍" << endl;
if (b) cout << "抱歉,没有找到目标书籍!" << endl;
}
}
void Library::sort()//按价格升序排序
{
for (int i = 0; i < sizeof(L.elem); i++)
{
if (L.elem[i + 1].price > L.elem[i].price)
{
L.elem[i].price = L.elem[i + 1].price;
}
}
}
void Library::newsort()
{
ofstream fout;
fout.open("book-newsort.txt");
for (int i = 0; i < sizeof(L.elem); i++)
{
fout << L.elem[i].name << L.elem[i].num << L.elem[i].price;
}
}
int main()
{
Library test;
int flag = 1;
while (flag)
{
cout << "请输入对应的序号:" << endl;
cout << "1.读取图书信息" << endl;
cout << "2.浏览图书信息" << endl;
cout << "3.统计图书个数" << endl;
cout << "4.添加图书信息" << endl;
cout << "5.删除图书信息" << endl;
cout << "6.图书查找" << endl;
cout << "7.图书价格更新" << endl;
cout << "8.图书价格排序" << endl;
cout << "9.逆序存储" << endl;
cout << "10.退出程序" << endl;
cin >> flag;
if (flag == 1)
{
cout << endl;
test.read();
cout << endl;
}
if (flag == 2)
{
cout << endl;
test.print();
cout << endl;
}
if (flag == 3)
{
cout << endl;
cout << sizeof(L.elem)-1;
cout << endl;
}
if (flag == 4)
{
test.add();
}
if (flag == 5)
{
test.delet();
}
if (flag == 6)
{
test.search();
}
if (flag == 7)
{
cout << endl;
test.reset();
cout << endl;
}
if (flag == 8)
{
cout << endl;
test.sort();
test.print();
cout << endl;
}
if (flag == 9)
{
test.newsort();
}
if (flag == 10)
{
exit(0);
}
}
return 0;
}
```