12 条题解

  • 9
    @ 2022-8-17 20:57:38

    今天这道题主要就是找规律,我们先来举一组栗子~

    1. 假设 n 为 5,那么每一行该如何打印呢?先看看第一行吧~
    2. 第一部分:空格 4 个,也就是 (n - 1)个空格
    3. 第二部分:星号 1 个,也就是(2 * 1 - 1)个星
    4. 第三部分:空格 8 个,也就是(n - 1)* 2 个空格
    5. 后面的部分就是重复第二部分和第三部分
    6. 那么接下来我们可以将循环的参数设为从 1 ~ n,一共 n 行
    7. 再把没有参数的式子比如第二部分和第三部分改成有参数(比如 x , i 等)
    8. 改完以后分别是(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
      @ 2022-10-6 9:02:12
      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
        @ 2022-8-24 19:03:39

        发现方法都跟我不一样,发个题解😎😎。 可以用循环变量来控制。一次大循环套一个中循环,一次中循环套两个小循环。 在这里插入图片描述 (这里借用一下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
          @ 2023-7-7 12:57:17

          #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
            @ 2022-7-1 20:04:00
            #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
              @ 2023-6-9 6:54:08

              三个三角形在每行的三个部分都是一样的,可以直接输出每行是输出三遍

              #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
                @ 2024-1-30 15:17:44

                呵呵,一如既往的简单~

                #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
                  @ 2023-12-17 20:37:28
                  #include<iostream>
                  using namespace std;
                  int main(){
                  	int n;
                  	cin>>n;
                  	for(int i=1;i<=n;i++){
                  		for(int j=1;j<=3;j++){
                  			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;
                  	}
                  	return 0;
                  } 
                  
                  • 1
                    @ 2023-7-21 21:34:59
                    #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
                      @ 2023-3-13 18:45:53

                      太简单了,废话不说,上题解(全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
                        @ 2024-1-29 17:37:56

                        也是肥常简单好吧😄 。 废话不多说,上代码!

                        #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
                          @ 2022-5-26 20:25:58

                          把要输出的三角行可以分成如下六个部分,每行分别输出每部分的内容,如下图所示:

                          在这里插入图片描述 第一部分空格的循环范围,即空格个数: 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
                        上传者