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

来源:互联网 时间:1970-01-01

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

1、 前言

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

2、 旅程开始

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

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");// 这是输出每一行的第一个1for (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 else11 {12 printf("1/n"); //第一行的113 }

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"); // 这是输出每一行的第一个119 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 }else36 {37 printf(" %i",upNumber);38 count=1;39 }40 // -----------------排序结束并输出------------41 // 原始数据42 // printf(" %i",upNumber = (i - j) * upNumber / j);43 }44 printf(" 1/n"); // 每一行的最后一个 145 }46 else47 {48 printf("1/n"); //第一行的149 }50 }51 return 0;52 }View Code

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



相关阅读:
Top