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");
}