| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1073 人关注过本帖
标题:打印杨辉三角,会的来看看哪里错了
只看楼主 加入收藏
zyhfbim1a9
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2008-3-15
收藏
 问题点数:0 回复次数:8 
打印杨辉三角,会的来看看哪里错了
输入行数,打印杨辉三角:
如输入 5  则打印输出:
        1
       1 1
      1 2 1
     1 3 3 1
    1 4 6 3 1
但是我的却这样输出:
         1
        1 1 1
       1 2 2 2 1
      1 2 2 2 2 2 1
     1 4 4 4 4 4 4 4 1
我的代码如下,帮忙改改吧,
   #include "stdio.h"
main()
{
    int i,j,k,l,n;
    int a[1000];
    l=0;
    k=0;
    printf("please input a number:\n");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n+i-1;j++)
        {
            if(j<=n-i)
            printf(" ");
            else
            {
                if(j==n-i+1||j==n+i-1)
                {
                    a[k]=1;
                    printf("%d ",a[k]);
                    k++;
                }
                else
                {
                    a[k]=a[k-3-l]+a[k-2-l];
                    printf("%d ",a[k]);
                    k++;
                    l++;
                }
            }
        }
        printf("\n");
    }

}
搜索更多相关主题的帖子: 杨辉三角 quot 打印 int input 
2008-05-09 22:38
走一圈
Rank: 1
等 级:新手上路
帖 子:156
专家分:0
注 册:2008-5-9
收藏
得分:0 
书上就有
2008-05-09 22:40
zyhfbim1a9
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2008-3-15
收藏
得分:0 
可是我的书上没有啊
2008-05-09 22:42
走一圈
Rank: 1
等 级:新手上路
帖 子:156
专家分:0
注 册:2008-5-9
收藏
得分:0 
这代码多 你搜下  帮我的看看
2008-05-09 22:51
bianchengfeng
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2008-3-1
收藏
得分:0 
杨辉三角
#include<stdio.h>
void main()
{
    int a[10][10],i,j;
    for(i=0;i<10;i++)
    {
        a[i][0]=1;
        a[i][i]=1;
    }
    for(i=2;i<10;i++)
        for(j=1;j<i;j++)
            a[i][j]=a[i-1][j]+a[i-1][j-1];
        for(i=0;i<10;i++)
        {
            for(j=0;j<=i;j++)
                printf("%5d",a[i][j]);
            printf("\n");
        }

}
2008-05-10 08:31
windk
Rank: 1
来 自:北京联合大学
等 级:新手上路
帖 子:43
专家分:0
注 册:2008-5-4
收藏
得分:0 
1 程序书写不错 但是算法有问题,试试二维数组。还有加点注释吧,方便自己理解。
我的解法:

#include <stdio.h>
#include <math.h>
void main()
{
    int i;//counter
    int j;//counter
    int k;//counter
    int yhAngle[100][100]={0};//define & initialize two-dimensional array 定义并初始化二维数组
    int rows=0;//yhAngle's rows杨辉三角的行数
    
    printf("Please enter the rows of the yhAngle:\n");//input the rows 输入行数
    scanf("%d",&rows);
    
    for (i = 0;i < rows;i++)//initialize the first line to be 1 初始化第一列元素为1
    {
        yhAngle[i][0] = 1;
    }
    
    for (i = 1; i < rows; i++)    //evaluate yhAngle 为二维数组赋值
    {
        for (j = 1; j <= i; j++) //j <= i 对角线结束
        {
            if (i == j)
            {
                yhAngle[i][j] = 1;
                continue;
            }
            yhAngle[i][j] = yhAngle[i-1][j-1] + yhAngle[i-1][j];
        }
    }
    
    for (i = 0; i < rows; i++)    //print yanghui Angle 打印杨辉三角
    {
        for(k=1; k <= fabs(rows-i); k++)//make space
        {
            printf(" ");
        }
        
        for (j = 0; j <= i; j++)//print mumber打印数字
        {
            printf("%2d",yhAngle[i][j]);
        }
        printf("\n");
    }
}
2008-05-10 09:39
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
#include <iostream>
#include <math.h>
using namespace std;

int a[100];

void make(int n,int w)
{
    int prev=0,tab=(n+1)*w>>1;
    if (w%2)w++;
    for (int i=1;i<=n;i++)
    {
        printf("%*c",tab-=w>>1,' ');
        for (int j=0;j<i;j++)
        {
            if (j==0 || j==i-1)prev=a[j]=1;
            else {int t=prev;prev=a[j];a[j]+=t;}
            printf("%*d",w,a[j]);
        }
        printf("\n");
    }
}

int main()
{
    make(12,4);
}


自己第三次写这个程序,空间复杂度从n^2到2*n到现在的n。很有些感悟……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-10 09:50
aesqw123
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-5-6
收藏
得分:0 
tab=(n+1)*w>>1
移位的作用是什么??
2008-05-10 14:53
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
这个是为了好看做的排版控制。你算几个tab出来就知道了……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-10 16:12
快速回复:打印杨辉三角,会的来看看哪里错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045360 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved