回 帖 发 新 帖 刷新版面

主题:[原创]紧急紧急紧急求助,请高手或好心人来帮我讲解一下这个不理解之处

以下是书上写的一个小程序,主要是编程打出如图的图案 :
                           1
                          2  2
                        3  3  3
                       4  4  4  4
                      5  5  5  5  5
                    6  6  6  6  6  6
                   7  7  7  7  7  7  7
                  8  8  8  8  8  8  8  8
                9  9  9  9  9  9  9  9   9
             10  10 10 10 10 10 10  10 10  10
(哎,打出这些图案,手都酸了,[em2][em2])
它的程序如下:
#include<iostream.h>
#include<stdlib.h>
void main()
{
  for(int i=1;i<=10;i++)
  {
    for(int j=1;j<=11-i;j++)
      cout<<" ";
    for(int j=1;j<=i;j++)
    {
     if(i==10)
       cout<<i<<" ";
    else
      cout<<i<<" ";
    }
    cout<<endl;
  }
  system("PAUSE");
}

    在下请各位高手们一定一定要帮我啦
  但我就是对这种编图案的类似题目有点看不懂,主要是不晓得多重循环里的, i,j 在这里有什么意图,与那些图案有什么关系,(但我看得懂简单的一重循环)并且也不太明白与那些简单的一重循环到底有什么区别。所以若现在要我编图案的程序,因弄不明白,就不太会编。本人比较愚昧,请高手,热心的大家一定要帮我讲解讲解哦!谢谢咯!(我还想拜托大家在看了我的程序之后,最好可以尽力在2月24日晚上之前回复我,因特殊情况,我这里可能要断一两个星期的网,要不然,我就暂时不能看到大家的回复了)
  谢谢大家啦



回复列表 (共3个回复)

沙发

#include<iostream.h>
#include<stdlib.h>
int main()//规范使用main
{
  for(int i=1;i<=10;i++)//用于确定数字,记录行数为i
  {
    for(int j=1;j<=11-i;j++)//用于确定空格数量为11-i
      cout<<" ";
    for(int j=1;j<=i;j++)//用于确定数字的数目为i
    {
     if(i==10)//这里的if可以合并
       cout<<i<<" ";
    else
      cout<<i<<" ";
    }
    cout<<endl;
  }
  system("PAUSE");
  return 0;
}

板凳

谢谢啦,我很高兴又很荣幸地这么快就能看到你的分析,我理解了这个题目,但我还有几个问题想请教一下:
    上面的那个程序应该叫做三重循环吧,而不是二重循环吧?那么怎么样晓得是几重循环,例如是不是有n个for(int i=1;i<=11;i++)的,就是n重循环
    然后,就是什么时候两个for循环可以对齐写(例如像上面的这样子对齐写,如下:for(int j=1;j<=11-i;j++)
      cout<<" ";
    for(int j=1;j<=i;j++)

是不是当两个for循环这样对齐写时,就它们两而言,就只会按顺序执行下去,先执行第一个for循环,再执行接着的下一个for循环呢?
  还有就是在编程序时,主函数应该也可以用void main()吧(因为书上一般都是这样子写的),不一定要写成int main()吧,这样也没错啊!还请继续指点哦![em2]

3 楼

一:几重循环并不是看for或者while的使用个数,只主要看他们的嵌套关系
就那上面的来说,第二个和第三个就没有嵌套关系,就没有几重的问题,到是第一个和他们有嵌套关系,那么就说是二重循环,而不是三重循环哦.
二:还他们是不是对齐写与程序的运行顺序无关,只是书写美观上的关系,有缩进可以分清层次关系,便于阅读查错.
三:在c里也好c++也好,并没有定义void main(),具体资料在这个论坛上有,你可以去看看,只不过有些编译器"自己欺骗自己"让他通过了,呵呵

我来回复

您尚未登录,请登录后再回复。点此登录或注册