转载

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

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

1、 前言

最近在学习C语言然后发现一个特别有意思的三角形  然后便编写了下来。   它呢就是 杨辉三角

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

2、 旅程开始

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

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

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

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

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、我们搭完一个模板后   我们是不是需要分析一下公式规律了

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

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

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

#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对吧,然而其余的并没有多、或者少  只是排版排的不怎么样  歪歪扭扭的 待会儿我会一一告诉大家 :grin: :grin:            那么我们先来解决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、代码写到这  形状就差不多到这了    剩下的就是排版的问题了是吧 !!!

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

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

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

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

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

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

最后一个忘记写了   空格为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

以上纯属个人浅见,初学欢迎探讨指正~

正文到此结束
Loading...