c++杨辉三角的外形优化

杨辉三角的数字 排列都完成的差不多了,但是我发现当行数大了的时候就输出的不整齐,有什么办法可以优化这个吗?

c++

7个回答

http://www.cnblogs.com/snake-hand/p/3188622.html

你看看这个,看看又帮助没有。。

可以具体弄个代码出来看看么

nihui123
nihui123 回复qq_36169171: 这个可以有啊
3 年多之前 回复
qq_36169171
Yukino_yukino 好的,等我晚上发出来,现在电脑没电了
3 年多之前 回复

不对齐可以补空格。比如1位数,补空格之后就占两位,与2位数就对齐了。

qq_36169171
Yukino_yukino 用setfill吗
3 年多之前 回复

这个不是,比如11和1111,明显占的宽度不一样,所以会变的有些难看的

qq_36169171
Yukino_yukino 对,后面就歪了
3 年多之前 回复

#include
using namespace std;
int main()
{
int n;
cin>>n;
int m[n][n];
for(int i=0;i<n;i++)
{
for(int k=0;k<=i;k++)
{
if(k==0||k==i)
m[i][k]=1;
else
m[i][k]=m[i-1][k-1]+m[i-1][k];
}
}
int a=1;
for(int i=0;i<n;i++)
{
for(int x=1;x<=n-a;x++)
cout<<" ";
for(int k=0;k<=i;k++)
cout<<m[i][k]<<" ";
for(int x=1;x<=n-a;x++)
cout<<" ";
a++;
cout<<endl;
}
return 0;

}

int main()
{
cout << "请输入*的总数:" << endl;
int n;
cin >> n;
if (n <= 0)
throw runtime_error("has a wrong number,please input a postive number!" + n);
float det = (-1 + sqrt(1 + 8*n))/2;
det = floor(det);//向下取整
int f_last =( 2 * n - det*det - det)/2;//计算最后一行的数目
//倒三角输出
//第一行单独输出,因为不能确定是否是完整的
for (int i = 0; i < f_last; i++)
printf("%c\40", '*');
printf("\n");

//前det-1行都按照行号输出
for (int i =2; i <= det + 1; i++)
{
    for (int j =1; j < i; j++)
        printf("\40");
    for (int j = 0; j <=1+det - i; j++)
        printf("%c\40", '*');
    printf("\n");
}

cout << "输出完毕!" << endl;
return 0;

}

ah_107
ah_107 我输出的是倒三角
3 年多之前 回复
printf("%*d", 6, 10000);
//这样会占6个空格,是右对齐的,加个负号就对齐
qq_36169171
Yukino_yukino 而且我学的是c++,c语言没怎么学
3 年多之前 回复
qq_36169171
Yukino_yukino 这个。。。可以解释下具体的意思吗?我才上大一。。。很多东西都还不知道。。。
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问