为什么这一段中间while部分会无限运行不能break出来int main() { int T; T=cin.get();//T是测试用例 static int* Alist = new int[T];//此数组储存迭代次数 vector<int> Blist; cout << "Please input T list" << endl; for (int i = 0; i < T; i++) { int number; while (cin >> number) { Blist.push_back(number); break; } reverse(Blist.begin(), Blist.end()); int* Clist = new int [Blist.size()]; for (int p = 0; p < Blist.size(); p++) { Clist[p] = Blist.back(); Blist.pop_back(); } bubsort<int>(Clist, Blist.size()); Alist[i] = k; k = 0; } for (int i = 0; i < T; i++) { cout << Alist[i] << endl; }
时间: 2023-02-05 22:50:00 浏览: 87
在这段代码中,当用户输入数字时,while循环就会无限运行。这是因为while循环的条件是cin >> number,而cin >> number会一直返回true,因此while循环也会一直运行。
要解决这个问题,可以把while循环的条件设为false,并把break语句放到循环体内。这样,当用户输入数字时,while循环会立即退出。
下面是修改后的代码:
int main() {
int T;
T=cin.get();//T是测试用例
static int* Alist = new int[T];//此数组储存迭代次数
vector<int> Blist;
cout << "Please input T list" << endl;
for (int i = 0; i < T; i++) {
int number;
while (false) {
cin >> number;
Blist.push_back(number);
break;
}
reverse(Blist.begin(), Blist.end());
int* Clist = new int [Blist.size()];
for (int p = 0; p < Blist.size(); p++) {
Clist[p] = Blist.back();
Blist.pop_back();
}
bubsort<int>(Clist, Blist.size());
Alist[i] = k;
k = 0;
}
for (int i = 0; i < T; i++) {
cout << Alist[i] << endl;
}
}
请注意,上述代码仅是一个示例,并不是完整的可运行代码。如果想要运行这段代码,需要添加必要的头文件和函数定义。
阅读全文