当前位置: 首页 > news >正文

网站开发 界面软件定制开发盈利模式

网站开发 界面,软件定制开发盈利模式,nas可以做网站,中国石化工程建设有限公司题目描述] 分析: 利用程序根据输入的整数,画出由字符*构成的该整数阶的实心菱形。给出一个示例: n 7 n7 n7。 * * * * * * * * * * * * * * * * * * * * * * * * * 我们将采取拆解问题,通过四个部分的…

题目描述]


分析:

利用程序根据输入的整数,画出由字符*构成的该整数阶的实心菱形。给出一个示例: n = 7 n=7 n=7

      *       * * *     * * * * *   
* * * * * * * * * * * *   * * *     *       

我们将采取拆解问题,通过四个部分的组合最终拼出这个菱形。通过观察,可以看出不管给出的整数是多少,最终形成的图形一定是一由空格 和星星*构成个正方形(记为s)。如图1所示。
在这里插入图片描述

图1 正方形
#### 拼出第一部分-对角线 另外我们可以知道正方形有两条相交的对角线,它将正方形分成了四个相等的部分。如图2所示。

在这里插入图片描述

图2 对角线示意

基于此我们可以先将这两条对角线画出来,是不是就成功了一半了呢?这两条对角线也很容易画,一条线是 x = 3 ( n / 2 ) x=3(n/2) x=3(n/2),另一条是 y = n / 2 y=n/2 y=n/2。给出画对角线的代码:

	for (int i = 0; i < n; i ++) { // 画出十字架对角线for (int j = 0; j < n; j ++) {if (i == n / 2 || j == n / 2) res[i][j] = '*';}}

通过这一步画出的图形为:

      *       *       *       
* * * * * * * *       *       *       
拼出第二部分-左上角

有了这两条相交的对角线,我们只需要处理左上角需要描的点即可,然后利用相交的对角线通过关于 x x x轴对称与 y y y轴对称的方法映射到其他的三个区域!如图3所示。

在这里插入图片描述

图3 x、y映射

那么该怎么计算左上角的该描的点呢?我们可以观察这三个点的坐标 ( 1 , 2 ) , ( 2 , 1 ) , ( 2 , 2 ) {(1,2), (2,1), (2, 2)} (1,2),(2,1),(2,2),也可以表示为 ( 1 , n / 2 − 1 ) , ( 2 , 1 ) , ( 2 , n / 2 − 1 ) {(1,n/2-1), (2,1), (2, n/2-1)} (1,n/21),(2,1),(2,n/21)。因此可以用双层循环进行遍历,伪代码如下:

	// 左上角描点for (int i = 1; i <= n / 2 - 1; i ++) { // 1到n/2-1行for (int j = n / 2 - 1; j>= n / 2 - i; j --) { // 倒着来,从n/2-1到n/2-i列res[i][j] = '*';}}

经过这一步,我们所画出来的图形为:

      *       * *       * * *       
* * * * * * * *       *       *       
拼出第二部分-右上角

当我们画出左上角后,可以将 n / 2 n/2 n/2视作 y y y轴,进行关于y轴的对称实现映射效果。具体流程为:先遍历一遍左上角,遇到为*的就进行映射,只需要更改列的坐标即可,给出代码:

        for (int i = 1; i <= n / 2 - 1; i ++) { // 对称到右上角for (int j = 1; j <= n / 2 - 1; j ++) {if (res[i][j] == '*') {res[i][n / 2 + (n / 2 - j)] = res[i][j];}}}

此时生成的图形为:

      *       * * *     * * * * *   
* * * * * * * *       *       *       
接下来该怎么拼?

后面有多种拼法,可以先做左上角/右上角关于 x x x轴的对称,映射到左下角/右下角。这里我将上半部分当作一个整体,进行 x x x轴对称,一步到位!代码为:

	for (int i = 1; i <= n - 1; i ++) { // 对称到整个下方for (int j = 1; j <= n - 1; j ++) {if (res[i][j] == '*') {res[n / 2 + (n / 2 - i)][j] = res[i][j];}}}

图像为:

      *       * * *     * * * * *   
* * * * * * * * * * * *   * * *     *      

至此,菱形就被我们画出来。这道题有需要不同的画法,上面只是笔者自己的理解,关于其他更优雅更简洁的方法请大家开动脑筋去尽情尝试吧!!

代码(Java)

import java.util.*;public class Main {public static void main(String args[]) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int x = n / 2;char[][] res = new char[n][n];for (int i = 0; i < n; i ++) { // 画出十字架for (int j = 0; j < n; j ++) {if (i == n / 2 || j == n / 2) res[i][j] = '*';}}for (int i = 1; i <= n / 2 - 1; i ++) { // 左上角for (int j = n / 2 - 1; j>= n / 2 - i; j --) {res[i][j] = '*';}}for (int i = 1; i <= n / 2 - 1; i ++) { // 对称到右上角for (int j = 1; j <= n / 2 - 1; j ++) {if (res[i][j] == '*') {res[i][n / 2 + (n / 2 - j)] = res[i][j];}}}for (int i = 1; i <= n - 1; i ++) { // 对称到整个下方for (int j = 1; j <= n - 1; j ++) {if (res[i][j] == '*') {res[n / 2 + (n / 2 - i)][j] = res[i][j];}}}for (int i = 0; i < n; i ++) {for (int j = 0; j < n; j ++) {if (res[i][j] == '*') System.out.print('*');else System.out.print(' ');}System.out.println();}}
}
http://www.15wanjia.com/news/160396.html

相关文章:

  • 厦门模板建站哪家好微信网站开发流程
  • lamp 做网站资源开发公司经营范围
  • wordpress设置关站深圳精品网站制作
  • 国外电商网站有哪些1688黄页网生产企业
  • 深圳做微商网站公司凡科用模板做网站
  • 建设网站需要哪些费用做网站后租服务器一年多少钱
  • 网站策划怎么做国产软件开发工具
  • 网站建设的创意免费拓客软件
  • 网页设计教学网站西安微信网站制作
  • 做网站 证书 浏览器做旅游网站多少钱
  • 手机百度关键词排名 网站优化软件福田蒙派克g5
  • 娄底网站建设企业重庆网站公司
  • 典型的网站开发人员网站后台修改教程
  • 办个网站卖什么好处浙江省建设信息港特种查询
  • 做网站花钱么最新推广方法
  • 河源市网站建设公司网站切图大图
  • 如何创建自己网站免费网站推广网址
  • iis7.5网站配置厦门市建设路网站
  • wordpress 网站备案工业设计公司排行
  • 珠海网站建设科速互联泉州网站建设维护
  • 贵阳企业网站建设wordpress修改管理密码
  • 宿迁网站建设开发深圳做网站新科
  • 可信网站免费认证krypt免费wordpress空间
  • 上海cms建站系统wordpress 软件 主题
  • 专业网站建设公司首选公司flashfxp上传网站
  • 青岛即墨网站建设设计餐饮品牌vi设计包括哪些
  • 大淘客网站logo怎么做国外营销型网站建设
  • 0基础做网站多久河南最新政策
  • 网站建设入门教程pdf网站如何做快捷支付接口
  • 做废钢推广网站wordpress鼠标滑过几何线条