回 帖 发 新 帖 刷新版面

主题:杨辉三角形!

#include<iostream>

using namespace std;

int main()

{

      int a[17][17]={0};

      int i,j,k,n=0;

      while(n<1 || n>16)           //限制行数

      {

            cout<<"input lines=";

            cin>>n;

       }

       for(i=0;i<=n-1;i++)

       {

            a[i][0]=1;                 //第一例全部置1                

       }

        for(i=1;i<=n-1;i++)

        {

             for(j=1;j<=i;j++)

             {

                  a[i][j]=a[i-1][j-1]+a[i-1][j];  //每个元素等于与上一行对应元素与旁元素之和

              }

         }

         for(i=0;i<=n-1;i++)

         {
              for(k=30;k>=i;k--)
              {
                     cout<<" ";
              }
              
              for(j=0;j<=i;j++)

              {                                   
                  cout<<" "<<a[i][j];     //输出杨辉三角形

              }

               cout<<"\n";

          }

         本人自学C/C++的,只有初中文化,加上语文成绩不好,所以看书比较费劲.运行结果对不齐,不好看.还望高手指导下,谢谢!

回复列表 (共2个回复)

沙发


[code=c]
#include<iostream>
#include <iomanip>

using namespace std;

int main()
{
    int a[17][17]={0};
    int i,j,k,n=0;
    while(n<1 || n>16)           //限制行数
    {
        cout<<"input lines=";
        cin>>n;
    }
    for(i=0;i<=n-1;i++)
    {
        a[i][0]=1;                 //第一例全部置1                
    }
    for(i=1;i<=n-1;i++)
    {
        for(j=1;j<=i;j++)
        {
            a[i][j]=a[i-1][j-1]+a[i-1][j];  //每个元素等于与上一行对应元素与旁元素之和
        }
    }
    for(i=0;i<=n-1;i++)
    {
        for(k=20;k>=i;k--)
        {
            cout<<"  ";
        }

        for(j=0;j<=i;j++)
        {                                   
            cout<<setw(4)<<a[i][j];     //输出杨辉三角形
        }
        cout<<"\n";

    }
}[/code]

由于输出时a[i][j]可能会>=10 他的就是2位数 也有可能变成3位数 所以就不能对齐  安我上面改的就OK

板凳

厲害啊!!!.....!!!!!......!!!!!!!........!!!!!!!!..........

我来回复

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