c++语言中的几个小问题(简单)
********************************************************这种形式怎么用程序表示?另外,如上的形式如何用程序表示?求...
******** **
******* ****
****** ******
***** ********
****
***
**
*
这种形式怎么用程序表示? 另外,如上的形式如何用程序表示?
求助各位编程大师帮忙。 展开
******* ****
****** ******
***** ********
****
***
**
*
这种形式怎么用程序表示? 另外,如上的形式如何用程序表示?
求助各位编程大师帮忙。 展开
2个回答
展开全部
以下程序为C语言,C++同理
限于时间关系,只做左边那个,其他的其实是左边那个的变种
开发环境 ViSual Studio 2013
首先,为了能使用printf需要引用stdio.h
#include <stdio.h>
然后定义星星的行列数
static int MAXW = 8;//行
static int MAXH = 8;//列
函数宣言及内容
void drawMark(){ printf("*"); }//画星号
void drawSpace(){ printf(" "); }//画空格
void doSkip(){ printf("\n"); }//换行
程序入口主main
void main()
{
变数宣言
int saveh = 0;//用来记录行数变化,进而判断星星是否换行
int wloop = MAXW;//用来计算星星数量
int sloop = MAXW;//用来计算空格数量
竖行循环
/*矩阵描画开始*/
for (int h = 0; h < MAXH; h++)
{
换行及画空格条件
if (saveh != h)//如果画过的行数不等于当前的行数(也就是换行了)
{
换行及画空格处理
wloop--;//星星数减少
sloop++;//空格数增多
saveh = h;//同步行数记录
描画处理
for (int w = 0; w < sloop; w++)//先画空格,空格数从少变多
{
drawSpace();//空格描画=>{ printf(" "); }
}
for (int w = 0; w < wloop; w++)//画星号,星号数由多变少
{
drawMark();//星星描画=>{ printf("*"); }
}
换行执行
doSkip();
结尾
}
getchar();//等待用户输入
}
PS: 这个画星星的方法在应用中比如说游戏地图的描画就是靠这个。
补充个上面的C转C++的
/*main.cpp*/
#include <stdio.h>
#include "main.h"
void main()
{
drawArray *mDrawArray = new drawArray();
mDrawArray->main();
delete mDrawArray;
}
drawArray::drawArray()
{
}
drawArray::~drawArray()
{
}
void drawArray::main()
{
static int MAXW = 8;
static int MAXH = 8;
int saveh = 0;
int wloop = MAXW;
int sloop = MAXW;
for (int h = 0; h < MAXH; h++)
{
if (saveh != h)
{
wloop--;
sloop++;
saveh = h;
}
for (int w = 0; w < sloop; w++)
{
drawSpace();
}
for (int w = 0; w < wloop; w++)
{
drawMark();
}
//saveh = h;
doskip();
}
getchar();
}
/*main.h*/
#ifndef _MAIN_H_
#define _MAIN_H_
class drawArray
{
public:
drawArray();
~drawArray();
void main();
void drawMark(){ printf("*"); }
void drawSpace(){ printf(" "); }
void doskip(){ printf("\n"); }
private:
};
#endif
展开全部
在你之前我已经看到甚至回答过很多类似的问题了(虽然你不知道......)。
这样的问题在C/C++语言学习的初级阶段是比较简单也比较重要的问题,它可以锻炼你的程序设计逻辑思维,一旦你自己努力想出了解决思路并编码调试实现,那表明你在起步阶段走上一个台阶了。但看一遍别人给的答案,对你自身的进步是微乎其微的。
所以,还是建议自己思考。
这样的问题在C/C++语言学习的初级阶段是比较简单也比较重要的问题,它可以锻炼你的程序设计逻辑思维,一旦你自己努力想出了解决思路并编码调试实现,那表明你在起步阶段走上一个台阶了。但看一遍别人给的答案,对你自身的进步是微乎其微的。
所以,还是建议自己思考。
追问
空格怎么表示(程序)
追答
std::cout << " "; //双引号之间敲一个空格
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询