- UID
- 65892
注册时间2010-3-1
阅读权限50
最后登录1970-1-1
感悟天道
TA的每日心情 | 慵懒 2024-12-4 10:07 |
---|
签到天数: 444 天 [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;
}
|
|