正文

打印菱形2008-03-19 23:14:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/zhaoyg/33455.html

分享到:

最早的版本:
#include <stdio.h>

int main()
{
 int k1 = 5 , k2 = 1;
 int i,j;
    do
 { 
      for (i=1 ; i <= k1-1 ; i++)   printf (" ");
      for (j=1 ; j <= k2 ; j++)  printf("*");
   printf("\n");
      k1=k1-1;  //每行*号前的空格相差1个
   k2+=2;   // 每行的*号个数相差2个
 }
 while (k1 >1 );   //注释:下
 
 /* 原先之所以输出
    *
     *****
   ***
    * 
    这样,是因为将判断条件错误的写为k1<=0,于是第一次循环执行了k1=k1-1后,K值为2不满足k1<=0
    于是结束了循环

 */

    int k3=1, k4 =5;
 int i2 , j2;

 do
 {
  for (i2=1; i2 <= k3+1 ; i2++ ) printf (" ");
  
  for (j2=1 ; j2 <= k4 ; j2++ ) printf ("*");
  
  printf ("\n");
  k3++;
  k4-=2;


 }
 while (k3 <=3);

    getchar();
 return 0;
}

改进后的:
#include<stdio.h>
int main()
{
    int i,j,n;
   
    printf("请输入需要打印菱形的行数(奇数)\n");
    scanf("%d",&n);
    
    for (i=1;i<=n;i++)
    {
        for (j=1;j<=n/2+i;j++) //n/2+i 表示第i行要打印的内容个数,包括空格
        {
            if (j<=(n+1)/2-i||j<=i-(n+1)/2)  printf(" ");
            if (j>(n+1)/2-i&&i<=(n+1)/2)   printf("*");
            if (j>i-(n+1)/2&&i>(n+1)/2&&j<=n-(i-(n+1)/2))  printf("*");
        }
        printf("\n");
    }
    getchar();
    getchar();
    return 0;
}

输出数字菱形:

#include <stdio.h>

int main()
{
    int i,ch,n;
    for (i=1;i<=5;i++)
    {
        n=0;
       
        for (ch=1;ch<=i+2;ch++)
        {
            if (ch<=3-i||ch<=i-3)
                printf(" ");
              
            if (ch>3-i&&ch<=3&&i<=3)
                printf("%d",++n);
               
            if (ch>3&&ch<=5-(3-i)&&i<=3)
                printf("%d",--n);
               
            if (i>3&&ch>i-3&&ch<=3&&ch<=5-(i-3))
                printf("%d",++n);
               
            if (i>3&&ch>i-3&&ch>3&&ch<=5-(i-3))
                printf("%d",--n);
        }
        printf("\n");
    }
    getchar();
    return 0;
}

阅读(2460) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册