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

  • 相关阅读:
    大文件上传插件
    大文件上传解决方案
    up7-文件保存位置
    up6-自定义文件存储路径
    up7.1-asp.net-本地测试教程
    文件上传控件产品比较
    IIS支持解析json
    IE8控件安装方法
    IE9控件安装方法
    gets()函数详解和缺陷
  • 原文地址:https://www.cnblogs.com/yedayi/p/4568821.html
Copyright © 2011-2022 走看看