用C打印杨辉三角形
本帖最后由 代码农民 于 2016-11-29 22:02 编辑杨辉三角形:
1
11
121
1331
14641
15 10 10 51
.......
求打印这个图(示例6行),请给出你最好的版本....谢谢了
如果不用二维数组呢?
本帖最后由 致年轻的我们 于 2016-11-29 20:26 编辑
顺便宣传一下好友的扣扣群,他是个真正的大神oh
/*
杨辉三角形打印非数组,非递归
欢迎加入快写代码官方群: 136898517
群里有大神oh
*/
#include <stdio.h>
int fun(int n,int i);
int main()
{
int a,i,j;
printf("输入三角形层数:");
scanf("%d",&a);
for(i = 0;i < a;i++)
{
for(j = 0;j <= i;j++)
{
printf("%5d",fun(i,j));
}
printf("\n");
}
return 0;
}
int fun(int n,int i)
{
int k,result = 1;
if(n < i)
{
return -1;
}
else
{
if(i > n/2)
{
i = n - i;
}
for(k = n;k > n-i;k--)
{
result = result*k;
}
for(k = 1;k <= i;k++)
{
result = result/k;
}
}
return result;
} 致年轻的我们 发表于 2016-11-29 20:24
顺便宣传一下好友的扣扣群,他是个真正的大神oh
新手可以进群么.. 代码农民 发表于 2016-11-29 20:36
新手可以进群么..
可以,非常欢迎入群 致年轻的我们 发表于 2016-11-29 20:24
顺便宣传一下好友的扣扣群,他是个真正的大神oh
这个代码很不错,简洁高效。下面是,根据上面的代码修改为C++版本,供大家交流:
/*
杨辉三角形打印非数组,非递归
欢迎加入快写代码官方群:136898517
群里有大神oh
*/
#include <IOSTREAM>
using namespace std;
int fun(int n, int i);
int main()
{
int n = 12;
for (int i = 0; i < n; i++) // i 行号
{
for (int j = 0; j <= i; j++) // j 列号
{
cout.width(4); cout.fill(' ');
cout << fun(i, j);
}
cout << endl;
}
return 0;
}
int fun(int i, int j) // i 行号,j 列号
{
int k, ret = 1;
if (i < j)
{
return -1;
}
else
{
if (j > i / 2)
{
j = i - j;
}
for (k = i; k > i - j; k--)
{
ret = ret * k;
}
for (k = 1; k <= j; k++)
{
ret = ret / k;
}
}
return ret;
}
patton88 发表于 2016-11-29 21:37
这个代码很不错,简洁高效。下面是,根据上面的代码修改为C++版本,供大家交流:
/*
都是大神!!! 致年轻的我们 发表于 2016-11-29 20:24
顺便宣传一下好友的扣扣群,他是个真正的大神oh
神!
可以加下您的QQ么.. 我主动加你好友吧
页:
[1]