飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: sdnyzjzx

[C/C++] 打印菱形的设计思路

  [复制链接]
  • TA的每日心情
    开心
    2024-3-7 15:25
  • 签到天数: 442 天

    [LV.9]以坛为家II

     楼主| 发表于 2012-5-29 10:08:58 | 显示全部楼层
    sslj 发表于 2012-5-27 19:30
    惭愧,我最近才学的,我算了两天,也就算出上面的,下面输出不会算,看来是没认真看,我还需要努力。

    关键是理清思路,逻辑上先想清楚。其实方法很多,给出相对来说比较简单的一种方法。
    1. 组成图形的符号 char str;
    2. 菱形边长 int len
    3. 菱形特点 |x| + |y| = (len-1)/2
    4. 是空心还是实心

    参考代码,是回过头来写的。看你的进度吧,只是交流种思路。
    #include <windows.h>
    #include <stdlib.h>
    void gotoxy(int x, int y)  //跳转到屏幕(x,y)这个坐标点上
    {
    //Initialize the coordinates
    COORD coord = {x, y};
    //Set the position
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
    return;
    }
    int Abs(int x)            //绝对值
    {
    return x<0 ? -x:x;
    /*
    if(x<0)
      {
       x=-x;
      }
    return x;
    */
    }
    int SolidDia(char  str,int len)    //实心菱形
    {
    int x0=20,y0=10;          //菱形中心坐标
    int x=0,y=0;
    int n=(len-1)/2;
    for(x=-n;x<=n;x++)
    {
      for(y=-n;y<=n;y++)
      {
       if((Abs(x)+Abs(y))<=n)
        {
         gotoxy(x+x0,y+y0);
         printf("%c",str);
        }
      }
    }
    return 0;
    }
    int EmptyDia(char  str,int len)    //空心菱形
    {
    int x0=50,y0=10;          //菱形中心坐标
    int x=0,y=0;
    int n=(len-1)/2;
    for(x=-n;x<=n;x++)
    {
      for(y=-n;y<=n;y++)
      {
       if((Abs(x)+Abs(y))==n)
        {
         gotoxy(x+x0,y+y0);
         printf("%c",str);
        }
      }
    }
    return 0;
    }
    int main()
    {
    char str = '*';  //边的图形
    int len=17;
    system("cls");
    SolidDia(str,len); //实心菱形
    str ='$';
    EmptyDia(str,len);
    gotoxy(1,24);
    return 0;
    }
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2012-5-29 17:58:28 | 显示全部楼层
    sdnyzjzx 发表于 2012-5-29 10:08
    关键是理清思路,逻辑上先想清楚。其实方法很多,给出相对来说比较简单的一种方法。
    1. 组成图形的符号  ...

    其实,我也就学习了c两个月,还是自学的,看你的这个还有很多不懂的,,不过我会慢慢研究的,谢谢你。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-6-1 22:50
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2014-12-22 19:21:25 | 显示全部楼层
    学习学习                                                               
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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