zoukankan      html  css  js  c++  java
  • C语言---打印空心菱形

    首先找出上尖三角形的空格和*之间的规律,利用for循环的嵌套来输出上尖三角形,if是用来判断是否输出到最后一个*号,如果是就换行。

        int n = 4;
      
        for(int i = 1 ; i <= n ; i++){
            for(int j = n - i ; j > 0 ; j-- ){  // n - 1 为每一行需要输出的空格数量
                printf(" ");
            }
            for(int x = 1 ; x <= 1+(2*(i-1)) ; x++) //1+(2*(i-1)) 为每一行需要输出的*数量
            {
                printf("*");
                if(x == 1+(2*(i-1)))   //判断是否输出到最后一个 *  如果是就换行
                {
                    printf("
    ");
                }
            }
        }

    然后再补齐下半部分三角,需要注意的是上面的三角形是n = 4 行,但是下部分只需要三行

        for(int x = 1 ; x < n ; x++){
            for(int j = 1 ; j <= x ; j++){
                printf(" ");
            }
            for(int y = 1+(n - x -1)*2 ; y > 0; y--){
                
                printf("*");
                if(y-1 == 0)
                {
                    printf("
    ");
                }
    
            }
        }

    到这里为止,我们已经打印好了实心的菱形,行数为n*2 -1 行。接下来只需要把实心挖空就可以输出空心菱形。

    int n = 4;
        
        for(int i = 1 ; i <= n ; i++){
            for(int j = n - i ; j > 0 ; j-- ){
                printf(" ");
            }
            for(int x = 1 ; x <= 1+(2*(i-1)) ; x++)
            {
                if(1 == x || x == 1+(2*(i-1))) {
                    printf("*");
                }else{
                    printf(" ");
                }
                
                if(x == 1+(2*(i-1)))
                {
                    printf("
    ");
                }
            }
        }
        
        for(int x = 1 ; x < n ; x++){
            for(int j = 1 ; j <= x ; j++){
                printf(" ");
            }
            for(int y = 1+(n - x -1)*2 ; y > 0; y--){
                
                if(y == 1+(n - x -1)*2 || y-1 == 0) {
                    printf("*");
                }else{
                    printf(" ");
                }
                if(y-1 == 0)
                {
                    printf("
    ");
                }
                
            }
        }

    这段代码和上面的区别就在于 输出*的for循环中加入了一个来if判断 ,if输出第一个*和最后一个*的时候按照 *来输出,如果是其他位置不输出*而是输出空格“ ”,这样就达到了挖空的目的

  • 相关阅读:
    Java中接口对象实现回调
    推荐算法之计算相似度
    mahout入门实例2-Mahout单机开发环境介绍(参考粉丝日志)
    mahout入门实例-基于 Apache Mahout 构建社会化推荐引擎-实战(参考IBM)
    windows下gvim使用及常见命令
    一道C语言的问题(转)
    android开发手记一
    数据结构之有关图的算法(图的邻接表示法)
    Week of Code:GG
    HDU 5587:Array
  • 原文地址:https://www.cnblogs.com/yedayi/p/4568821.html
Copyright © 2011-2022 走看看