GESP2025年9月认证C++二级( 第三部分编程题(2)菱形)
参考程序1:
#include <bits/stdc++.h>
using namespace std;int main() {int n;cin >> n;int mid = n / 2; // n 为奇数时 mid == (n-1)/2,直接用 int mid = n / 2;利用整除去掉余数的特性,效果相同。 for (int i = 0; i < n; ++i) {for (int j = 0; j < n; ++j) {// 如果格子 (i,j) 到中心 (mid,mid) 的曼哈顿距离等于 mid,则为菱形边界if (abs(i - mid) + abs(j - mid) == mid) cout << '#';else cout << '.';}cout << '\n';}return 0;
}
参考程序2:
#include <bits/stdc++.h>
using namespace std;int main() {int n;cin >> n;int mid = n / 2;for (int i = 0; i < n; ++i) {int d = abs(i - mid); // 距离中心行的垂直偏移int span = mid - d; // 从中心列向左右扩展的距离(可能为0)int left = mid - span; // 左侧 '#'int right = mid + span; // 右侧 '#'string row(n, '.'); // 先全部填 '.'row[left] = '#'; // 放左侧 '#'row[right] = '#'; // 放右侧 '#'cout << row << '\n';}return 0;
}