sdnyzjzx 发表于 2010-11-10 17:04:58

打印菱形的设计思路

本帖最后由 sdnyzjzx 于 2010-11-14 22:01 编辑

跟着Nisy学习C语言,视频已经到了第五课了,通过一下午努力,终于完成了作业中要求的设计菱形的题目,非常高兴,贴出来请朋友们指点:
附上自己建的菱形输出 * 位置模型图
打印菱形的思路分析:

定义 n--边长i--第几行j--第几列

按行打印输出

外层实现 i (行) 循环
    当 i<=(n+1)/2 时,
       如果 j=(n+1)/2-(i-1) 或者 j=(n+1)/2+(i-1)
            输出 *
            否则 输出空格
       里层实现 j (列)循环
       当列循环一周时,输出 "\n"换行
   
    当i>(n+1)/2 时(用else 实现)
      如果 j=(n+1)/2-(n-i) 或者 j=(n+1)/2+(n-i)
      输出 *
      否则 输出空格
      里层实现 j (列)循环
       当列循环一周时,输出 "\n"换行

程序如下:
main()
{
int n;
int i;
int j;
printf("Please input the number of length:");
scanf("%d",&n);
printf("\n");
for (i=1;i <= n;i++)
{
   printf("   ");
   if(i <= (n+1)/2)
    {
      for (j=1;j <= n;j++)
       {
          if((j == (n+1)/2 - (i-1))||(j == (n+1)/2+(i-1)))
         {
            printf("*");
         }
          else
         {
         printf(" ");
         }
       }
/*    printf("i=%d j= %d",i,j); */
      printf("\n");
    }
   else
    {
      for (j=1;j <= n;j++)
       {
          if((j == (n+1)/2 - (n-i))||(j == (n+1)/2+(n-i)))
         {
            printf("*");
         }
          else
         {
         printf(" ");
         }
       }
    /*printf("i=%d j= %d",i,j); */
      printf("\n");
    }
}
printf("\n");
printf("   Thank you everyone ! \n");
printf("Writen by sdnyzjzx 2010.11.10.");
}


今天视频学习到06课,制作了一个 带表格的乘法口诀表 ,请指点

程序:

新手求教 发表于 2010-11-10 17:08:13

/:good 厉害!

kelvar 发表于 2010-11-11 16:20:36

多谢分享。菱形和杨辉三角永远是C语言的最爱

tmbs 发表于 2010-11-11 19:54:47

按你的思路我也写一个:loveliness:

Nisy 发表于 2010-11-13 11:37:49

不错~

风卷 发表于 2010-11-14 12:10:47

照这个图来看……这是个正方形……当然也是菱形……/:L

hnynes 发表于 2010-11-16 02:02:22

嗯,不错。边学习边总结,呵呵。

gongzuolong 发表于 2012-3-26 20:58:33

呵呵 学习了

笨笨派 发表于 2012-4-15 19:59:51

多谢分享。菱形和杨辉三角永远是C语言的最爱

sslj 发表于 2012-5-27 19:30:57

惭愧,我最近才学的,我算了两天,也就算出上面的,下面输出不会算,看来是没认真看,我还需要努力。
页: [1] 2
查看完整版本: 打印菱形的设计思路