sdnyzjzx 发表于 2012-5-29 10:08:58

sslj 发表于 2012-5-27 19:30 static/image/common/back.gif
惭愧,我最近才学的,我算了两天,也就算出上面的,下面输出不会算,看来是没认真看,我还需要努力。

关键是理清思路,逻辑上先想清楚。其实方法很多,给出相对来说比较简单的一种方法。
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(charstr,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(charstr,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;
}

sslj 发表于 2012-5-29 17:58:28

sdnyzjzx 发表于 2012-5-29 10:08 static/image/common/back.gif
关键是理清思路,逻辑上先想清楚。其实方法很多,给出相对来说比较简单的一种方法。
1. 组成图形的符号...

其实,我也就学习了c两个月,还是自学的,看你的这个还有很多不懂的,{:sweat:},不过我会慢慢研究的,谢谢你。

jmgsdz 发表于 2014-12-22 19:21:25

学习学习                                                               
页: 1 [2]
查看完整版本: 打印菱形的设计思路