鱼C论坛

 找回密码
 立即注册
查看: 906|回复: 16

[已解决]输出杨辉三角

[复制链接]
发表于 2020-6-11 18:59:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Juniorboy 于 2020-6-12 17:55 编辑

                                                              
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
        int** p = NULL;
        int a = 0, b = 0;
        printf("输入您要创建二维数组的行和列(a b) :  ");
        scanf_s("%d%d",&a,&b);
        p = (int**)malloc(sizeof(int*) * a);
        for (int i = 0; i < a; i++)
        {
                p[i] = (int*)malloc(sizeof(int) * b);
        }
        //printf("——————————请输入二维数组的数据——————————");
        //printf("\n");
        //printf("请输入(默认数组初始化为0):");
        //printf("\n");
        //int c = 1 ;
        for (int i = 0; i < a; i++)
        {
                for (int j = 0; j < b; j++)
                {
                        int x = 0;
                        //scanf_s("%d", &x);
                        //p[i][j] = x;        
                        p[i][j] = 0;
                }
        }
                //printf("——————————数据录入完毕——————————");
                //printf("\n");
                //printf("数据如下:");
                //printf("\n");

                //for (int i = 0; i < a; i++)
                //{
                //        for (int j = 0; j < b; j++)
                //        {
                //                
                //                printf ("%6d ",p[i][j]) ;
                //        }
                //        printf("\n");
                //}
                //printf("/*************************************************************************************************/");

                /*************************************************************************************************/

                printf("请输入您想要输出的杨辉三角的行数  :");
                int s = 0;
                scanf_s("%d", &s);
                for (int i = 0; i < s; i++)
                        p[i][0] = p[i][i] = 1;

                for (int i = 2; i < s; i++)
                {
                        for (int k = 1; k < s; k++)
                        {
                                p[i][k] = p[i - 1][k - 1] + p[i - 1][k];
                        }
                }

                for (int i = 0; i < s; i++)
                {
                        for ( int  p = 0; p < 20 -i; p++)
                        {
                                printf("   ");
                        }
                        for (int j = 0; j < i + 1; j++)
                        {
                                printf("%6d", p[i][j]);
                        }
                        printf("\n");
                }
                printf("\n");
                return 0;
}


我查了好几次也没找到问题所在,输出的结果是这样的,求解,谢谢啦

                                                                  1
                                                              1     1
                                                           1     2     1
                                                        1     3     3     1
                                                     1     4     6     4     1
                                                  1     5    10    10     5     1
                                               1     6    15    20    15     6     1
                                            1     7    21    35    35    21     7     1
                                         1     8    28    56    70    56    28     8     1
                                      1     9    36    84   126   126    84    36     9     1
                                   1    10    45   120   210   252   210   120    45    10     1
                                1    11    55   165   330   462   462   330   165    55    11     1
                             1    12    66   220   495   792   924   792   495   220    66    12     1
                          1    13    78   286   715  1287  1716  1716  1287   715   286    78    13     1
                       1    14    91   364  1001  2002  3003  3432  3003  2002  1001   364    91    14     1
                    1    15   105   455  1365  3003  5005  6435  6435  5005  3003  1365   455   105    15     1
                 1    16   120   560  1820  4368  8008 11440 12870 11440  8008  4368  1820   560   120    16     1
              1    17   136   680  2380  6188 12376 19448 24310 24310 19448 12376  6188  2380   680   136    17     1
           1    18   153   816  3060  8568 18564 31824 43758 48620 43758 31824 18564  8568  3060   816   153    18     1        1    19   171   969  3876 11628 27132 50388 75582 92378 92378 75582 50388 27132 11628  3876   969   171    19     1
最佳答案
2020-6-13 00:46:33
①代码没问题的,主要是你的黑窗口显示不够的问题导致的。
②你可以把黑窗口最大化,就可以了。
③图片是直接复制你的代码的运行结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-12 00:09:42 | 显示全部楼层
你是格式问题还是啥,请把输入参数发出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-12 14:40:10 | 显示全部楼层
soupman 发表于 2020-6-12 00:09
你是格式问题还是啥,请把输入参数发出来

输入您要创建二维数组的行和列(a b) : 20 20
请输入您想要输出的杨辉三角的行数  :20
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-12 14:59:52 | 显示全部楼层
soupman 发表于 2020-6-12 00:09
你是格式问题还是啥,请把输入参数发出来

1    19   171   969  3876 11628 27132 50388 75582 92378 92378 75582 50388 27132 11628  3876   969   171    19     1
就是这行没有换行,本来要输出一个三角形的,格式问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-12 15:22:49 | 显示全部楼层
soupman 发表于 2020-6-12 00:09
你是格式问题还是啥,请把输入参数发出来

我刚才输出了一个21行的三角形,第21行正确,20行还是输出了错误的格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-12 20:31:15 | 显示全部楼层

回帖奖励 +1 鱼币

可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-12 20:51:45 | 显示全部楼层
首先要先查出杨辉三角的特性。前些日子我找了经典例题100例。里面有这题,仔细研究了一下。因为我那时第一次听说杨辉三角。百度百科上面的介绍看得很晕,理解起来很绕。所幸我全弄懂了。上面的介绍真是坑。说了很多废话,用其中一个特性就OK了。选你觉得比较简单的。按照上面的计算方法进行设计是不会错的。
另外,楼主非要用malloc?我可不喜欢。不知道new可不可以。没办法,试验而已,不行就直接硬设,不让用户输入。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-12 21:07:11 | 显示全部楼层
似乎不可能啊。竟然没换行。这就尴尬了!不知道原因。改天我也去试主式看看我的20行会不会也是这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-12 21:15:10 | 显示全部楼层
405794672 发表于 2020-6-12 21:07
似乎不可能啊。竟然没换行。这就尴尬了!不知道原因。改天我也去试主式看看我的20行会不会也是这样

哈哈哈,就是出了错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-12 22:39:27 | 显示全部楼层
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-12 23:14:45 | 显示全部楼层
你把cmd窗口调大点就好了

                               
登录/注册后可看大图

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-12 23:17:02 | 显示全部楼层
这啥玩意,截图发不了,你把cmd窗口调大点就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-13 00:46:33 | 显示全部楼层    本楼为最佳答案   
①代码没问题的,主要是你的黑窗口显示不够的问题导致的。
②你可以把黑窗口最大化,就可以了。
③图片是直接复制你的代码的运行结果
运行结果.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-14 14:51:14 | 显示全部楼层
今天想起了那出,试了一下,21行都没有问题
QQ图片20200614144830.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-14 15:18:19 | 显示全部楼层
405794672 发表于 2020-6-14 14:51
今天想起了那出,试了一下,21行都没有问题

明白了,那就是我的编译器的输出格式有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 15:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表