工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 1277|回复: 0

C语言编程100例(003)

[复制链接]
发表于 2005-12-8 16:23 | 显示全部楼层 |阅读模式
//题目:打印下面图形

   *
  * *
* * *
* * * *
* * *
  * *
   *
一,%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);
    }
}

应该还有其它方法,但目前只能想到这些了。
您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-10-19 19:42

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表