首页 > 电脑

零初始值处理中的N指的是所有要处理的数据吗??处理后的数据是从0开始的吗?

更新时间2018-03-06 21:45:26

零初始值处理中的N指的是所有要处理的数据吗??处理后的数据是从0开始的吗?

普通直角版本:

123456789101112131415161718192021#define N 11#include<stdio.h>void main(){    int i,j,a[N][N];    for(i=1;i<N;i++)    {        a[i][1]=1;        a[i-1][i-1]=1;    }    a[10][10]=1;    for(i=3;i<N;i++)        for(j=2;j<=i-1;j++)            a[i][j]=a[i-1][j-1]+a[i-1][j];    for(i=1;i<N;i++)    {        for(j=1;j<=i;j++)            printf("%6d",a[i][j]);        printf(" ");    }}

普通等腰版本:

1234567891011121314151617181920212223242526272829303132333435363738394041#include "iostream.h"#include "stdlib.h"int main(){ while(1) {  cout<<"输入显示杨辉三角的行数: ";  //不要输入太大,int有限制.  int i_line;  cin>>i_line;  cout<<"三角形如下 ";  int **p;                          //建立二维数组  p=new int*[i_line];  //指针分配空间  int i;          //循环变量  for (i=0;i<i_line;i++)  {   p[i]=new int[i+1];          //每一行分配空间   }  for (i=0;i<i_line;i++)        //生成三角形  {   p[i][0]=1;   p[i][i]=1;               //杨辉三角,每一行第一个、最后一个数是1   if (i>=2)       //第三行开始   {    for (int j=1;j<i;j++)  //第三行开始,迭代     p[i][j]=p[i-1][j-1]+p[i-1][j];   }  }  for (i=0;i<i_line;i++)  {   for (int m=0;m<i_line-i-1;m++)    cout<<" ";  //输出空格   for (int k=0;k<=i;k++)  //显示每一行    cout<<p[i][k]<<" ";   cout<<" ";  }  cout<<" "; }                                                                  cout<<endl; return 0;}

递归版:

123456789101112131415161718192021222324#include <stdlib.h> #include <stdio.h>int f(int n){    if(n==1||n==0)        return 1;    else        return f(n-1)*n;}int main() { int i, j,k,n; printf("请输入行数(最好<=13):"); scanf("%d",&n); for (i = 0; i<n; i++)  {   for(k=(n-i)*2;k>0;k--)      printf(" "); for (j=0;j<=i;j++)  printf("%4d",(f(i)/f(j)/f(i-j)));  printf(" ");  } return 0;}

LZ你的要求是:利用n!/m!/(n-m)!计算,所以你要的程序是这样的:

123456789101112131415161718192021222324#include <stdlib.h> #include <stdio.h>int f(int n){    if(n==1||n==0)        return 1;    else        return f(n-1)*n;}int main() { int i, j,k,n; printf("请输入行数(最好<=13):"); scanf("%d",&n); for (i = 0; i<n; i++)  {   for(k=(n-i)*2;k>0;k--)      printf(" "); for (j=0;j<=i;j++)  printf("%4d",(f(i)/f(j)/f(i-j)));  printf(" ");  } return 0;}


上一篇:更新程序后安装目录有什么变化吗

下一篇:写vlookup公式时,第四个参数输入0后按ENTER键0处自动显示FALSE,是怎么回事啊?