标题:疑问:菱形打印问题
只看楼主
yjcf
Rank: 1
来 自:西安工业大学
等 级:新手上路
帖 子:145
专家分:0
注 册:2008-3-29
 问题点数:0 回复次数:2 
疑问:菱形打印问题
打印出如下图案(菱形 用for语句)

   *
  ***
 *****
*******
 *****
  ***
   *
想了半天也没想出该怎样用循环语句来实现,就到网上搜了一下代码,可算法还是不理解
如下:
#include "stdio.h"
#include "conio.h"
main()
{
  int i,j,k;
  for(i=0;i<=3;i++)
  {
    for(j=0;j<=2-i;j++)
      printf(" ");
    for(k=0;k<=2*i;k++)  //像这里,k<=2*i是怎么想到的阿~~
      printf("*");
    printf("\n");
  }
  for(i=0;i<=2;i++)//这里又没用i--,又怎么会倒过来输出呢?
  {
    for(j=0;j<=i;j++)
      printf(" ");
    for(k=0;k<=4-2*i;k++)   //k又变成了4-2*i  这是怎么想到的呢?
      printf("*");
    printf("\n");
  }
  getch();
}

ps:貌似论坛也有类似的帖子,可算法大都很难想啊

[[it] 本帖最后由 yjcf 于 2008-4-21 22:31 编辑 [/it]]
搜索更多相关主题的帖子: 菱形 疑问 打印 
2008-04-21 22:29
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
得分:0 
先看懂简单的思路
如果不明白就依次代入,
看看每一次执行循环各个循环量是多少
短跑冠军也是从爬开始学的

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-04-21 22:38
webtonny
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-4-19
得分:0 
分两段看,一个是上端一个是下端。上端是这样的
    *
   ***
  *****
 *******
i控制行,j控制列。每一列输完后换行,所以行是最外层循环.
//总共四行,i=0,1,2,3
for(i=0;i<=3;i++)
然后你观察每行的规律,第一行是3个空格1个*,第二行是2个空格3个*,第三行是1个空格5个*,第四行是7个*
设第i行的空格数是j,当i=0时候j要循环3次,i=1时候j要循环2次,i=n时候,j要循环3-n次
那就是负责空格的循环,
for(j=1;i<=3-i;j++)
printf(" ");
然后设第i行的*个数是k个,当i=0时,k=1;当i=1时k=3,当i=2时,k=5,当i=n时k=2n+1
则负责*的循环是
for(k=1;k<=2*i+1;k++)
printf("*");
下部分的输入你也可以按照这方法类推哦。
2008-04-21 23:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-210338-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.014882 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved