powerwind 发表于 2005-12-8 16:23

C语言编程100例(003)

//题目:打印下面图形

   *
* *
* * *
* * * *
* * *
* *
   *
一,%4.1s中4指字符数,1指数组str中一个元素

int main()
{
    char str[]="* * * *";
    printf("%4.1s\n",str);
    printf("%5.3s\n",str);
    printf("%6.5s\n",str);
    printf("%7.7s\n",str);
    printf("%6.5s\n",str);
    printf("%5.3s\n",str);
    printf("%4.1s\n",str);
}

二,两个循环分别控制行与列,是最常用的方法。只要注意观察其规律就可写出。

int main()
{
    int i,j,k;
    for(i=1;i<=4;i++)/*输出上面4行*/
    {
      for(j=1;j<=4-i;j++)printf(" ");
      for(k=1;k<=i;k++)printf("* ");
      printf("\n");
    }
    for(i=1;i<=3;i++)    /*输出下面三行*/
    {
      for(j=1;j<=i;j++)printf(" ");
      for(k=1;k<=4-i;k++)printf("* ");
      printf("\n");
    }
}

三,和方法二差不多,只是用了len来控制空格数。

int main()
{
int i,m,n,len=3;
for (i=1;i<=4;i++)
      {
      printf("\n");
      for (n=1;n<=len;n++)printf(" ");
      len--;
      for(m=1;m<=i;m++)printf("* ");
      }
len=1;
for (i=3;i>=1;i--)
      {
      printf("\n");
      for (n=1;n<=len;n++)printf(" ");
      len++;
      for(m=i;m>=1;m--)printf("* ");
      }
}


四,先写两个函数分别控制空格与*的打印

void printSpace(int i)
{
   int j;
   for(j=1;j<=i;j++)printf(" ");         
}

void printStar(int i)
{
   int j;
   for(j=1;j<=i;j++)printf("* ");
   printf("\n");
}

int main()
{
    int i;
    for (i=1;i<=4;i++)
    {
      printSpace(4-i);
      printStar(i);
    }
   
    for (i=3;i>=1;i--)
    {
      printSpace(4-i);
      printStar(i);
    }
}

应该还有其它方法,但目前只能想到这些了。
页: [1]
查看完整版本: C语言编程100例(003)