杨辉三角 --- C语言程序

杨辉三角 ---  C语言程序


 

 

1、前言

  最近在逛博客的时候发现一个特别有意思的三角形  然后便编写了下来。   它呢就是杨辉三角,也作为我的首篇博客吧

        

2、旅程开始

  此处为网上所找到的公式以及各种概述,然而对于来说 然并卵 我并看不懂 ???  相信各位应该也有和我一样的人。。。。。

          


 1、首先呢     我们先不多说  先打一个简单的模板上去  (倒三角)   

          

 

 

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5         for (int  i = 1; i <= 13; i++)
 6         {
 7 //            输出倒三角空格
 8             for (int j=13; j>i; j--)
 9             {
10                 printf("--");
11             }
12             printf("\n");
13         }
14 
15     
16         return 0;
17 }
View Code

 


 2、我们搭完一个模板后   我们是不是需要分析一下公式规律了

        

 


 

3、了解第二步之后   那我们就开始搭一个架子了哦    !!!!

               

#include <stdio.h>

int main()
{
        int upNumber = 1;                   //用来记录上一个数
        for (int  i = 1; i <= 13; i++)
        {
            upNumber = 1;
//            输出倒三角空格
            for (int j=13; j>i; j--)
            {
                printf("  ");
            }
            printf("1");                // 这是输出每一行的第一个1
            for (int j = 1; j <= i - 2; j++)
            {
                //                    原始数据
               printf("  %i",upNumber = (i - j) * upNumber / j);
            }
            printf("   1\n");               // 每一行的最后一个 1
           
        }
    return 0;
}
View Code

 


 

 

4、我们可以从上图看出只有第一行多了一个1对吧,然而其余的并没有多、或者少  只是排版排的不怎么样  歪歪扭扭的待会儿我会一一告诉大家 ? ?              那么我们先来解决1一个问题吧(我们可以判断i是否等于1  如果等于就不让它执行,如果不等于就执行是吧  等等方法形式  对吧!)

 1 //            判断是否第一次进来  如果是第一次进来就输出1就可以了
 2             if (i!=1) {
 3                 printf("1");                // 这是输出每一行的第一个1
 4                 for (int j = 1; j <= i - 2; j++)
 5                 {
 6                     printf("  %i",upNumber = (i - j) * upNumber / j);
 7                 }
 8                 printf("   1\n");               // 每一行的最后一个 1
 9             }
10             else
11             {
12                 printf("1\n");               //第一行的1
13             }

 


 

5、代码写到这  形状就差不多到这了    剩下的就是排版的问题了是吧 !!!

        

 


6、排版嘛 就是空格的多少    百位数的就是一个空格  十位数的就是两个空格  至于是一位数的话  那么就是一个空格了哦  怎么知道是百位或者十位还有个

位  那就取决于它位数的多少了    因为刚开始学  不知道什么内部的方法或者什么函数的  然后只能自己想了哦

 首先上一个例子吧  然后在展图

  int count = 1;     //用来计数的多少   默认是1
  int sum = 100;     //给一个默认的百位数
  //给它一个循环  条件为sum大于等于10那么就继续循环
  while(sum>=10)
  {
       sum/=10;   //除以10
       count++;   //只要进来一次就加一次  
   }
//如果执行完的话  那么Count的值为3

 

       

最后一个忘记写了   空格为3个      此处为所有代码

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5         int upNumber = 1;                   //用来记录上一个数
 6         int count = 1;                      //排序时用来记录数字的长度
 7         int sum =0;                         //排序时用来计算的变量
 8         for (int  i = 1; i <= 13; i++)
 9         {
10             upNumber = 1;
11 //            输出倒三角空格
12             for (int j=13; j>i; j--)
13             {
14                 printf("  ");
15             }
16 //            判断是否第一次进来  如果是第一次进来就输出1就可以了
17             if (i!=1) {
18                 printf("1");                // 这是输出每一行的第一个1
19                 for (int j = 1; j <= i - 2; j++)
20                 {
21 //   -----------------用来排序-----------------
22                    sum = upNumber = (i - j) * upNumber / j;
23                     while(sum>=10)
24                     {
25                         sum/=10;
26                         count++;
27                     }
28                     if (count==3) {
29                         printf(" %i",upNumber);
30                         count=1;
31                     }else if (count==2)
32                     {
33                         printf("  %i",upNumber);
34                         count=1;
35                     }else
36                     {
37                         printf("   %i",upNumber);
38                         count=1;
39                     }
40 //   -----------------排序结束并输出------------
41 //                    原始数据
42 //                    printf("  %i",upNumber = (i - j) * upNumber / j);
43                 }
44                 printf("   1\n");               // 每一行的最后一个 1
45             }
46             else
47             {
48                 printf("1\n");               //第一行的1
49             }
50         }
51     return 0;
52 }
View Code

 

 

以上纯属个人浅见,第一次写博客不懂如何排版,所以如此之丑,见谅

  

 

转载于:https://www.cnblogs.com/ljy-666/p/4928067.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值