杨辉三角 --- C语言程序
1、前言
最近在逛博客的时候发现一个特别有意思的三角形 然后便编写了下来。 它呢就是杨辉三角,也作为我的首篇博客吧
2、旅程开始
此处为网上所找到的公式以及各种概述,然而对于来说 然并卵 我并看不懂😂😂😂相信各位应该也有和我一样的人。。。。。
1、首先呢 我们先不多说 先打一个简单的模板上去 (倒三角)
1 #include
2
3 intmain()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
intmain()
{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
2
3 intmain()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
以上纯属个人浅见,第一次写博客不懂如何排版,所以如此之丑,见谅