C++中如何循环输出*字符
在C++中如何输出以下字符啊?鄙人初学还望高手赐教!
*******
*****
***
*
***
*****
*******
[解决办法]
#include "stdlib.h"
#include <iostream.h>
#include <memory.h>
voidff(int width/*宽度*/)
{
if(!(width%2)) ++width; //如果输入的不是单数自动加1;
int hf = width/2;
int high = 2*hf+1;
char *p = (char*)malloc(width*high);
memset(p,'*',width*high);
int temp = width-2;
for(int row=1,col=1;row <=high-2;row++)
{
if(row>hf)
{
col--;
temp +=2;
for(int k=0;k <col;k++)
{
*(p+row*width+k) = ' '; //替换为空白
*(p+row*width+col+temp+k) = ' '; //替换为空白
}
}
else
{
for(int j=0;j <col;j++)
{
*(p+row*width+j) = ' '; //替换为空白
*(p+row*width+col+temp+j) = ' '; //替换为空白
}
if(row <hf)
{
temp -=2;
col++;
}
}
}
for(int n=0;n <high;n++)
{
for(int m=0;m <width;m++)
{
cout < <*(p+n*width+m);
}
cout < <endl;
}
}
void main()
{
int n;
cout < <"请输入一个单数,该数指示打印宽度 nWidth=";
cin>>n;
if(n>1)
ff(n);
}
else//只需要打印一个星号,且只打印一行
return;
for(i = 0; i != gapNum; ++i)
cout << " ";
for(i = 0; i != num; ++i)
cout << "*";
cout << endl;
}
int main(int argc, char *argv[])
{
printStars(7);
return 0;
}
[解决办法]
#include <iostream>#include <string>#include <cmath>using namespace std;int main(){ int n=9; for ( int i = 0; i < n; ++i ) { cout << string(n / 2 - abs( n / 2 - i ), ' ')<<string(2 *abs( n / 2 - i ) +1, '*')<<endl; } return 0;}