用C语言实现杨辉三角

C语言程序设计课程作业

要求用C语言实现杨辉三角并在黑框中输出结果。

输入要显示的行数,在黑框中输出对应的杨辉三角,格式不限。

代码如下,如有帮助,请采纳一下,谢谢。

#include <stdio.h>
#include <math.h>
using namespace std;
//阶乘
int jiechen(int n)
{
	if(n == 0)
		return 1;
	int sum = 1;
	for (int i =1; i <=n; i++)
	{
		sum *= i;
	}
	return sum;
}
//c(n,m)
int Cnm(int n,int m)
{
	return jiechen(n)/(jiechen(m)*jiechen(n-m));
}

int main()
{
	printf("请输入n:");
	int n;
	scanf("%d",&n);

	for (int i = 0; i <n; i++)
	{
		for (int j = 0; j<=i; j++)
		{
			printf("%d ",Cnm(i,j));
		}
		printf("\n");
	}

	getchar();
	getchar();
	return 0;
}

 

#include <stdio.h>

/* 
 * 定义阶乘,在这里可能会想。为什么要用float,当我试第一次的时候,
 * 如果用int的话,那么在打印行数多了以后就会出错。
 * 这是因为阶乘的数比较大,如果用int就不够用了。下同
 */
float J(int i){
    int j;
    float k=1;
    for(j=1;j<=i;j++)
        k=k*j;
    return(k);
}
float C(int i,int j){  /*定义组合数*/
    float k;
    k=J(j)/(J(i)*J(j-i));
    return(k);
}
void main(){
    int i=0,j,k,n;  /*打印杨辉三角*/ 
    while(i<=0||i>16){
        printf("请输入要打印的行数:");
        scanf("%d",&i);
    }
    printf("%d行杨辉三角如下:\n",i);

    for(j=0;j<i;j++){
        for(k=1;k<=(i-j);k++)
            printf("  ");
        for(n=0;n<=j;n++)
            printf("%4.0f",C(n,j));
        printf("\n");
    }
    printf("\n\n");
}