12 条题解
-
9
今天这道题主要就是找规律,我们先来举一组栗子~
- 假设 n 为 5,那么每一行该如何打印呢?先看看第一行吧~
- 第一部分:空格 4 个,也就是 (n - 1)个空格
- 第二部分:星号 1 个,也就是(2 * 1 - 1)个星
- 第三部分:空格 8 个,也就是(n - 1)* 2 个空格
- 后面的部分就是重复第二部分和第三部分
- 那么接下来我们可以将循环的参数设为从 1 ~ n,一共 n 行
- 再把没有参数的式子比如第二部分和第三部分改成有参数(比如 x , i 等)
- 改完以后分别是(2 * i - 1)和(n - i)* 2
最后上代码,记得输出哦~(AC过,请放心食用)
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n - i; j++) cout << " "; for (int j = 1; j <= 2 * i - 1; j++) cout << "*"; for (int j = 1; j <= (n - i) * 2; j++) cout << " "; for (int j = 1; j <= 2 * i - 1; j++) cout << "*"; for (int j = 1; j <= (n - i) * 2; j++) cout << " "; for (int j = 1; j <= 2 * i - 1; j++) cout << "*"; cout << endl; } return 0; }
-
6
cin>>n; for (i=1;i<=n;i++) { //因为要三遍,所以循环里把(//)的代码复制三遍就行了,不需要搞多循环,没你们想的那么复杂 //for(j=1;j<=n-i;j++) cout<<" "; //for(j=1;j<=i*2-1;j++) cout<<"*"; //for(j=1;j<=n-i;j++) cout<<" "; for(j=1;j<=n-i;j++) cout<<" "; for(j=1;j<=i*2-1;j++) cout<<"*"; for(j=1;j<=n-i;j++) cout<<" "; for(j=1;j<=n-i;j++) cout<<" "; for(j=1;j<=i*2-1;j++) cout<<"*"; for(j=1;j<=n-i;j++) cout<<" "; cout<<endl; }
-
5
发现方法都跟我不一样,发个题解😎😎。 可以用循环变量来控制。一次大循环套一个中循环,一次中循环套两个小循环。 (这里借用一下MOD的图)
观察发现,③、⑤的空格都是①的2倍,而*(②、④、⑥)的大小相等。所以可以用循环变量控制,输出空格时加上循环变量(x)控制。
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; for (int i = 1; i <= n; i++) { // 大循环 for (int x = 1; x <= 3; x++) { // 中循环 for (int j = 0; j < (n-i)*(x/2+1); j++) cout << ' '; // 小循环x1 for (int j = 0; j < 2*i-1; j++) cout << '*'; // 小循环x2 } cout << endl; } return 0; }
-
4
#include <iostream> using namespace std; int main() { int n; cin >> n; for (int i = 1; i <= n; i++) { for (int j = 1; j <= 6 * n - 3; j++) { if ((j >n-i && j < n+i) || (j > 3*n-i-1 && j < 3*n+i-1) || (j > 5 * n - i - 2 && j < 5 * n + i-2)) { cout << "*"; } else { cout << " "; } } cout << endl; } return 0; }
-
4
#include <bits/stdc++.h> using namespace std; void a1(int n)//定义函数 { for(int j=1;j<=n-1;j++)cout<<" "; } void b(int a)//定义函数 { for(int j=1;j<=a;j++)cout<<"*"; } void c(int n)//定义函数 { for(int j=1;j<=(n-1)*2;j++)cout<<" "; } int main() { int n,a=1,n1; cin>>n; n1=n; for(int i=1;i<=n;i++) { a1(n1);b(a);c(n1);b(a);c(n1);b(a);n1--; a+=2;cout<<endl; } return 0; }
-
3
三个三角形在每行的三个部分都是一样的,可以直接输出每行是输出三遍
#include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; for (int i=1;i<=n;i++) { for (int k=1;k<=3;k++) { for (int j=1;j<=n-i;j++) cout<<" "; for (int j=1;j<=i*2-1;j++) cout<<"*"; for (int j=1;j<=n-i;j++) cout<<" "; } cout<<'\n'; } return 0; }
-
1
呵呵,一如既往的简单~
#include <iostream> using namespace std; int main() { int n; cin >> n; int x = 1, s; for (int i = n - 1; i >= 0; i--) { for (int j = 1; j <= 3; j++) { s = i; if (j != 1) { s *= 2; } for (int k = 1; k <= s; k++) { cout << " "; } for (int k = 1; k <= x; k++) { cout << "*"; } } x += 2; cout << endl; } return 0; }
-
1
#include <cstdio> using namespace std; int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) { for(int j=1;j<=n-i;j++)printf(" "); for(int j=1;j<=2*i-1;j++)printf("*"); for(int j=1;j<=(n-i)*2;j++)printf(" "); for(int j=1;j<=2*i-1;j++)printf("*"); for(int j=1;j<=(n-i)*2;j++)printf(" "); for(int j=1;j<=2*i-1;j++)printf("*"); printf("\n"); } return 0; }
-
1
太简单了,废话不说,上题解(全Ac过)
using namespace std; int main() { int n; cin >> n; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n - i; j++) { cout << " "; } for (int j = 1; j <= 2 * i - 1; j++) { cout << "*"; } for (int j = 1; j <= (n - i) * 2; j++) { cout << " "; } for (int j = 1; j <= 2 * i - 1; j++) { cout << "*"; } for (int j = 1; j <= (n - i) * 2; j++) { cout << " "; } for (int j = 1; j <= 2 * i - 1; j++) { cout << "*"; } cout << endl; } return 0; }
-
0
也是肥常简单好吧😄 。 废话不多说,上代码!
#include <iostream> using namespace std; void san(int n)//定义函数 { for(int i=1;i<=n;i++) { for(int j=1;j<=3;j++)//要重复3次 { for(int k=1;k<=n-i;k++)//输出空格的条件 { cout<<' '; } for(int k=1;k<=i*2-1;k++)//输出星号的条件 { cout<<'*'; } for(int k=1;k<=n-i;k++) { cout<<' '; } } cout<<endl; } } int main() { int n; cin >> n; san(n);//调用函数 } //我比较喜欢用函数,已AC //仅供参考,请不要抄袭
-
-4
把要输出的三角行可以分成如下六个部分,每行分别输出每部分的内容,如下图所示:
第一部分空格的循环范围,即空格个数: 1~n-i
第二部分*的循环范围,即星号个数:1~2*i-1
第三部分空格的循环范围,即空格个数:1~(n-i)*2
第四部分*的循环范围,即星号个数:1~2*i-1
第五部分空格的循环范围,即空格个数:1~(n-i)*2
第六部分*的循环范围,即星号个数:1~2*i-1
for (int i = 1; i <= n; i++) { for (int j = 1; j <= n - i; j++) cout << " "; //每行第一部分的空格 for (int j = 1; j <= 2 * i - 1; j++) cout << "*"; //每行第二部分的* for (int j = 1; j <= (n - i) * 2; j++) cout << " "; //每行第三部分的空格 for (int j = 1; j <= 2 * i - 1; j++) cout << "*"; //每行第四部分的* for (int j = 1; j <= (n - i) * 2; j++) cout << " "; //每行第五部分的空格 for (int j = 1; j <= 2 * i - 1; j++) cout << "*"; //每行第六部分的* cout << endl; //每输出完一行就换行 }
- 1
信息
- ID
- 47
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 2
- 标签
- 递交数
- 632
- 已通过
- 376
- 上传者