C++用一维数组打印一个数字图形

打字不好说明题的要求,就看下面的图吧,比如我输入了8和13,就显示出下面的数字图形。谁能给出算法吗,我学的C++?(不能用二维数组,因为还没学)还有弱弱的问下,输出的时候... 打字不好说明题的要求,就看下面的图吧,比如我输入了8和13,就显示出下面的数字图形。
谁能给出算法吗,我学的C++?(不能用二维数组,因为还没学)
还有弱弱的问下,输出的时候,数字是怎么覆盖掉这个方块的。。(因为程序运行的时候,数字是一步一步覆盖掉方块打印出来的)
展开
 我来答
White_MouseYBZ
2014-10-04 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6678万
展开全部
一定要用数组?不用也可以啊……
//#include "stdafx.h"//vc++6.0加上这一行.
#include <iostream>
#include "iomanip"
using namespace std;
void main(void){
int n,m,x,y,z,i,j,k;
cout << "Type an integer...\nn=";
cin >> n;
for(k=0,z=2,x=1,i=n;i>0;i-=x,x++,z++,k++){
for(m=0,y=z,j=i;j>=0;j-=y,y++,m++)
cout << setw(2) << setfill('0') << j << ' ';
for(j=m;j<10;cout << "\2\2 ",j++);
cout << endl;
}
for(i=k;i<10;cout << "\2\2 \2\2 \2\2 \2\2 \2\2 \2\2 \2\2 \2\2 \2\2 \2\2\n",i++);
}
我的机器上没有找到那个白框框,就用两个小鬼脸代替了。你的机器上有白框框,替换\2\2就可以了。
追问
大哥,能多花5分钟说说你的思路吗,再给每行加上注释,因为小弟才学C++不久,看这个程序不大能看懂思路,就是不知道你定义的这么多变量是控制什么的,谢谢!
采取了你的答案后,在给20分的悬赏(只剩23分了)。
追答
不是分的问题。你有兴趣就给你说说——
思路不复杂,用两个for循环,外循环以i为主要控制变量,初值是输入的n,用以控制每行第一个数据;而每行的增量从题例中看到是1、2、3……,所以这里用了一个x作增量控制,初值是1,就是第一行到第二行的增量;然后每完成一行x增1,达到控制每行第一个数据的目的。内循环以j为主控制变量;第一行的数据后一个比前一个数依次少2、3、4……第二行后一个比前一个数依次少3、4、5……所以第一行j从i开始依次要少2、3、4……第二行j从i开始依次要少3、4、5……为达这一目的,同样用一个增量控制变量y来完成;但每一行的y起始值又是以2、3、4……规律变化的,所以用了个变量z来控制。k是用来记录有效数字输出了几行,以便知道要补多少行“白框框”,m用来记录每一行输出了几个数据,以便确定要在这一行后面补写几个“白框框”。
就这么多……
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式