AI编程助手
AI免费问答

在C语言中打印对称的双三角形图案

王林   2023-09-14 12:53   1811浏览 转载

在c语言中打印对称的双三角形图案

给定行数,程序必须以最小的复杂性打印对称双三角形图案。

示例

Input: 5
Output:  X
          X
          O X
           O X
      X O X O X
       X O
        X O
         X
          X

整个问题包含3个不同的分区 −

  • 对于奇数n,打印上半部分的n-1行,对于偶数n,打印上半部分的n-2行。

  • 打印中间行,对于奇数n,打印1行,对于偶数n,打印3行。

  • 打印下半部分,对于奇数n,打印n-1行,对于偶数n,打印n-2行。

算法

START
   STEP 1: IF (n % 2 == 0) then
      x = x - 1;
      Define p as n – 1 for spaces
      Define s = 1 for characters
   STEP 2: LOOP FOR i= 1 AND i <h2>示例</h2><pre class="brush:php;toolbar:false;">#include <stdio.h>
// printing alternate x o starting with x
int printx(int n) {
   int i;
   for ( i = 1; i <p>");
         p++;
      for ( j = 1; j </p>
<p>");
         p--;
         s++;
   }
   // extra upper middle for even
   if (n % 2 == 0) {
      for ( i = 1; i </p>
<p>");
   }
   // middle line
   if (n % 2! = 0)
      printx(n);
   else {
      if (n % 4! = 0) {
         printx(n / 2);
         printx(n / 2);
      } else {
         printx(n / 2);
         printo(n / 2);
      }
   }
   printf("</p>
<p>");
   // extra lower middle for even
   if (n % 2 == 0) {
      printf(" ");
      printx(n / 2);
      printf("</p>
<p>");
   }
   // lower half
   p = 1;
   if (n % 2 == 0) {
      x--;
      p = 2;
   }
   int q = x / 2;
   // one line for each iteration
   for ( i = 1; i </p>
<p>");
         p++;
   }
   printf("</p>
<p>");
   return 1;
}
int main() {
   int n = 5;
   printpattern(n);
   return 0;
}</p></stdio.h>

输出

如果我们运行上面的程序,它将生成以下输出。

      X
       X
       O X
        O X
   X O X O X
    X O
     X O
      X
       X

13万字C语言保姆级教程(深入):立即学习
在学习笔记中,你将探索c语言的核心概念和高级技巧!

声明:本文转载于:tutorialspoint,如有侵犯,请联系admin@php.cn删除