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输出第一个*和最后一个*的时候按照 *来输出,如果是其他位置不输出*而是输出空格“ ”,这样就达到了挖空的目的

  • 相关阅读:
    JQuery[07]Dom操作
    系统钩子[02] 安装全局鼠标钩子
    [Java动态代理] 设计模式之代理模式
    对话框编程之模态对话框 [03]
    对话框编程之属性对话框 [05]
    [Java反射机制] 通过反射机制创建类的实例并调用其方法
    JQuery[06] 过滤器、相对选择器
    JQuery[04] 节点遍历
    JQuery[13] Ajax的简单应用
    JQuery[09] CSS样式操作/节点操作
  • 原文地址:https://www.cnblogs.com/yedayi/p/4568821.html
Copyright © 2011-2022 走看看