c语言程序杨辉三角

下列程序要求实现为打印出以下的杨辉三角形(要求打印出10行)的功能。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
请改正程序中的错误。不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define N 10
void main()
{
int i,j,a[N][N];
for(i=0;i<N;i++)
{
a[i][0]=1;
a[i][i]=1;
}
for(i=1;i<N;i++)
for(j=0;j<N;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<N;i++)
{
for(j=0;j<i;j++)
printf(“\n”);
}
讲讲错在哪?在线等 急求~

我很久之前写过这个,但是当时用的是栈区数组固定长度,你改成动态数组即可。

void main()

{

int a[10] = { 1 };               

for (int i = 0; i < 10; i++)     //用循环打印第一行

{

if (a[i] == 0)               

{                             

printf("%4c",' ');        

}

else

printf("%4d", a[i]);

}

//先输出第一行之后再进行循环

for (int j = 2; j <= 10; j++)            

{

printf("\n");                     //回车输入第二行

// printf("1 ");                    //输入每一行开头的1

for (int i = 9; i >= 0; i--)

{

if (i != 0)                    //实现每行的第一个数均为一,后面的数才开始符合规则

{

a[i] = a[i] + a[i - 1];

}

else

a[i] = 1;

}

for (int i = 0; i < 10; i++)          //打印每一行

{

if (a[i] == 0)

printf("%4c",' ');

else

printf("%4d ", a[i]);

}

}

system("pause");

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-10-30
#include "stdio.h"
main()
{
int a[11][20],i,j;
//初始化
for(i=0;i<11;i++)
for(j=0;j<20;j++)
a[i][j]=0;
//给数组附值
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
{
if(j<1)a[i][j]=1;//开头的第一个数为1
else if(i==0)break;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
//杨辉三角的规律
}
}
//输出
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
第2个回答  2012-11-21
方法1:

#include <stdio.h>
main()
{
int i,j,a[10][10]; /*10行10列的杨辉三角*/
for(i=0;i<10;i++) /*先赋值两边*/
{
a[i][0]=1;
a[i][i]=1;
}

for(i=2;i<10;i++) /* 计算中间的数值 */
for(j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];

for(i=0;i<10;i++) /* 输出部分 */
{
for(j=0;j<i+1;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}

方法2:
#include<stdio.h>
main()
{
long i,j,n,k;
printf("请输入要输出的杨辉三角的行数:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
k=1;
for(j=1;j<=i;j++)
{
printf("%5ld",k);
k=k*(i-j)/j;
}
printf("\n");
}
}
第3个回答  推荐于2017-11-26
#include <stdio.h>
#define N 10
void main()
{
int i,j,a[N][N];
for(i=0;i<N;i++)
{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<N;i++) /*次此处下标从2开始*/
for(j=1;j<i;j++) /*此处下标从1开始*/
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<N;i++)
{
for(j=0;j<=i;j++)
printf("%d ",a[i][j]); /*不知道是你漏了这行还是怎么样,总之打印出来时必须的*/
printf("\n");
}
}本回答被提问者和网友采纳
第4个回答  2010-04-17
#include<stdio.h>
main(){
int a[10][10],i,j,k; /*k是用来控制缩进长度的*/
for(i=0;i<10;i++){
for(j=0;j<=i;j++){
if(j==0||j==i){
a[i][j]=1;
} else{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
}

for(i=0;i<10;i++){

for(k=1;k<=(10-i);++k)
printf(" ");/*有三个空格,根据后面输出项的宽度决定,即后面的1/2*/

for(j=0;j<=i;j++){
printf("%6d",a[i][j]);/*最好设为偶数个宽度,根据你写的程序,其实4就合适了*/
}
printf("\n");
}
getchar();/*方便查看结果而设的暂停*/
}
相似回答