与琪热恋 发表于 2021-3-10 15:25:59

镂空三角形

请通过函数实现,输出底边长为 n的镂空等腰三角形。

输入

标准输入,包括两部分:c,n(0 <= n <=100,)c,n(0<n≤100,),c为指定输出的ASCII字符,n为指定的边长。

输出

用指定的字符输出边长为n的镂空等腰三角形。

示例输入

x 3
示例输出

x
x x
x x x

谢谢!

人造人 发表于 2021-3-10 16:25:35

#include <stdio.h>

void print(char ch, size_t n) {
    if(n == 0) return;
    n = (n - 1) * 2 + 1;
    size_t a, b;
    a = b = n / 2;
    while(b < n - 1) {
      for(size_t i = 0; i < n; ++i) {
            if(i == a || i == b) putchar(ch);
            else putchar(' ');
      }
      putchar('\n');
      --a; ++b;
    }
    for(size_t i = 0; i < n; ++i) putchar(ch);
    putchar('\n');
}

int main(void) {
    char ch;
    size_t n;
    scanf("%c%lu", &ch, &n);
    print(ch, n);
    return 0;
}

人造人 发表于 2021-3-10 16:27:06

本帖最后由 人造人 于 2021-3-10 16:28 编辑

jackz007 发表于 2021-3-10 16:33:19

#include <stdio.h>

int main(void)
{
      char c                                                      ;
      int i , j , n                                                 ;
      scanf("%c%d" , & c , & n)                                     ;
      for(i = 0 ; i < n - 1 ; i ++) {
                for(j = n - i - 1 ; j ; j --) printf(" ")             ;
                printf("%c" , c)                                    ;
                if(i) {
                        for(j = 0 ; j < i * 2 - 1 ; j ++) printf(" ") ;
                        printf("%c" , c)                              ;
                }
                printf("\n")                                          ;
      }
      for(i = 0 ; i < n * 2 - 1 ; i ++) printf("%c" , c)            ;
}
      编译、运行实况
D:\0002.Exercise\C>g++ -o x x.c

D:\0002.Exercise\C>x
* 5
    *
   * *
*   *
*   *
*********
D:\0002.Exercise\C>x
* 3
*
* *
*****
D:\0002.Exercise\C>x
* 21
                  *
                   * *
                  *   *
               *   *
                *       *
               *         *
            *         *
             *             *
            *               *
         *               *
          *                   *
         *                     *
      *                     *
       *                         *
      *                           *
   *                           *
    *                               *
   *                                 *
*                                 *
*                                     *
*****************************************
D:\0002.Exercise\C>

与琪热恋 发表于 2021-3-13 23:21:50

#include <stdio.h>
int main(void)
{
    char c;
    int i, j, n;
    scanf("%c%d", &c, &n);
    for (i = 0; i < n - 1; i++)
    {
      for (j = n - i - 1; j; j--)
      printf(" ");
      printf("%c", c);
      if (i)
      {
            for (j = 0; j < i * 2 - 1; j++)
            printf(" ");
            printf("%c", c);
      }
      printf("\n");
    }
    for (i = 0; i < n-1; i++)
    {
      printf("%c", c);
      printf(" ");
    }
    printf("%c\n", c);
}

与琪热恋 发表于 2021-3-13 23:22:57

jackz007 发表于 2021-3-10 16:33
编译、运行实况

注意题目中n为底边所以我改了下程序
#include <stdio.h>
int main(void)
{
    char c;
    int i, j, n;
    scanf("%c%d", &c, &n);
    for (i = 0; i < n - 1; i++)
    {
      for (j = n - i - 1; j; j--)
      printf(" ");
      printf("%c", c);
      if (i)
      {
            for (j = 0; j < i * 2 - 1; j++)
            printf(" ");
            printf("%c", c);
      }
      printf("\n");
    }
    for (i = 0; i < n-1; i++)
    {
      printf("%c", c);
      printf(" ");
    }
    printf("%c\n", c);
}

与琪热恋 发表于 2021-3-13 23:24:01

人造人 发表于 2021-3-10 16:25


题目中n为底边,我思考过后正确的代码也发了感兴趣可以看一下
页: [1]
查看完整版本: 镂空三角形