2 ridish ridish 于 2014.12.16 19:11 提问

杨辉三角结果全部出来

可不可以只用c语言写一下啊,结合数据结构

7个回答

u014487915
u014487915   2014.12.16 19:20

http://baike.baidu.com/view/7804.htm 自己去查一下就知道啊

caozhy
caozhy   Ds   Rxr 2014.12.16 19:48

杨辉三角形的第n行的第m个元素等于n!/((n-m)!*m!)
因此编程如下
int x = 10;
for (int n = 1; n < x; n++)
{
for (int m = 1; m <= n; m++)
printf("%d\t", p(n) / (p(n - m) * p(m)));
printf("\n");
}
再写个阶乘函数:
int p(int x)
{
int r = 1;
if (x < 2) return r;
for (int i = 2; i <= x; i++)
r = r * i;
return r;
}

qwe1398775315
qwe1398775315   2014.12.16 22:54

#include
#include
int tab_num;
//最大行数
int count;
//当前行数
int curline_num;

void printnextline(int *);

int main() {

int* curline;
int i;
curline = malloc(sizeof(int));
printf("输入最大行数\n");
scanf("%d",&count);
tab_num = count-1;
curline_num = 1;
curline = 1;
for(i = 0;i < tab_num
(5/2+1);i++){
printf(" ");//空白处1个空格
}
tab_num-=0.5;
printf("1\n");
printnextline(curline);
return 0;
}
/*
*函数功能:求下一行的值
*参数:

  • curline 存储当前行的首地址 / void printnextline(int curline){ int i; int* nextline; nextline = malloc(sizeof(int)*(curline_num+1)); memset(nextline,0,sizeof(int)*(curline_num+1)); for(i=0;i<=curline_num;i++){ if(i == 0){ (nextline+i)=1; continue; } if(i == curline_num){ *(nextline+i)=1; continue; } *(nextline+i)=(curline+i)+*(curline+i-1); } for(i = 0;i < tab_num*(5/2+1);i++){ printf(" ");//空白处1个空格 } tab_num-=0.5; for(i = 0;i<curline_num+1;i++){ printf("%d ",*(nextline+i));//空白处5个空格 } printf("\n"); curline_num++; if(curline_num <count){ printnextline(nextline); }

用一个递归函数写出来的不知道算不算结合了数据结构

qwe1398775315
qwe1398775315   2014.12.16 22:54

#include
#include
int tab_num;
//最大行数
int count;
//当前行数
int curline_num;

void printnextline(int *);

int main() {

int* curline;
int i;
curline = malloc(sizeof(int));
printf("输入最大行数\n");
scanf("%d",&count);
tab_num = count-1;
curline_num = 1;
curline = 1;
for(i = 0;i < tab_num
(5/2+1);i++){
printf(" ");//空白处1个空格
}
tab_num-=0.5;
printf("1\n");
printnextline(curline);
return 0;
}
/*
*函数功能:求下一行的值
*参数:

  • curline 存储当前行的首地址 / void printnextline(int curline){ int i; int* nextline; nextline = malloc(sizeof(int)*(curline_num+1)); memset(nextline,0,sizeof(int)*(curline_num+1)); for(i=0;i<=curline_num;i++){ if(i == 0){ (nextline+i)=1; continue; } if(i == curline_num){ *(nextline+i)=1; continue; } *(nextline+i)=(curline+i)+*(curline+i-1); } for(i = 0;i < tab_num*(5/2+1);i++){ printf(" ");//空白处1个空格 } tab_num-=0.5; for(i = 0;i<curline_num+1;i++){ printf("%d ",*(nextline+i));//空白处5个空格 } printf("\n"); curline_num++; if(curline_num <count){ printnextline(nextline); }

用一个递归函数写出来的不知道算不算结合了数据结构

qwe1398775315
qwe1398775315   2014.12.16 22:58
#include <stdio.h>
#include <stdlib.h>
int tab_num;
 //最大行数 
int count;
//当前行数 
int curline_num;

void printnextline(int *);

int main() {    
    int* curline;
    int i;
    curline = malloc(sizeof(int));
    printf("输入最大行数\n");
    scanf("%d",&count); 
    tab_num = count-1;
    curline_num = 1;
    *curline = 1;
    for(i = 0;i < tab_num*(5/2+1);i++){
        printf(" ");//空白处1个空格 
    }
    tab_num-=0.5;
    printf("1\n");
    printnextline(curline);
    return 0;
}
/*
 *函数功能:求下一行的值 
 *参数:
 *      curline 存储当前行的首地址 
 */
