首页 > 解决方案 > 如何在c中将模式打印为函数

问题描述

我正在学习用c编写代码。我已经编译了这段代码并试图将这个模式转换为一个函数,需要帮助将这个模式存储在一个变量中。

#include <stdio.h>
#include <string.h>

void main()
{
    char a[256];
    int len,m,i,j,k;

    printf("enter string \n");
    scanf("%[^\n]",a);
    len=strlen(a);
    m=len;

    for(i=0;i<len;i++)
    {
        for(k=len; k>= len-i;k--)
        {
            printf(" ");
        }

        for(j=i+1;j<len-1-i;j++)
        { 
            printf("%c",a[j]);
        }  
        printf("\n");
    }
}

这是字符串输入的实际输出 - abcdefghijklmnop -

 bcdefghijklmno
  cdefghijklmn
   defghijklm
    efghijkl
     fghijk
      ghij
       hi

我正在尝试创建一个返回此模式的函数。

试图制作像这样的模式,

abcdefghijklmnop
 bcdefghijklmno
  cdefghijklmn
   defghijklm
    efghijkl
     fghijk
      ghij
       hi 
abcdefghijklmnop
 bcdefghijklmno
  cdefghijklmn
   defghijklm
    efghijkl
     fghijk
      ghij
       hi

标签: cstringfunction

解决方案


以下代码将产生所需的输出。图案由功能打印。

#include <stdio.h>
#include <string.h>

void fun(char s[], int m)
{
    int len,i,j,k, n;

    len=strlen(s);

    for(n=1; n<=m; n++)
    {
        for(i=0;i<(int)(len/2)+1;i++)
        {
            if(len%2 == 1 || i != (int)(len/2))
            {
                for(k=len; k>=len-i+1; k--)
                {
                    printf(" ");
                }
            }

            for(j=i;j<len-i;j++)
            {
                printf("%c", s[j]);
            }

            if(i != j)
            {
                printf("\n");
            }
        }
    }
}

int main()
{
    char a[256];

    printf("enter string \n");
    scanf("%[^\n]", a);

    fun(a, 2);

    return 0;
}

推荐阅读