习题4-9 打印菱形图案(15分),成功收获美团小米offer

58 阅读3分钟

web浏览器中的javascript

  • 客户端javascript
  • 在html里嵌入javascript
  • javascript程序的执行
  • 兼容性和互用性
  • 可访问性
  • 安全性
  • 客户端框架

window对象

  • 计时器

  • 浏览器定位和导航

  • 浏览历史

  • 浏览器和屏幕信息

  • 对话框

  • 错误处理

  • 作为window对象属性的文档元素

开源分享:docs.qq.com/doc/DSmRnRG…

* * * * * * * 

  * * * * * 

    * * * 

      * 

#include <stdio.h>

int main()

{

int i,j,n;

scanf("%d",&n);

int k=(n+1)/2;

for(i=1;i<=k;i++){

for(j=1;j<=n-2*i+1;j++){

printf(" ");

}

for(j=1;j<=2*i-1;j++){

printf("* ");

}

printf("\n");

}

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

for(j=1;j<=n-2*i+1;j++){

printf(" ");

}

for(j=1;j<=2*i-1;j++){

printf("* ");

}

printf("\n");

}

return 0;

}

运行结果:  

题目解析:


  1. 看到此题目,要想到用循环的嵌套来解决此问题;
  1. 嵌套的循环可以构成一个平面图案,用 i 控制行, j 控制列;
  1. 用一个外循环来打印行,此题目需要我们打印一个菱形图案,可以将图案分为上下两个部分,并对上下两个部分的图行进行仔细分析,找出一行中空格和 * 号的数量规律。
 for(i=1;i<=k;i++){                  //打印行
        for(j=1;j<=n-2*i+1;j++){             //打印空格
            printf(" ");
        }
        for(j=1;j<=2*i-1;j++){        //打印*和空格
            printf("* ");
        }
        printf("\n");               //换行
    }
  1. 分析图形的下半部分,第5行到第六行,可以再用一个for循环来控制,外循环的i从     n-(n+1)/2开始,这里需要注意的地方是每一行图形的数量是依次减少的,空格的数量是依次增加的,同样找出图形的规律,用循环的嵌套将此图形实现。

二 、习题延申


上面打印的图形,每两个 * 号之间有一个空格,且写的代码用了两个循环的嵌套,针对此类题目做一个优化,接下来写的代码,和此题目类似,区别是用一个循环的嵌套来输出图形。此代码输出的图形每两个*号之间没有空格,只要找准(*)星号,空格,n之间的关系,解决此类题目的方法都一样。

#include <stdio.h>

#include<math.h>

int main()

{

int n,i,j,k;

scanf("%d",&n);

k=(n+1)/2;

for(i=1;i<=n;i++){ //打印行

for(j=1;j<=abs((n+1)/2-i);j++){

printf(" "); //打印空格

}

for(j=1;j<=n-abs((k-i))*2;j++){

printf(""); //打印

}

printf("\n"); //换行

}

return 0;

}

1、abs()函数:绝对值函数;

2、以n=9为例,给出下列解题思路。

三、

--

打印空的菱形,空菱形的特点是只有第一个和最后一个位置上需要打印*,其余打印空格。

web浏览器中的javascript

window对象

  • 计时器

  • 浏览器定位和导航

  • 浏览历史

  • 浏览器和屏幕信息

  • 对话框

  • 错误处理

  • 作为window对象属性的文档元素