您的位置:首页 > 其它

打印有规律的图形

2012-02-23 11:41 309 查看
1,先打印个图形:

/*
*
*.*.
*..*..*..
*...*...*...
*/
/*
解析:
1,由结构就可以看出应该设置几层循环,行是一层,星花是一层,星花后面的点又是一层
2,行的循环区间是【1,n】
3,星花的循环区间是【1,line】,即当前是第几行,就要打印几个星花
3,星花后点的长度是相同的,与行号相同,所以直接连续打印当前行号个点就可以了
*/
void printStardot(int n)
{
for(int line = 1;line <= n;++line)
{
for(int star = 1;star <= line;++star)
{
cout << "*";
int dot = line;
while(--dot)
{
cout << ".";
}
}
cout << endl;
}
}


2,再打印个

/*
*
***
*****
*******
*/
/*
解析:
1,指定行的星花的个数是line*2 -1
2,每一行的宽度是n*2-1,即最后一行的宽度
3,每一行的前后空格的个数是 ((n*2 - 1) - (line*2 - 1))/2
*/
void printfTower(int n)
{
int lineMaxWidth = n*2 - 1;
int blankNum = 0;
int starNum = 0;

for(int line = 1;line <= n;++line){
starNum = line * 2 - 1;
blankNum = (lineMaxWidth - starNum)/2;
for(int i = 0;i < blankNum;++i){
cout << " ";
}
for(int i = 0;i < starNum;++i){
cout << "*";
}

cout << endl;
}
}


如是而已~

这种问题,在做之前,先要找到其规律,并将变量之间的关系写出来,然后一蹴而就,直接写代码,成功率99%
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: