C++ 循环与数组
C++ 循环与数组
数组的操作离不开循环。
读入数组
读入数组可以使用 for 循环或 while 循环。
for 循环
int i, n = 10;
int arr;
for (i = 0; i < n; i++) cin >> a;
使用 for 循环读入,需要知道读入数的个数,一般不能边读入边处理。
while 循环
int i;
int arr;
while (true) {
// 死循环
cin >> arr;
if (a == "#") break;
...... // 可边读入边处理
i++;
}
使用 while 循环读入,需要知道终止符(即输入什么字符就停止),可以边读入边处理。
遍历数组
遍历数组一般使用 for 循环。例如:
int arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int i, n = 10;
for (i = 0; i < n; i++) cout << arr << endl;
移动数组元素
例题
将数组中第一个元素移动到数组的末尾,其余元素依次往前平移一个位置。
数组元素个数 n 及数组元素均从键盘输入(n < 100)。
我的解答:
#include <iostream>
using namespace std;
int main() {
int n, i, first;
int arr;
cin >> n;
for (i = 0; i < n; i++) cin >> arr;
first = arr;
for (i = 0; i < n; i++) {
if (i == 0) arr[-1] = arr;
else arr = arr;
}
arr = first;
for (i = 0; i < n; i++) cout << arr << " ";
return 0;
}
查找与删除元素
例题:对于一个数组 a,元素个数为 n(n 从键盘输入,n < 100,数组元素从键盘输入)。
找出数组中最大的元素,并将其从数组中删除,然后依次输出新的数组元素及最大值。
我的解答:
#include <iostream>
using namespace std;
int main() {
int i, n, max;
int a;
cin >> n;
for (i = 0; i < n; i++) cin >> a;
max = a;
for (i = 1; i < n; i++) {
if (a > max) max = a;
}
for (i = 0; i < n; i++) {
if (a != max) cout << a << " ";
}
cout << endl << max;
return 0;
}
求和问题
求和问题是数值计算的一类重要问题。
例题(求和项数问题):
对于求和式 sum = 1 + 1 / 2 + 1 / 3 + ... + 1 / N,编写程序计算当 sum > 10 时,N 的最小值。
我的解答:
#include <iostream>
using namespace std;
int main() {
int n = 2;
double s = 1;
while (s <= 10) {
s += (1.0 / n);
n ++;
}
cout << n;
return 0;
}
多重循环问题
例题:编写程序验证下列结论。
任何一个自然数 n 的平方,都等于 n 个连续奇数的和。
例如:13 = 1,23 = 3 + 5,33 = 7 + 9 + 11 ……
要求程序对每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为 0 时停止。如输入 3,则输出 3 ^ 3 = 7 + 9 + 11。
我的解答(代码冗长):
#include <iostream>
using namespace std;
int main() {
int j, k, i, n = 1, l;
while (n) {
cin >> n;
k = 1;
while (true) {
l = k;
j = 0;
for (i = 1; i <= n; i++) {
j += k + (i - 1) * 2;
}
if (j == (n * n * n)) {
cout << n << " ^ " << n << " = ";
for (i = 1; i <= n; i++) {
if (i != n) cout << l << " + ";
else cout << l << endl;
l += 2;
}
break;
}
k += 2;
}
}
}
页:
[1]