>  기사  >  웹 프론트엔드  >  JavaScript 인쇄 별 피라미드 기능 구현 예

JavaScript 인쇄 별 피라미드 기능 구현 예

黄舟
黄舟원래의
2017-09-28 11:09:253092검색

이 글에서는 별 피라미드 인쇄 기능을 구현하기 위한 JavaScript를 주로 소개합니다. 특정 예제를 기반으로 특정 행 수로 별 피라미드 그래픽을 출력하는 JavaScript의 원리와 관련 구현 기술을 분석합니다. 이 기사

JavaScript가 별 피라미드 인쇄 기능을 구현하는 방법을 설명합니다. 참고하실 수 있도록 자세한 내용은 다음과 같습니다.

다른 언어로 작성하는 것도 똑같습니다.

C 언어를 배울 때 이 질문을 본 적이 있을 것 같은데요...

즉, 다음과 같은 유령을 인쇄하세요.

루프 구조를 봤을 때 너무 심심해서 이 질문에 대해 별로 경멸감을 느꼈어요.

그렇다면 말이죠. JavaScript로 쓰면 이렇게 쓸 수 있는데, JavaScript도 아니고 그냥 HTML일 뿐입니다:


<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=gb2312"/>
</head>
<body>
&nbsp;&nbsp;*
&nbsp;***
*****
&nbsp;***
&nbsp;&nbsp;*
</body>
</html>

여기서 utf-8 인코딩을 사용하지 않는 이유는 utf-8의 nbsp 처리와 * 글꼴은 레이아웃 혼란을 야기합니다. 즉, 표준 Song 글꼴을 사용하지 않아 최종 결과를 볼 수 없습니다.

아무튼 위 내용은 몇 줄을 올려도 복사해서 붙여넣을 수 있는데, 오늘은 어느 정도 프로그래밍을 하고 빅데이터 개념을 잡게 되면서 이 질문을 다시 보고 곰곰히 생각하게 되었습니다. 질문한 사람이 중심축에 20만 개의 대칭선이 있는 별 모양의 피라미드를 출력하라고 하면 나는 저주받을 것입니다.

그러므로 이를 구현하는 방법을 완전히 이해해야 합니다. 실제 프로그래밍에서는 이러한 프로그래밍이 발생하지 않지만 적어도 후발자가 C 언어에 대해 묻는 경우 이러한 질문이 계속 발생한다고 합니다. 중심축 대칭이 200,000줄인 별 모양의 피라미드를 출력하더라도 처음에 이 질문을 할 수 없다면 어떻게 해야 할지 알아야 합니다.

1. 기본 목표

먼저 입력 상자가 나타나고 사용자가 홀수를 입력할 수 있습니다. 결국 축 대칭에는 홀수가 필요합니다. 그러면 프로그램의 견고성은 무엇입니까? 사용자 입력을 판단해야 합니다. 입력이 홀수가 아니면 프롬프트가 나타나고 후속 프로그램이 실행되지 않습니다. JavaScript를 사용하여 홀수를 결정하는 방법은 이미 "JavaScript의 판단 및 처리"에서 언급했습니다. 숫자'에 대해서는 여기서 자세히 설명하지 않겠습니다.

여기에서는 브라우저의 부하를 고려하여 사용자가 입력하는 홀수만 189로 허용합니다. 189를 늘려도 괜찮다고 생각해서 이 숫자로 설정했습니다. . 특별한 의미는 의도적인 테스트가 아닌 무작위 입력입니다.

189 줄을 입력하면 IE는 이미 "스크립트를 중단하세요"라는 프롬프트를 띄웠지만 중단하지 않으면 문제가 없습니다!

실행 결과는 다음과 같습니다.

C 언어 프로그램이나 다른 프로그램을 작성하는 경우 이 값은 확실히 더 크게 설정할 수 있습니다!

2. 기본 개념

이것을 이해하고 나면 작성하기가 매우 쉽습니다.

먼저 *의 왼쪽에 공백만 출력하면 되고, 오른쪽에는 공백을 출력할 필요가 없이, *를 입력한 후 바로 줄을 바꿔주시면 됩니다

로 나누어져 있습니다. 두 부분으로, 한 부분은 위쪽 부분 i028d6d0408fd6da2cd9be3b473560d98n/2일 때입니다.

가 이렇게 구분되는 이유는 이 두 부분에 의해 출력되는 * 기호 때문입니다. 부품과 출력되는 공간의 수가 다릅니다.

이후 규칙을 찾는 것은 중학교 시절 흔한 문제였는데, 아무튼 위의 규칙을 찾았고, 프로그래밍할 때 문제가 없었는데, 다른 수학 황제들이 더 멋진 표현을 찾아냈고, 저는 패배했습니다.

3. 제작 과정

코드는 매우 간단합니다. 위의 개념을 이해하면 말할 것도 없이 조건부 구조와 루프 구조를 표현한 것입니다.

어떤 사람들은 여기서 이상하다고 생각할 수도 있는데 왜 n++을 먼저 판단한 다음 n%2!=0, 즉 n이 홀수인지 판단하기 위해 n+1이 짝수인지 판단해야 합니까?

주로 다음과 같은 for 루프 구조에 대응하기 위한 것입니다…


<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=gb2312"/>
</head>
<body>
</body>
</html>
<script>
var i,j,k,n;
n=window.prompt("请输入要输出的行数n,为了形成轴对称,所以你输出的必须是奇数!");
if(isNaN(n)||!n)
  alert("你输入的不是数!");
else{
  n++;
  if(n%2!=0)
    alert("你输入的不是奇数!");
  else if(n>190){
    alert("不要这么大嘛!臣妾做不到啊!");
  }
  else{
    for(i=1;i<n;i++){
      if(i<=n/2){
        for(k=n/2-i;k>0;k--)
          document.write("&nbsp;");
        for(j=0;j<2*i-1;j++)
          document.write("*");
          }
      else{
        for(k=i-n/2;k>0;k--)
          document.write("&nbsp;");
        for(j=0;j<2*(n-i)-1;j++)
          document.write("*");
        }
      document.write("<br>");
    }
  }
}
</script>

너무 많이 말해도 눈물이 나네요, 직접 경험해 보겠습니다...

위 내용은 JavaScript 인쇄 별 피라미드 기능 구현 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.