精华内容
下载资源
问答
  • 在本篇文章里小编给大家分享了关于用python打印菱形的实操方法和代码,对此有需要的朋友们可以学习下。
  • 使用c++语言实现菱形打印,用于大学生课程设计和业余爱好者的学习和使用,希望大家可以从中获得想要的思想和学到一些有用的知识,欢迎留言提出问题,看到后会回复
  • 利用嵌套循环打印菱形及空心菱形,了解菱形的结构和for嵌套循环的用法,找到关于打印菱形的规律,java初学者的见解
  • 打印菱形

    千次阅读 多人点赞 2020-12-10 10:43:43
    各种各样的打印菱形(持更) 打印菱形打印菱形打印挖空菱形打印数字菱形 打印菱形 1.初级版 Description 由键盘输入正数n(n<30),要求输出如下2*n+1行的菱形图案。 输入样例 2 输出样例 打印挖空菱形 打印...

    各种各样的打印菱形

    打印菱形

    1.初级版
    Description
    由键盘输入正数n(n<30),要求输出如下2*n+1行的菱形图案。

    输入样例
    2

    输出样例在这里插入图片描述

    代码实现1:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
     int i,j,k,n;
     scanf("%d",&n);
     for(i=1;i<=n+1;i++)
     {
         for(j=1;j<=n+1-i;j++)
            printf(" ");
         for(k=1;k<=2*i-1;k++)
            printf("*");
         printf("\n");
     }
     for(i=1;i<=n;i++)
     {
         for(j=1;j<=i;j++)
            printf(" ");
         for(k=1;k<=(2*n+1)-2*i;k++)
            printf("*");
         printf("\n");
     }
        return 0;
    }
    
    

    解析:
    分为上半部分和下半部分

    上半部分
    在这里插入图片描述
    一共有n+1行,最外面的循环控制行数,所以有
    for(i=1;i<=n+1;i++)

    接下来将图形分为打印空格和打印 * 号

    打印空格:
    (用o代表*前的空格数)
    在这里插入图片描述
    可以看出
    每行空格数和行数的关系是

    空格=n+1-行数

    所以空格处用循环
    for(j=1;j<=n+1-i;j++)

    打印*号:
    易看出 每行 * 号和行数的关系是

    *号=2×行数-1

    所以打印 * 用循环
    for(k=1;k<=2*i-1;k++)

    每循环一行别忘了换行哦

    下半部分:
    在这里插入图片描述
    不难看出一共有n行
    控制行数用循环:for(i=1;i<=n;i++)
    每行的空格数显然和该行 行序数一样
    (下半部分重新从第一行开始计算 )在这里插入图片描述
    所以打印空格的循环用
    for(j=1;j<=i;j++)
    打印*号
    在这里插入图片描述
    结合 * 号最多的这行来看
    *和空格存在关系

    2×n+1=2×空格个数+*个数

    所以打印*用循环
    for(k=1;k<=2 * n+1-2 * i;k++)
    ----------over-----------
    代码实现2:(绝对值)

    #include "stdio.h"
    #define abs(x) ((x)>0?(x):-(x))
    main()
    {   int n,i,j;
       scanf("%d",&n);
       for(i=-n;i<=n;i++)
       {
            for(j=1;j<=abs(i);j++)  printf(" ");
            for(j=1;j<=2*n+1-2*abs(i);j++)  printf("*");
            printf("\n");
       }
    }
    
    

    2.空心菱形

    打印挖空菱形

    一.打印边框菱形
    在这里插入图片描述

    代码

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int n;
        int i,j,k,l,m;
        scanf("%d",&n);
        for(i=1;i<=n;i++)
            printf("*");
            printf("\n");
        for(i=1;i<=(n-1)/2;i++)
        {
            for(j=1;j<=(n+1)/2-i;j++)
            printf("*");
          for(k=1;k<=i;k++)
            printf(" ");
            for(k=1;k<=i-1;k++)
                printf(" ");
          for(j=1;j<=(n+1)/2-i;j++)
            printf("*");
            printf("\n");
        }
        for(i=1;i<=(n-1)/2-1;i++)
        {
            for(j=1;j<=i+1;j++)
                printf("*");
            for(k=1;k<=(n+1)/2-(j-1);k++)
                printf(" ");
           for(k=1;k<=(n-1)/2-(j-1);k++)
             printf(" ");
            for(j=1;j<=i+1;j++)
                printf("*");
            printf("\n");
        }
        for(i=1;i<=n;i++)
            printf("*");
        return 0;
    }
    
    

    想法:
    老规矩 将菱形拆分成上下两部分
    这里有一点不同是原来用来呈现菱形的*号作为背景,而背景用 * 号呈现
    上半部分:在这里插入图片描述
    再将上半部分拆分成四个部分:左 * 左空格(图上o部分) 右空格(图上p部分) 右 *
    在这里插入图片描述
    我们需要寻找 * 和空格之间的关系,但如果加上顶行,我们发现好像关系比较难找,所以将第一行全是 * 的单独写一个循环实现:for(i=1;i<=n;i++)

    接下来我们可以找规律了:
    从有空格的一行开始计数,一共是(n-1)/2行,最外层用一个for循环控制行数:for(i=1;i<=(n-1)/2;i++)

    左半部分一共是有(n+1)/2个符号,而左空格的个数刚好和行数i一致,左 * 的个数即为(n+1)/2-i个

    o+ * =(n+1)/2

    先打印 * :for(j=1;j<=(n+1)/2-i;j++) printf("*");
    再打印空格:for(k=1;k<=i;k++) printf(" ");

    / * 右半部分(p和*)一共有(n-1)/2个符号,右 * 和左 * 个数相等,所以右空格个数=(n-1)/2-(j-1) //这里是j-1而不是j的原因是因为
    右半部分:先打印空格:for(k=1;k<=(n-1)/2-j;
    */
    下半部分:

    在这里插入图片描述

    空心菱形改进版:
    描述
    由键盘输入n(n为奇数),打印如下图空心菱形

    在这里插入图片描述

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int n;
        scanf("%d",&n);
        int i,j,k;
        for(i=1;i<=(n+1)/2;i++)
        {
            for(j=1;j<=(n+1)/2-i;j++)
                printf(" ");
    
            printf("*");
            for(k=1;k<=(i-1)*2-1;k++)
                printf(" ");
            if(i>=2)printf("*");
            printf("\n");
        }
        for(i=1;i<=(n-1)/2;i++)
        {
            for(j=1;j<=i;j++)
                printf(" ");
            printf("*");
            if(i<(n-1)/2)
            {for(j=1;j<=n-2*i-2;j++)
                printf(" ");
            printf("*");}
            printf("\n");
        }
        return 0;
    }
    
    

    打印数字菱形

    1.在这里插入图片描述
    代码

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int n,j,i,k;
        int m;
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n-i;j++)
                printf(" ");
            for(k=1;k<=i;k++)
                printf("%d",k);
            for(m=i-1;m>=1;m--)
                printf("%d",m);
            printf("\n");
        }
        for(i=1;i<=n-1;i++)
        {
            for(j=1;j<=i;j++)
                printf(" ");
            for(k=1;k<=n-i;k++)
                printf("%d",k);
            for(m=n-i-1;m>=1;m--)
                printf("%d",m);
            printf("\n");
        }
        return 0;
    }
    
    展开全文
  • Description 由键盘输入正数n(n<30),要求输出如下2*n+1行的菱形图案。 输出格式 菱形右边不留多余空格 输入样例 2 输出样例 * *** ***** *** *
  • c代码-输入一个大写字母打印菱形。菱形中间一行由该字母组成,相邻的各行由前面的字母依次组成,直到字母A出现在第一行和最末行为止。例如输入字母D,输出图形如下
  • C语言打印菱形

    万次阅读 多人点赞 2019-03-22 19:58:23
    打印菱形这道题对于初学编程者来说简直是噩梦,曾经我就是栽在这上面的,后来编程编多了之后对打印菱形也觉得不再那么难了,去年在公众号写了一篇推送是关于打印菱形的,觉得对一些师弟师妹还是有所帮助的,今天就把...

    打印菱形这道题对于初学编程者来说简直是噩梦,曾经我就是栽在这上面的,后来编程编多了之后对打印菱形也觉得不再那么难了,去年在公众号写了一篇推送是关于打印菱形的,觉得对一些师弟师妹还是有所帮助的,今天就把这道题分享出来。以下是我遇到的各种各样的菱形:
    在这里插入图片描述
    普通菱形,输入n,输出n行n列的菱形

    难度系数:♥
    在这里插入图片描述
    n行空心菱形,输入n,输出n行空心菱形

    难度系数:♥♥
    在这里插入图片描述
    n行挖空菱形,输入n,输出n行n列空格菱形

    难度系数:♥♥♥

    在这里插入图片描述
    n行数字菱形,输入n,输入n行数字从外到内递增的数字菱形

    难度系数:♥♥♥♥
    在这里插入图片描述
    有边框空心菱形,输入n,输出n行带有边框的空心菱形

    难度系数:♥♥♥♥♥

    首先我们要明确这是一个随着n的大小改变的菱形,所以我们肯定要用到循环,并且循环的次数与n有关。如果题目要求是输出n行,那我们的循环就是0(n-1)或者1n;如果要求是输出(2n+1)行,那我们的循环就0-2n或者1~(2n+1)即可。(后面以输出n行为例分析)
    第一个是普通的实心菱形,循环n行大家都懂,问题就在列要怎样循环。难道是看出来的吗?不错,我就是通过看得出来的循环次数。具体怎么看呢?
    根据图直接看有点难度,所以我们根据各行数据来看
    在这里插入图片描述
    我们需要将整个菱形分成四块来考虑,从上到下空格的个数先从n/2递减到0后递增到n/2,而行循环因子i又从0递增到n,故自然可联想到用i与n/2来表示空格个数。因为空格个数是非负数,所以我们引进绝对值|n/2-i|表示空格个数。打完空格之后,我们就要正式用 ’ * '打印菱形了。通过观察我们发现 * 号的个数为奇数,并且变化规律跟空格正好相反,所以
    号个数即是-2*(空格个数)+1+C(常数)=-2*(空格个数)+C(常数),通过观察我们发现这个常数C正好是n/2。于是第一种菱形就可以顺利完成了!
    在这里插入图片描述
    第二个是空心菱形,与实心菱形相似,可看成在实心菱形上再打了一个空格菱形。由于每行的号数不多,并且可以看到号正好位于空格菱形的外围,所以我们可以将打印号放在打印空格菱形前后顺便打印,即在打印空格菱形之前打号,打印完空格菱形之后再打印号。同样,我们将相关数据列出来然后观察规律。号前空格与实习菱形一致,而我们发现n-2|n/2-i|-2的值除了首尾两行外,其他都与空格菱形的空格个数一致,而首尾两行是-1表示在该处不需打空格反而需要退一个格,但由于我们当前位置为号,而退格后依旧要打号,所以我们可以直接判断是否为第一行或最后一行,是则少打印一个号即可。
    在这里插入图片描述
    第三个是挖空菱形,该菱形是上述两个的合体,我们可以看成把一个实心菱形的各个字符替换成另一种字符,再插入一个空心菱形。所以我们把该菱形分成输出空心菱形前后号和输出空心菱形两部分。通过数据对比,我们不难发现,输出空心菱形前后号的数据与实心菱形输出号前空格个数一致,然后就是输出一个空心菱形,最后要记得在输出空心菱形之后输出空心菱形之后的号,根据对称可知,空心菱形后号个数与空心菱形前号一致。
    在这里插入图片描述
    第四个是数字菱形,该菱形的特点是数字从外到内逐层递增。我们发现该菱形中轴线数字的变化规律是先从1递增到(n+1)/2,然后再递减到1,并且每一行的数字也是从1递增到中轴线,再递减到1,因此我们要找到中轴线所在的位置(方便判断循环因子是否到达中轴线)。通过列数据我们发现中轴线所在位置(j从0开始循环)为n/2-|n/2-i|,所以在每一行中我们的数字加到“j==n/2-|n/2-i|”处时应该转成递减,所以我们引进要填充的数字k,在每一行开始时k为1,在j从0到n/2-|n/2-i|-1中,k逐次递增,在j从n/2-|n/2-i|到n-2*|n/2-i|-1中k递减。然后将打印星号改为打印数字即可。
    在这里插入图片描述
    第五个是边框空心菱形。从名字可知,该菱形由边框和空心菱形组成,我们可以将边框和空心菱形分开来考虑。第一行和最后一行为边框,可直接用从0到n-1打印号实现。左右边框在每一行的开头和结尾打印号即可实现。中间即是空心菱形的领域,基本上跟打印空心菱形一样,只是要注意被边框覆盖的地方空格和号要省略。
    将打印空格和打印
    号分开考虑,通过数字之间的关系特点,运用循环完成菱形的打印。

    由于菱形是对称的,所以绝对值是最好的数据描述工具,要巧妙地运用绝对值,将对称部分的循环用同一个带有绝对值的表达式表示出来。

    值得注意的是n/2为整数除,所以不会得到小数,也不是四舍五入。

    中轴线所在位置(j从0开始循环)为n/2-|n/2-i|。

    //挖空菱形
        for(i=0;i<n;i++){
            for(j=0;j<abs(n/2-i);j++)
                printf("*");
            printf("*");
            for(j=0;j<n-2*abs(n/2-i)-2;j++)
                printf(" ");
            if(j!=0)
                printf("*");
            for(j=0;j<abs(n/2-i);j++)
                printf("*");
            printf("\n");
        }
        printf("\n");
        //边框菱形
        for(i=0;i<n;i++){
            if(i==0||i==n-1){
                for(j=0;j<n;j++)
                    printf("*");
                printf("\n");
            }
            else{
                printf("*");
                for(j=0;j<abs(n/2-i)-1;j++)
                    printf(" ");
                if(j!=0)
                    printf("*");
                for(j=0;j<n-2*abs(n/2-i)-1;j++)
                    printf(" ");
                if(j!=0)
                    printf("*");
                for(j=0;j<abs(n/2-i)-1;j++)
                    printf(" ");
                if(j!=0)
                    printf("*");
                printf("\n");
            }
        }
        //数字菱形
        for(i=0;i<n;i++){
            int k=1;
            for(j=0;j<abs(n/2-i);j++)
                printf(" ");
            for(j=0;j<n-2*abs(n/2-i);j++){
                printf("%d",k);
                if(j<n/2-abs(n/2-i))
                    k++;
                else
                    k--;
            }
            printf("\n");
        }
        //实心菱形
        for(i=0;i<n;i++){
            for(j=0;j<abs(n/2-i);j++)
                printf(" ");
            for(j=0;j<n-2*abs(n/2-i);j++)
                printf("*");
            printf("\n");
        }
        printf("\n");
        //空心菱形
        for(i=0;i<n;i++){
            for(j=0;j<abs(n/2-i);j++)
                printf(" ");
            printf("*");
            for(j=0;j<n-2*abs(n/2-i)-2;j++)
                printf(" ");
            if(j!=0)
                printf("*");
            printf("\n");
        }
    
    展开全文
  • Java实现打印菱形

    2021-07-22 20:28:15
    Java实现打印菱形 作为Java初学者刚刚学习了如何通过控制台打印菱形,代码如下: 实心菱形方案一: public class rhombus { public static void main(String[] args) { // 使用循环语句,打印菱形 // 1111* // 111*...

    Java实现打印菱形

    作为Java初学者刚刚学习了如何通过控制台打印菱形,代码如下:

    实心菱形方案一:

    public class rhombus {
        public static void main(String[] args) {
    //        使用循环语句,打印菱形
    //        1111*
    //        111***
    //        11*****
    //        1*******
    //          *****
    //           ***
    //            *
    
            for (int i = 1; i <= 4; i++) {
                for (int j = 4; j >= i; j--) {
                    System.out.print(" ");
                }
                for (int k = 1; k <= 2*i-1; k++) {   //1 3 5 7      if(k == 1 || k == 2*i-1){print("*")}
                    System.out.print("*");
                }
                System.out.println();
            }
            for (int i = 1; i <= 3; i++) {
                for (int j = 1; j <= i + 1; j++) {
                    System.out.print(" ");
                }
                for (int k = 1; k <= (3 - i)*2 + 1; k++){  //5 3 1
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    }
    

    可以实现实心菱形,那么空心菱形也可以参考这种思路,代码如下:

    空心菱形方案一:

    public class rhombusNull {
        public static void main(String[] args) {
    
            for (int i = 1; i <= 4; i++) {
                for (int j = 4; j >= i; j--) {
                    System.out.print(" ");
                }
                for (int k = 1; k <= 2*i-1; k++) {  
                    if(k == 1 || k == 2*i-1){
                        System.out.print("*");
                    }else {
                        System.out.print(" ");
                    }
                    
                }
                System.out.println();
            }
            for (int i = 1; i <= 3; i++) {
                for (int j = 1; j <= i + 1; j++) {
                    System.out.print(" ");
                }
                for (int k = 1; k <= (3 - i)*2 + 1; k++){
                    if(k == 1 || k == (3 - i)*2 + 1){
                        System.out.print("*");
                    }else {
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
    }
    

    实心菱形方案二:

    该方案调整a的值可以改变菱形的大小。

    例如使用键盘输入调整a的值

    //第一步,导包
    import java.util.Scanner;
    //第二步,创建对象
    Scanner scan = new Scanner(System.in);
    //第三步,引用
    int a = scan.nextInt();
    
    public class rhombus {
        public static void main(String[] args) {
            int a = 4;
            for (int i = 0; i < a; i++) {
                for (int j = 0; j < a * 2; j++) {
                    if (j >= a - i && j <= a + i) {
                        System.out.print("*");
                    } else {
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
            for (int i = a - 1; i > 0; i--) {
                for (int j = 0; j < a * 2; j++) {
                    if (j >= a - i + 1 || j <= a + i - 1) {
                        System.out.print("*");
                    } else {
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
    }
    
    

    空心菱形方案二:

    该方案调整a的值同样可以改变菱形的大小。

    public class rhombusNull {
        public static void main(String[] args) {
    //        使用循环语句,打印空心菱形
    //            *
    //           * *
    //          *   *
    //         *     *
    //          *   *
    //           * *
    //            *
            //分析的位置如下:
    //            5
    //           4 6
    //          3   7
    //         2     8
    //          3   7
    //           4 6
    //            5
    // 先确定上半部分有四行,再分成10列,每格输出空格,如果处于边界就输出*
    
            int a = 4;
            for (int i = 0; i < a; i++) {
                for (int j = 0; j < a * 2; j++) {
                    if (j == a - i || j == a + i) {  //符合条件的边界,第一行为5,第二行为5-1|5+1.第三行为5-2|5+2
                        System.out.print("*");
                    } else {
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
            for (int i = a - 1; i > 0; i--) {
                for (int j = 0; j < a * 2; j++) {
                    if (j == a - i + 1 || j == a + i - 1) {   //通过运算寻找符合条件的点
                        System.out.print("*");
                    } else {
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }
        }
    }
    
    
    展开全文
  • 本文主要介绍了用指定的字符打印菱形的方法实例,一个简单容日上手的小程序,喜欢的朋友可以拿来练习一下。
  • c语言for循环打印菱形的方法:使用两个for循环,实现条件判断,代码为【int i,j;for(i=0; i<2*n-1; i )_(i=n-i-1&&jc语言f...

    c语言for循环打印菱形的方法:使用两个for循环,实现条件判断,代码为【int i,j;for(i=0; i<2*n-1; i )_(i=n-i-1&&j

    c语言for循环打印菱形的方法:

    方法一(以循环为主打印)

    #include 

    void print(int n) 



        int i,j; 

        for(i=1; i<=n; i ) 

        { 

            for(j=1; j<=n-i; j ) 

            { 

                printf(" "); 

            } 

            for(j=n-i 1; j
            { 

                printf("*"); 

            } 

            printf("\n"); 

        } 

          

        for(i=n-1; i>=1; i--) 

        { 

            for(j=1; j<=(n-i); j ) 

            { 

                printf(" "); 

            } 

            for(j=n-i 1; j
            { 

                printf("*"); 

            } 

            printf("\n"); 

        } 



      

    void main() 



        int n; 

        printf("---------开始打印符号---------\n"); 

        printf("请输入数字:"); 

        scanf("%d",&n); 

        print(n); 

        printf("---------结束打印符号---------\n");     

    }

    方法二:(两个for,根据条件判断实现)

    #include 

    //输出格式 

    void print(char ch) { 

        putchar(ch); 



    //星号 

    void printstar(int n) 



        int i,j;    //行,列 

        for(i=0; i<2*n-1; i ) 

        { 

            for(j=0; j<2*n-1; j ) 

            { 

                if(i
                { 

                    if(j>=n-i-1&&j
                    { 

                        print('*'); 

                    } 

                    else

                    { 

                        print(' '); 

                    } 

                } 

                else

                { 

                    if(j>=i-n 1&&j<3*n-i-2) 

                    { 

                        print('*'); 

                    } 

                    else 

                    { 

                        print(' '); 

                    } 

                } 

      

            } 

            print('\n'); 

        } 



      

    void main() 



        int n; 

        printf("---------开始打印符号---------\n"); 

        printf("请输入数字:"); 

        scanf("%d",&n); 

        printstar(n); 

        printf("---------结束打印符号---------\n");     

    }

    说明:(2n-1)—(n-i-1)= n i

    (2n-1)— (-(n-i-1))= 3n-i-2

    结果:

    声明:

    本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。


    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,001
精华内容 6,000
关键字:

打印菱形