C++ 编程练习:使用 break 和 continue 统计连续上升数字 - 算法详解
下面是使用C++的iostream库和break、continue语句来解决这个问题的代码:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int arr[n];
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
int result[n];
for (int i = 0; i < n; i++) {
int count = 1;
for (int j = i + 1; j < n; j++) {
if (arr[j] > arr[j - 1]) {
count++;
} else {
break;
}
}
result[i] = count;
}
for (int i = 0; i < n; i++) {
cout << result[i] << " ";
}
return 0;
}
这个代码首先读取输入的整数n和n个整数到一个数组中。然后,使用两个嵌套的循环来计算每个数字开始往后最多有多少个连续的数字依次上升。内层循环从当前数字的下一个数字开始,如果下一个数字大于前一个数字,则计数器加1;否则,使用break语句跳出内层循环。最后,将计数器的值存储在结果数组中,并输出结果数组的值。
代码优化
在这个代码中,我们使用了一个固定大小的数组来存储输入的整数,这在实际应用中可能会存在问题。如果输入的整数个数超过数组的大小,可能会导致程序崩溃。为了避免这种情况,可以使用动态数组或其他数据结构来存储输入的整数。
代码改进
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> arr(n);
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
vector<int> result(n);
for (int i = 0; i < n; i++) {
int count = 1;
for (int j = i + 1; j < n; j++) {
if (arr[j] > arr[j - 1]) {
count++;
} else {
break;
}
}
result[i] = count;
}
for (int i = 0; i < n; i++) {
cout << result[i] << " ";
}
return 0;
}
在这个改进的代码中,我们使用vector容器来存储输入的整数,这样就避免了固定大小数组的限制,可以处理任意数量的输入。
总结
这篇文章介绍了如何使用C++的iostream库和break、continue语句来解决一个常见的编程练习:统计给定数组中每个数字开始往后最多有多少个连续的数字依次上升。文章提供了代码示例,并讨论了代码的优化和使用场景。希望这篇文章对你有所帮助。
原文地址: https://www.cveoy.top/t/topic/qc7F 著作权归作者所有。请勿转载和采集!