「经典图形题」集合 | C/C++
- 第 141 篇 -
Date: 2025 - 11- 02
Author: 郑龙浩(仟墨)
「经典图形题」集合 | C/C++
1. 正三角形(右对齐)
解释:输出一个向右对齐的三角形,底部最宽,顶部最窄
输入:5
输出:**********
*****
#include "bits/stdc++.h"
using namespace std;
int main(void) {ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);cout << "输入宽度\n";int n; cin >> n;for (int i = 1; i <= n; i++) { // n行// 输出空格for (int j = 1; j <= n - i; j++) cout << ' ';// 输出*for (int j = 1; j <= i; j++) cout << '*';cout << '\n'; // 换行} return 0;
}
2. 正三角形(居中)
解释:输出一个居中对齐的三角形
输入:5
输出:****************
*********
只需要将内层循环改成
j <= i * 2 - 1
#include "bits/stdc++.h"
using namespace std;
int main(void) {ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);cout << "输入宽度\n";int n; cin >> n;for (int i = 1; i <= n; i++) { // n行// 输出空格for (int j = 1; j <= n - i; j++) cout << ' ';// 输出*for (int j = 1; j <= i*2 - 1; j++) cout << '*';cout << '\n'; // 换行} return 0;
}
3. 倒三角形(右对齐)
解释:与正三角形相反,顶部最宽,底部最窄
输入:5
输出:
***************
// 3_倒三角形(右对齐)
// Date:2025-11-02 Author:郑龙浩
#include "bits/stdc++.h"
using namespace std;
int main(void) {ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);cout << "输入宽度\n";int n; cin >> n;for (int i = 1; i <= n; i++) { // n行// 输出空格.for (int j = 1; j < i; j++) cout << ' ';// 输出*for (int j = i; j <= n; j++) cout << '*';cout << '\n'; // 换行} return 0;
}
4. 倒三角形(居中)
输入:5
输出:
*************************
// 关键:for (int j = i; j <= n * 2 - i; j++)
// 4_倒三角形(居中)
// Date:2025-11-02 Author:郑龙浩
#include "bits/stdc++.h"
using namespace std;
int main(void) {ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);cout << "输入宽度\n";int n; cin >> n;for (int i = 1; i <= n; i++) { // n行// 输出空格.for (int j = 1; j < i; j++) cout << ' ';// 输出*for (int j = i; j <= n * 2 - i; j++) cout << '*';cout << '\n'; // 换行} return 0;
}
5. 菱形
上半部分是正三角,下半部分是倒三角
比如:输出9行的菱形,上5行是正三角,后四行是倒三角
注意:后四行倒三角,从第一行开始就有空格
输出:****************
*************************
// 4_倒三角形(居中)
// Date:2025-11-02 Author:郑龙浩
#include "bits/stdc++.h"
using namespace std;
const int n = 5, m = 4;
int main(void) {ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);cout << "输入宽度\n";for (int i = 1; i <= n; i++) {for (int j = 1; j <= n - i; j++) cout << ' ';for (int j = 1; j <= i * 2 - 1; j++) cout << '*';cout << '\n';}for (int i = 1; i <= m; i++) { // n行// 输出空格.for (int j = 1; j <= i; j++) cout << ' ';// 输出*for (int j = i; j <= m * 2 - i; j++) cout << '*';cout << '\n'; // 换行} return 0;
}
6. 空心菱形
解释:只输出菱形的边框,内部为空
输入:5
输出:** ** ** *
* ** ** ** **
// 6_空心菱形
// Date:2025-11-02 Author:郑龙浩
#include "bits/stdc++.h"
using namespace std;
const int n = 5, m = 4;
int main(void) {ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);cout << "输入宽度\n";for (int i = 1; i <= n; i++) {for (int j = 1; j <= n - i; j++) cout << ' ';for (int j = 1; j <= i * 2 - 1; j++) cout << (j == 1 || j == i * 2 - 1 ? '*' : ' ');cout << '\n';}for (int i = 1; i <= m; i++) { // n行// 输出空格.for (int j = 1; j <= i; j++) cout << ' ';// 输出* for (int j = i; j <= m * 2 - i; j++) cout << (j == i || j == m * 2 - i ? '*' : ' ');cout << '\n'; // 换行} return 0;
}
7. 对角线
解释:在n×n的矩阵中,从左上到右下的对角线
输入:5
输出:
* * * * *
// 7_正对角线
// Date:2025-11-02 Author:郑龙浩
#include "bits/stdc++.h"
using namespace std;
const int n = 5, m = 4;
int main(void) {ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);cout << "输入宽度\n";int n; cin >> n;for (int i = 1; i <= n; i++) {for (int j = 1; j <= i; j++)cout << (j == i ? "*" : " ");cout << '\n';}return 0;
}
7. 反对角线
解释:在n×n的矩阵中,从右上到左下的对角线
输入:5
输出:** * *
*
// 8_反对角线
// Date:2025-11-02 Author:郑龙浩
#include "bits/stdc++.h"
using namespace std;
const int n = 5, m = 4;
int main(void) {ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);cout << "输入宽度\n";int n; cin >> n;for (int i = 5; i >= 1; i--) {for (int j = 1; j <= i; j++)cout << ' ';cout << "*\n";}return 0;
}
9. 正方形(实心/空心)
实心(5×5):
*****
*****
*****
*****
*****空心(5×5):
*****
* *
* *
* *
*****
// 9 正方形(实心/空心
// Date:2025-11-02 Author:郑龙浩
#include "bits/stdc++.h"
using namespace std;
const int n = 5, m = 4;
int main(void) {ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);cout << "输入宽度\n";int n; cin >> n;cout << "实心:\n";for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {cout << "*";}cout << '\n';}cout << "空心:\n";for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {if (i == 1 || i == n || j == 1 || j == n) cout << '*';else cout << ' ';} cout << '\n';}return 0;
}
