问关于发生杨辉三角形代码中的两点疑惑

问关于产生杨辉三角形代码中的两点疑惑
代码如下:
#include <iostream>
using namespace std;
int main()
{
  int m=8;
  int r,c,j,n=0;
  for(n=0;n<m-1;n++)
  {
  for(r=1;r<15-n;r++)
  {cout<<"*";}
  c=1;
  cout<<c<<"*";
  for(r=1;r<=n;r++)
  {
  c=c*(n-r+1)/r;
  if(c<100)
  if(c<10)
  cout<<c<<"*";
  else
  cout<<c<<"*";
   
  }
  cout<<"n="<<n<<endl;
  cout<<endl;

  }
  return 0;
}
1:c=c*(n-r+1)/r 是如何想到的?
2:if(c<100)
if(c<10)
cout<<c<<"*";
else
cout<<c<<"*";
改成直接cout<<c<<,可以吗?