void printnextline(int* curline){
    int i;
    int* nextline;
    nextline = malloc(sizeof(int)*(curline_num+1));
    memset(nextline,0,sizeof(int)*(curline_num+1));
    for(i=0;i<=curline_num;i++){
        if(i == 0){
            *(nextline+i)=1;
            continue; 
        }
        if(i == curline_num){
            *(nextline+i)=1;
            continue;
        }
        *(nextline+i)=*(curline+i)+*(curline+i-1);
    } 
    for(i = 0;i < tab_num*(5/2+1);i++){
        printf(" ");//空白处1个空格 
    }
    tab_num-=0.5;
    for(i = 0;i<curline_num+1;i++){
        printf("%d     ",*(nextline+i));//空白处5个空格 
    }
    printf("\n"); 
    curline_num++;
    if(curline_num <count){
        printnextline(nextline);
    }
}

排版没弄好。。

save4me
save4me   Ds   Rxr 2014.12.17 00:15
save4me
save4me   Ds   Rxr 2014.12.18 09:29

上面的答案有帮助吗?如果还有问题,请提出来,如果对答案满意,请顶一下,并标记为采纳答案,谢谢!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
第三次实验报告(杨辉三角)
/* 第一部分:问题及代码 *文件名称:2017410.cpp *作者:宋永智 *完成时间:2017年4月10日 *版本号:1.0 *任务求解描述部分 *输入描述:编写程序,形成n阶杨辉三角 *问题描述:如何用程序编写,输出n阶杨辉三角 *程序输出:一个杨辉三角形 *问题分析:利用循环和选择结构,输出处理后的结果 *算法分析:在主函数中调用该函数,形成杨辉
JAVA问题总结之17-杨辉三角的实现
JAVA问题总结之17-杨辉三角的实现: 代码: package java3; import java.util.Scanner; /** * @author xubo601450868 * @time 20150827 * @version v1.0 * 杨辉三角 * 输入一个大于0的任意的正数n,n为杨辉三角的层数或者行数,输出n层的杨辉三角 * */ public cla
杨辉三角两种输出结果
package com.sxt; import java.util.Arrays; public class KeBen { public static void main(String[] args) { int[][] array =new int [10][10]; array [0]=new int[]{1}; //第一行就是1 for (int i=1;
【C语言】杨辉三角(等腰三角)
前言:杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年。杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。等腰杨辉三角雏形:代码如下:#include &amp;lt;stdio.h&amp;...
c语言实现打出杨辉三角
已经找出了杨辉三角的规律,下面是我的代码,很有用哦!!! #include  void main()  {      int i,j,n,k;      scanf("%d",&n);      for(i=1;i     {          k=1;          for(j=1;j         {              printf("%d ",k); 
html页面打印杨辉三角
var write=function() { for(var i=0;i<arguments.length;i++) { document.write(" "+arguments[i]); } } var fun=function(n) { var k; for(var i=1;i<=n;i+
跟着小白学~如何使用二维数组打印杨辉三角
今天我给大家带来的知识是“杨辉三角”,可能有些朋友听说过,没听说过的不要紧,就算同是身为小白的你看完本篇文章,也是可以敲出 杨辉三角的代码~~     那么我先来给大家介绍下什么是 "杨辉三角" : 杨辉三角   杨辉三角,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。帕斯卡(1623----1662)是
Java小案例——使用双重for循环实现杨辉三角的输出
本例使用双重for循环实现杨辉三角的输出。
求杨辉三角的第n行
int* getRow(int rowIndex, int* returnSize) { if (rowIndex 0) return NULL; int *res = (int*)malloc(sizeof(int) * (rowIndex + 1)); for (int row = 0; row <= rowIndex; row++) for (int col = row
杨辉三角 python实现
题目  杨辉三角定义如下:  1  1 1  1 2 1  1 3 3 1  1 4 6 4 1  1 5 10 10 5 1  把每一行看作一个list,试写一个 generator,不断输出下一行的list。  期待输出:  [1]  [1, 1]  [1, 2, 1]  [1, 3, 3, 1]  [1, 4, 6, 4. 1]  [1, 5, 10, 10,