zltzlt 发表于 2020-1-11 15:30:28

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]
查看完整版本: C++ 循环与数组