C语言中怎样用数组输出杨辉三角的前n行?

那个n的值需要我们从键盘输入,定义数组的时候不知道数组长度,怎么弄嘛?

#include <stdio.h>
#include <stdlib.h>
int main()
{
// 数值和高度
    int s = 1, h;               
// 循环计数
    int i, j;      
printf("输入行数:");
// 输入层数
    scanf("%d", &h);      
// 输出第一个 1
    printf("1\n");           
 // 行数 i 从 2 到层高
    for (i = 2; i <= h; s = 1, i++)        
    {
// 第一个 1
        printf("1 ");                
// 列位置 j 绕过第一个直接开始循环
        for (j = 1; j <= i - 2; j++) 
            //printf("%d ", (s = (i - j) / j * s));
            printf("%d ", (s = (i - j) * s / j));
// 最后一个 1,换行
        printf("1\n");               
    }
    // 暂停等待
    getchar();                       
    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-04-11

可以参考以下程序:

#include <stdio.h>
void main()
{int sz[10][10],i,j;<br/> for(i=0;i<=9;i++)<br/> {sz[i][0]=1;<br/> sz[i][i]=1;<br/> }
for(i=2;i<=9;i++)
for(j=1;j<=i-1;j++)
sz[i][j]=sz[i-1][j-1]+sz[i-1][j];
for(i=0;i<=9;i++)
for(j=0;j<=i;j++)
{printf("%-4d",sz[i][j]);<br/>     if(j==i) printf("\n");<br/> }
getchar();
}

本回答被网友采纳
第2个回答  推荐于2017-09-10
给你量身定制的,收好!~
#include <stdio.h>
main()
{
int a[100][100],i,j,k=1,l;
printf("qing shu ru xiao yu 100 de zheng shu:");
scanf("%d",&l);

for(i=0;i<l-1;i++)
for(j=0;j<=i;j++)
{
if(i==j||j==0)
{
a[i][j]=k;
printf("%d\t",a[i][j]);
if(i==j)
printf("\n");
}
else
{
a[i][j]=a[i-1][j]+a[i-1][j-1];
printf("%d\t",a[i][j]);
}
}
getch();
}本回答被提问者采纳
第3个回答  2011-12-10
#include <stdio.h>
int main()
{
int n,a[100][100],i,j;
scanf("%d",&n);
for (i=1;i<=n;i++) {a[i][1]=1;a[i][i]=1;}
for (i=3;i<=n;i++)
for (j=2;j<i;j++) a[i][j]=a[i-1][j]+a[i-1][j-1];
for (i=1;i<=n;i++)
{
for (j=1;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
}

return 0;
}
我把答案给你了哦,好好看吧,嘿嘿,不用谢了
第4个回答  2011-12-07
# include <stdio.h>
main()
{
int n, i, j, a[100][100];
printf("请输入n的值:");
scanf("%d", &n);
if (n == 1) printf("1\n");
else if (n == 2) printf("1\n1 1\n");
else if (n > 2 && n < 101)
{ for (i = 0; i < n; i++)
{ a[i][0] = 1;
a[i][i] = 1;
}
for (i = 2; i < n; i++)
{ for (j = 1; j < n-1; 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 ("%d ", a[i][j]);
printf ("\n");
}
}
else printf ("输入错误!\n");
}

满意请采纳。

C语言中怎样用数组输出杨辉三角的前n行?
include <stdio.h>#include <stdlib.h>int main(){\/\/ 数值和高度 int s = 1, h; \/\/ 循环计数 int i, j; printf("输入行数:");\/\/ 输入层数 scanf("%d", &h); \/\/ 输出第一个 1 printf("1\\n"); \/\/ 行数 i 从 2 到层高 for (i = 2; i <...

C语言 四种方法输出杨辉三角前n项(1<n<20)
输出杨辉三角的代码如下:#includevoidmain(){inti,j;inta[10][10];printf("\\n");for(i=0;i<10;i++) { a[i][0]=1; a[i][i]=1; }for(i=2;i<10;i++) for(j=1;j

C语言 用数组打印扬辉三角形
a[0]=1 ;for(i=0;i<=n;i++) \/\/n用来控制要输出的杨辉三角的行数 { for(j=1;j<=40-3*i;j++) \/\/第i行前面的空格个数为40 - 3*i printf(" ");for(j=0;j<=i;j++) \/\/用来输出第i行的i + 1个元素,注意第0行只有一个元素1 printf("%6d",a[j]);a[i+1]=...

如何用C语言循环输出杨辉三角?
int i, j, k, n=0, a[N][N]; \/*定义二维数组a[14][14]*\/ while(n<=0||n>=13){ \/*控制打印的行数不要太大,过大会造成显示不规范*\/ printf("请输入要打印的行数:");scanf("%d",&n);} printf("%d行杨辉三角如下:\\n",n);for(i=1;i<=n;i++)a[i][1] = a...

详解C语言用数组表示杨辉三角...
杨辉三角形是形如 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 的三角形,其实质是二项式(a+b)的n次方展开后各项的系数排成的三角形,它的特点是左右两边全是1,从第二行起,中间的每一个数是上一行里相邻两个数之和。这个题目常用于程序设计的练习。下面给出六种不同的解法。...

1050: 【入门】输出杨辉三角的前N行 我错了
写好了,C语言的,但我觉得这么写出来对你没什么意义,你应该自己写一段程序,哪怕写错了让别人调试也好。include <stdio.h>int main(){int a[11][11];int n;int i,j;scanf("%d",&n);for (i=1;i<=n;i++){a[i][1]=1;a[i][i]=1;if (i>=2)for (j=2;j<i;j++)a[i...

c语言程序杨辉三角
在C语言中,杨辉三角是一个经典的动态数组应用实例。如果你之前使用的是固定长度的栈区数组,现在需要转换成动态数组来实现。以下是相应的代码段:以下是使用动态数组实现杨辉三角的C语言代码:void main() { int* a = malloc(sizeof(int) * 10); \/\/ 动态分配数组内存 a[0] = 1; \/\/ 初始化...

用c语言输出杨辉三角
C语言实现输出n层杨辉三角,注意n>34时会导致长整型溢出,参考代码如下:include<stdio.h>int main(){int i,j,n;long a[34]={1};scanf("%d",&n);if(n>34)return 1;for(i=0;i<n;i++){for(j=i;j>0;j--)a[j]=a[j]+a[j-1];for(j=0;j<=i;j++)printf("%ld ",a[j...

C语言,输出杨辉三角
=1;\/\/原代码此处需修改,第一位数为1 a[i][i]=1;}for(i=1;i=9;i++)for(j=1;j<i;j++)\/\/原代码此处需修改 a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i<=9;i++){ for(j=0;j<=i;j++){printf("%5d\\t",a[i][j]);} printf("\\n");}return 0;} ...

c语言程序杨辉三角
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"); \/\/...

相似回答