能输出直角三角形的莱布尼茨三角形,就是搞不好金字塔型的,求帮忙填个空格缩进
#include <stdio.h>
int a(int m,int n)
{
int r;
if(n==1||n==m)
{
r=1;
}
else r=a(m-1,n-1)+a(m-1,n);
return r;
}
int main()
{
int b,o,r,m=1,n=1,i,j;
printf("请输入你需要的三角形大小(行数)");
scanf("%d",&o);
b=o*(o+1)/2;
while(b--)
{
r=a(m,n);
printf("1/%d\t",r*m);
if(n==m)
{
m++;
n=1;
printf("\n");
}
else
{
n++;
}
}
return 0;
}
供参考:
#include <stdio.h>
int a(int m, int n)
{
int r;
if (n == 1 || n == m)
{
r = 1;
}
else r = a(m - 1, n - 1) + a(m - 1, n);
return r;
}
void print_space(int L, int n, int m)
{
int i;
if (n == 1) {
i = m;
while (i <= L) {
printf("%6c", 32);
i++;
}
}
else
printf("%6c", 32);
}
int main()
{
int b, o, r, m = 1, n = 1, i, j;
printf("请输入你需要的三角形大小(行数)");
scanf("%d", &o);
b = o * (o + 1) / 2;
while (b--)
{
r = a(m, n);
print_space(o, n, m);
printf("1/%-4d", r * m);
if (n == m)
{
m++;
n = 1;
printf("\n\n");
}
else
{
n++;
}
}
return 0;
}
1,算出三角形的高
2,计算最底下一层的字符总长度L0(分式间用固定长度的的空格数)
3,先把要输出的那一行的分式先合成一个字符串,并计算长度Lc,计算 例:第1行"1/1",第二行"1/2 1/2"
4,要输出行字符串前面补空格,空格数=(L0-Lc)/2;
5,然后一行一行输出就好了