主要在于空格的控制!!!!!!!!!!!!
(1) 比较规整的三角形!
#include<stdio.h>
int main()
{
int i,j,n,m,k,x,v;
int a[100][100];
scanf("%d",&n);
for(v=0;v<n;v++)
{
scanf("%d",&m);
for(i=0;i<m;i++)
{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<m;i++)//i代表行,从第三行开始
for(j=1;j<i;j++)//j代表数,每行从第二个数开始
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<m;i++)
{
for(x=m-i-1;x>0;x--)//第一行空m-1-0;依次m-1-1;m-1-2;……m-1-i
printf(" ");
for(j=0;j<i;j++)
{
printf("%d ",a[i][j]);
}
printf("%d\n",a[i][j]);
}
}
}
(2) 不规整的三角形!
#include<stdio.h>
int main()
{
int n,i,j;
int z[107][107];
while(scanf("%d",&n)==1)
{
for(i=0;i<n;i++)
{
z[i][0]=1;
z[i][i]=1;
}
for(i=2;i<n;i++)
for(j=1;j<i;j++)
z[i][j]=z[i-1][j-1]+z[i-1][j];
for(i=0;i<n;i++)//一共有n行
{
for(j=0;j<=i;j++)//j代表了每行的总个数,必须是"<="
{
if(j==0)
printf("%d",z[i][j]);
if(j>0)
printf(" %d",z[i][j]);
}
printf("\n");
}
printf("\n");
}
return 0;
}
(3)不规整的
#include<stdio.h>
int main()
{
int i,j,n;
int c(int,int);
printf("N=");
scanf("%d",&n);
for(i=0;i<n;i++)//控制打印的行数
{
for(j=0;j<n-i-1;j++)//控制打印的空格数
printf(" ");
for(j=1;j<i+2;j++)//用于计算的,i行共有j+1个数
printf("%d",c(i,j));
printf("\n");
}
}
int c(int x,int y)
{
int z;
if((y==1)||(y==x+1))
return 1;
z=c(x-1,y-1)+c(x-1,y);
return (z);
}
(4) 空心三角形!
#include<stdio.h>
int main()
{
int i,j,k,n,m,t=1;
char c;
while(scanf("%c",&c)!=EOF&&c!='@')
{
scanf("%d",&n);
if(t)
t = 0;
else
printf("\n");
for(i=1;i<=n-1;i++)
{
for(j=n-1;j>=i;j--)
{
printf(" ");
}
if(i==1)
printf("%c\n",c);
if(i>=2)
{
printf("%c",c);
for(k=1;k<=2*i-3;k++)//找到空格的规律是难点
printf(" ");
printf("%c\n",c);
}
}
for(m=1;m<=2*n-1;m++)
printf("%c",c);
printf("\n");
getchar();
}
return 0;
}
难在空格的输入!朴实的c语言程序!!!!