注册 登录
编程论坛 C++教室

请高手指点迷津 ,我要编写杨辉三角的前十行,下面程序错在哪

biancku 发布于 2010-12-03 19:29, 563 次点击

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    int fr(int n,int i);
    int a[10][10],i,j;
    for(i=0;i<10;i++)
        for(j=0;j<=i;j++)
            a[i][j]=fr(i,j);
    cout<<setiosflags(ios::right);
    for(i=0;i<10;i++)
     {
        for(j=0;j<=i;j++)
            cout<<setw(2)<<a[i][j]<<"  ";
        cout<<endl;
     }
    return 0;
}
int fr(int n,int j)
{
    int k;
    if(j==0)
        k=1;
    else if(j==1)
        k=n;
    else
        k=((n-j+1)/j)*fr(n,j-1);
    return k;
}
4 回复
#2
biancku2010-12-03 19:43
利用数学中二次项的展开求解的
#3
windofland2010-12-04 11:53
cout<<setiosflags(ios::right);  cout<<setw(2)<<a[i][j]<<"  ";
        cout<<endl;


上面3句的作用是什么,能不能讲解下?
#4
左手舞剑2010-12-04 14:43
对fr函数的定义出错,正确的代码如下
程序代码:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{  
    int fr(int i,int j);
           int a[10][10], i,j;
     for(i=0;i<10;i++)
        for(j=0;j<=i;j++)
            a[i][j]=fr(i,j);
    for(i=0;i<10;i++)
     {
        for(j=0;j<=i;j++)
            cout<<setiosflags(ios::right)<<setw(4)<<a[i][j]<<"  ";
        cout<<endl;
     }
    return 0;
}
int fr(int n,int j)
{
    int k;
    if((j==0)||(j==n))
      return (1);
     else
        k=fr(n-1,j-1)+fr(n-1,j);
    return (k);
}
只有本站会员才能查看附件,请 登录

#5
左手舞剑2010-12-04 14:46
以下是引用windofland在2010-12-4 11:53:48的发言:

cout<
设置对齐方式为右对齐;设置字节宽度为2;换行???
1