输出杨辉三角形设计报告(1)
11
1 2 1
设计要求
根据杨辉三角Βιβλιοθήκη 形分析出数字间的规律;要求用四种方法输出杨辉三角形的前n(1<n<20)行。
设计目的
掌握所学语言程序设计的方法,熟悉 所学语言的开发环境及调试过程,熟悉所学语言中的数据类型,数据结构、语句结构、运算方法,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。
《C程序设计》
课程设计报告
(2014—2015学年第2学期)
题目:输出杨辉三角
学 院:电气与电子工程学院
班 级:电气1309
学 号:**********
*********
**********
时 间:起2015.4.27止2015.4.30
一、课程设计概述
课程设计问题描述
杨辉三角,又称贾宪三角形、帕斯卡三角形,是二项式系数在三角形中的一种几何排列。在我过南宋数学家杨辉所著的《详解九章算术》一书中用杨辉三角形解释二项式和乘方规律。与杨辉三角联系最紧密的是二项式乘方展开式的系数规律,即二项式定理。
开发环境
本程序采用Microsoft Visual C++ 6.0的英文版本进行编译。Visual C++是微软公司推出的基于Windows操作系统的可视化C++编程工具。
二、总体设计(1)
系统功能需求分析
此系统的主要功能是用四种不同的方法输出杨辉三角的前n(1<n<20)行。要实现目标就要完成以下步骤:
1、要熟练掌握相关的C语言知识。
2、要熟练掌握杨辉三角的基本规律。
1杨辉三角第n行中的n个数之和等于2的n-1次幂。
2每个数字都等于它上方的两数之和。
3每行数字左右对称,由1开始逐渐变大。
4第n行的数字有n+1项。
5(a+b)的n次幂的展开式中各项系数依次对应杨辉三角第n+1行中的每一项。并由二项式系数规律推出公式:k=k*(i-j)/j。
3、将杨辉三角的基本规律转换为C语言程序
4、调试C语言,找出其中的错误。
此系统实现的关键是掌握杨辉三角的基本规律,以及C语言的转换。
二、总体设计(2)
系统总体设计框架
三、详细设计(1)
主要功能模块 1 的算法设计
解法一:
首先定义一个二维数组,长度为21,21。接着定义三个变量i,j,n。然后输出提示字符,输入杨辉三角行数。再用一个for循环将每一行的第一个数字与最后一个数字初始化。然后用双重for循环计算每一行中间各个数字。最后再用双重for循环输出每一个数字并且换行。
解法二:
首先定义一个二维数组,长度为21,21,。接着定义三个变量i,j,n。然后输出提示字符,提示输入杨辉三角行数。将每一行第一个数字和最后一个数字的初始化置于双重for循环中,减少一个循环,并计算每一行中间的各个数字。最后用双重for循环输出每一个素质并且换行。
最新显示杨辉三角实验报告
最新显示杨辉三角实验报告实验目的:探究杨辉三角的生成规律及其在现代数学和计算机科学中的应用。
实验工具与环境:- 计算机一台,配备Python编程环境。
- Python编程语言及其库NumPy和Matplotlib用于数据处理和图形展示。
- Jupyter Notebook作为实验报告的编写和展示平台。
实验步骤:1. 利用Python编写函数,通过数学公式直接计算杨辉三角的第n行元素。
2. 使用循环结构,编程生成杨辉三角的前10行。
3. 观察并验证杨辉三角中的各项性质,如每行数字的和为2的幂次方。
4. 利用NumPy库进行矩阵乘法,探索杨辉三角与二项式系数的关系。
5. 通过Matplotlib库将生成的杨辉三角可视化展示,并分析其图形特征。
6. 探讨杨辉三角在组合数学、概率论等领域的应用实例。
实验结果:1. 成功编写并运行了生成杨辉三角的Python程序,正确输出了前10行的数据。
2. 通过观察和计算,验证了杨辉三角的每一行数字之和确实为2的幂次方。
3. 在NumPy的帮助下,确认了杨辉三角的每一行与二项式系数的对应关系。
4. 利用Matplotlib库生成的杨辉三角图形清晰地展示了其对称性和数字分布规律。
5. 通过实例分析,了解了杨辉三角在解决组合问题和计算概率时的实际应用。
实验结论:杨辉三角不仅是一种有趣的数学现象,而且在现代科学和工程领域有着广泛的应用。
通过本次实验,我们不仅掌握了杨辉三角的生成方法,还深入理解了其背后的数学原理和实际应用价值。
此外,实验过程中的编程实践也加强了我们运用计算机工具解决数学问题的能力。
杨辉三角实验报告
杨辉三角(一)需求分析1.逐行打印二项展开式(a + b)i 的系数2.要求:输入杨辉三角的阶数n,在屏幕上显示数杨辉三角形。
3.输入的值n以小于12为宜(图形漂亮)。
(二)概要设计1. 首先初始化一个队列,元素为1,然后根据这个队列迭代生成任意行的二项式系数。
2. 判断用户输入的行数,然后决定循环次数。
这些循环中,程序根据杨辉三角的实际构造函数模拟构造过程。
每次形成一个新的二项式系数序列,并将这个序列保持在一个新的队列中。
本次循环结束后,这个心构造的序列将作为下次循环来构造另一个二项式序列的参照序列。
(三)详细设计1.定义队列结点typedef struct QNode{int data;struct QNode *next;}QNode ,*QueuePtr;typedef struct {QueuePtr front;QueuePtr rear;}LinkQueue;2.基本操作函数原型●队列初始化void InitQueue(LinkQueue *Q){Q->front =Q->rear = (QueuePtr)malloc(sizeof(QNode));if(!Q->front) printf("OVERFLOW");Q->front->next= NULL;}●插入元素e为新的队尾元素void EnQueue(LinkQueue *Q,int e){QNode *p;p = (QueuePtr)malloc(sizeof(QNode));if(!p) printf("OVERFLOW");p->data = e;p->next = NULL;Q->rear->next = p;Q->rear = p;}●void DeQueue(LinkQueue *Q){ QNode *p;if(Q->front == Q->rear) printf("ERROR");Q->front->next = Q->front->next->next;}●美化形状for(i = 1;i <= n; i++){printf("\n");c=i;for(b=1;b<=n-c;c++){printf(" ");}}●根据上行系数求下行系数for (j=1;j<=i+2;j++){t = q->front->next->data;DeQueue (q);EnQueue (q,s+t);s = t;if (j!=i+2) printf("%3d ",s);}(四)调试分析1.美化形状时,第一次的输出空格的个数和位置考虑的有瑕疵,导致图像歪歪曲曲的。
杨辉三角实验报告
基本操作:
{
InitQueue (&Q) //构造一个空对列
DestroyQueue (& Q) //销毁对列
ClearQueue (& Q) //将S清为空对列
QueueEmpty(Q) //判断是否为空对列,是则返回True
QueueLength(Q) //返回对列的长度
GetHead (Q, &e) //返回队头元素
EnQueue (& Q, e) //插入元素e为新的队尾元素
DeQueue (& Q, &e) //删除队头元素,并用e返回
QueueTraverse(Q, visit()) //对每个元素都调用visit函数,如调用失败,则操作失效
(3)基于数组实现队列的物理数据结构
需求分析:
1、输入形式:输入一个整数n ,0<=n<=20
2、输出形式:打印出来前(n+1)行的杨辉三角数列
3、功能实现:输出前20层的杨辉三角序列
实验内容:
1.采用类c语言定D={ ai | ai∈ElemSet, i=1,2,...,n, n≥0 }
printf(" ");
printf(" 1\n");
q=InitQueue();
EnQueue(q,0);
EnQueue(q,1);EnQueue(q,1);
for(j=1;j<n;j++)
{
for(i=1;i<n-j;i++)
Java表达式求值、杨辉三角实验报告
一.实验目的实现杨辉三角和表达式的封装二.实验软件环境本实验是在MyEclipse 9.01M1编写和运行的三.实验内容(一)实验要求1. 输出杨辉三角前N项,N为参数2. 表达式求值:输入一个表达式,输出它的值,其中要用到java.util.Stack (二)实验代码程序代码:1)杨辉三角:/***功能:用二维数组实现杨辉三角*时间:2011-05-01**/package b1;import java.io.*;public class Pascal{public Pascal(){play();}public void play(){BufferedReader br = new BufferedReader(new InputStreamReader(System.in));System.out.print("请输入n值:");int n = 0;try {n = Integer.parseInt(br.readLine());} catch (NumberFormatException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}int array[][] = new int[n][2*n-1];//判断是否为奇数if( n%2 == 1 ){for(int i=1; i<=n; i++){for(int j=1; j<=2*n-1 ;j++){//首先给前5-i个元素赋值0if(j<=n-i)array[i-1][j-1] = 0;//输出第一个“1”和最后一个“1”else if((j==(n-i+1))||(j==n+i-1))array[i-1][j-1] = 1;else if((j < n+i-1)&&(j > n-i+1)){if((j-i)%2 == 1)array[i-1][j-1] = 0;elsearray[i-1][j-1] = array[i-2][j-2] + array[i-2][j];}}}}//为偶数所进行的操作else{for(int i=1; i<=n; i++){for(int j=1; j<=2*n-1; j++){//首先给前5-i个元素赋值0if(j<=n-i)array[i-1][j-1] = 0;//输出第一个“1”和最后一个“1”else if((j==(n-i+1))||(j==n+i-1))array[i-1][j-1] = 1;else if((j < n+i-1)&&(j > n-i+1)){if((j-i)%2 == 0)array[i-1][j-1] = 0;elsearray[i-1][j-1] = array[i-2][j-2] + array[i-2][j];}}}}/*输出数组*/for(int i=1; i<=n; i++){for(int j=1; j<=2*n-1; j++){if(array[i-1][j-1] == 0){System.out.print(" ");}elseSystem.out.print(array[i-1][j-1]);System.out.print(" ");}System.out.println();}}public static void main(String argc[]){Pascal p = new Pascal();}}2)表达式求值,代码如下:1)Stack类:用来存储表达式子元素的类,代码如下:package btwo;public class Stack {private int maxLen;private int size;private char c[];public Stack(int maxLen) {this.maxLen = maxLen;c = new char[maxLen];size = 0;}public void push(char v){c[size++] = v;}public char pop(){return c[--size];}public boolean isEmpty(){return size == 0;}}2)ExplainPostfix类:实现将输入的表达式转成后缀表达式,代码如下:package btwo; public class ExplainPostfix {String in; String out = "";Stack s;public ExplainPostfix(String in){System.out.println("计算表达式为:"+in);this.in = in;}public void display(){System.out.println("后缀表达式为:"+out);}//转换成后缀表达式public void toPraser(){s = new Stack(in.length());for(int i=0;i<in.length();i++){char c = in.charAt(i);switch(c){case'+':case'-':getOpter(c,1);break;case'*':case'/':getOpter(c,2);break;case'(':s.push(c);break;case')':getParen();break;default:out = out + c;}}while(!s.isEmpty()){out = out + s.pop();}}public void getOpter(char c,int prec1){ out = out + 'a';while(!s.isEmpty()){char optop = s.pop();if(optop == '('){s.push(optop);break;}else{int prec2 = 0;if(optop == '+' || optop== '-'){prec2 = 1;}else{prec2 = 2;}if(prec1>prec2){s.push(optop);break;}else{System.out.println("op:"+optop);out = out + optop;}}}s.push(c);}public void getParen(){while(!s.isEmpty()){char c = s.pop();if(c == '(')break;elseout = out + c;}}public static void main(String[] args) {ExplainPostfix p = newExplainPostfix("(11+2)*5");p.toPraser();p.display();}}3)CalculateExpression类:功能实现将后缀表达式进行计算,代码如下:package btwo;public class CalculateExpression {String in;Stack s; public CalculateExpression(String in) { this.in = in;}public CalculateExpression(){play();}public static void main(String args[]){ExplainPostfix p1 = newExplainPostfix("(21+4)*(1+3*2)");p1.toPraser();p1.display();CalculateExpression p = newCalculateExpression(p1.out);p.doPraser();p.display();}//开始计算后缀表达式public void doPraser(){while(true){int a,b,c,d;a = in.indexOf("+");b = in.indexOf("-");c = in.indexOf("*");d = in.indexOf("/");int n = Math.max(a, b);n = Math.max(n, c);n = Math.max(n, d);if(a != -1){n = a;}if(b<n && b!= -1){n = b;}if(c<n && c!= -1){n = c;}if(d<n && d!= -1){n =d;}if(a == -1 && b == -1 && c == -1 && d == -1){break;}String s1 = charAt(n-1);String s2 =charAt(n-2-s1.length());int v = 0;if(n == a){v = Integer.parseInt(s1) +Integer.parseInt(s2);}else if(n == b){v = Integer.parseInt(s2) -Integer.parseInt(s1);}else if(n == c){v = Integer.parseInt(s2) *Integer.parseInt(s1);}else{v = Integer.parseInt(s2) /Integer.parseInt(s1);}String s = ""+v;if(s.equals("0")){s = "";}else{s = s +"a";}in =in.substring(0,stIndexOf(s2))+v+in.substring(n+1,in.length());}}public void display(){System.out.println("结果为:"+in);}public String charAt(int i){String str = "";char c = in.charAt(i);if(c == '+' || c == '-' || c == '*' || c == '/'){str = str + c;return str;}else{while(c != 'a'){str = c + str ;if(i == 0){break;}c = in.charAt(--i);if(c == '+' || c == '-' || c == '*' || c == '/'){break;}}}return str;}}四.实验的结果及分析1. 杨辉三角结果:2. 算术表达式结果:五.实验心得体会试验后熟悉封装思想,使用基本Java算法。
数据结构实验报告(杨辉三角-约瑟夫环)
数据结构实验报告实验一杨辉三角形(Pascal’s triangle)一、需求分析1.输入的形式和输入值的范围本程序中,需输入的杨辉三角级数level为正整数,由键盘输入,以回车结束2.输出的形式通过屏幕输出杨辉三角3.程序所能达到的功能用户从键盘输入需要的杨辉三角级数,从屏幕输出杨辉三角4.测试数据输入:5输出: 1 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1二、概要设计以链队列结构实现该实验1.抽象数据类型定义ADT Queue {数据对象:D = { ai | ai∈ElemSet , i = 1,2,…,n,n≥0 }数据关系:R1={<ai-1,ai> | ai-1 , ai∈D, i=2,…,n}约定其中ai端为队列头,an端为队列尾基本操作:InitQueue ( &Q )操作结果:构造一个空队列QDestroyQueue ( &Q )初始条件:队列Q已存在操作结果:队列Q被销毁,不再存在ClearQueue ( &Q )初始条件:队列Q已存在操作结果:将Q清为空队列QueueEmpty ( Q )初始条件:队列Q已存在操作结果:若Q为空队列,则返回TRUE,否则FALSEQueueLength ( Q )初始条件:队列Q已存在操作结果:返回Q的元素个数,即队列长度GetHead ( Q , &e )初始条件:Q为非空队列操作结果:用e返回Q的队头元素EnQueue ( &Q , e )初始条件:队列Q已存在操作结果:插入元素e为Q的新队尾元素DeQueue ( &Q , &e )初始条件:Q为非空队列操作结果:删除Q的队头元素,并用e返回其值QueueTraverse ( Q , visit( ) )初始条件:Q已存在且非空操作结果:从队头到队尾,依次对Q的每个数据元素调用函数visit( )。
数据结构杨辉三角实验报告(c语言)
杨辉三角问题描述编写程序,根据输入的行数,屏幕显示杨辉三角。
基本要求(1)行数不大于20行。
(2)基于队列的操作来实现杨辉三角的不断生成过程。
(注:不要用其它的公式计算的方法或者二维数组来实现)(3)基于数组实现队列的物理数据结构。
输入输出输入n= 6输出1 n=01 1 n=11 2 1 n=21 3 3 1 n=31 4 6 4 1 n=41 5 10 10 5 1 n=51 6 15 20 15 6 1 n=6概要设计:基本操作:SeqQueue()操作结果:构造一个空队列QmakeEmpty()初始条件:队列Q已存在操作结果:将Q清为空队列IsEmpty()初始条件:队列Q已存在操作结果:若Q为空队列,则返回TRUE,否则FALSE getSize()初始条件:队列Q已存在操作结果:返回Q的元素个数,即队列长度EnQueue(const T& x)初始条件:队列Q已存在操作结果:若队列不满,则将x进队,否则一处处理DeQueue(T& x);初始条件:Q为非空队列操作结果:删除Q的队头元素,并用x返回其值具体程序#include "stdlib.h"#include "stdio.h"#define OK 1#define error 0#define maxsize 100typedef int Qelemtype;typedef int status;typedef struct{Qelemtype *base;int f;int r;}Squeue;status InitQueue(Squeue & Q){Q.base=(Qelemtype*)malloc(maxsize*sizeof(Qelemtype));Q.base=new(Qelemtype);if(!Q.base)return error;Q.f=Q.r=0;return OK;}int Queuelength(Squeue & Q){return (Q.r-Q.f+maxsize)%maxsize;}status EnQueue(Squeue & Q,Qelemtype e){if((Q.r+1)%maxsize==Q.f){printf("队列已满\n");return error;}Q.base[Q.r]=e;Q.r=(Q.r+1)%maxsize;return OK;}status DeQueue(Squeue & Q,Qelemtype &e){if(Q.f==Q.r){printf("队列已空\n");return error;}e=Q.base[Q.f];Q.f=(Q.f+1)%maxsize;return OK;}void YangHui(int n){Squeue q; //建立队列对象int i=1,j,s=0,t,u; //计算下一行系数时用到的工作单元InitQueue(q);printf("\n 1");EnQueue(q,1);EnQueue(q,1); //预先放入第一行的两个系数for(i=1;i<=n;i++) //逐行处理{printf("\n"); //换一行EnQueue(q,0); //各行间插入一个for(j=1;j<=i+2;j++) //处理第i行的i+2个系数(包括一个){DeQueue(q,t); //读取一个系数u=s+t;EnQueue(q,u); //计算下一行系数,并进队列s=t;if(j!=i+2)printf("%3d",s); //打印一个系数,第i+2个是}}}void main() //主函数{int n;printf("输入n=");scanf("%d",&n);printf("输出:");YangHui (n);printf("\n");system("pause");}运行结果:算法的时空分析时间复杂度为O(N)输入输出格式输入:直接输入想要行数n输出:如果输入小于条件给予的20,则显示如题所要求的杨辉三角。
杨辉三角形研究报告四年级
杨辉三角形研究报告四年级杨辉三角形研究报告一、引言杨辉三角形是中国古代数学家杨辉在13世纪发现和研究的,它具有独特的特点和规律性质。
本报告将介绍杨辉三角形的生成方式、特点以及一些有趣的性质。
二、生成方式杨辉三角形是通过以下方式生成的:1. 第一行只有一个数1;2. 第二行有两个数1;3. 从第三行开始,每一行的行数与列数的数值都为1,其余的数值等于它上面两个数的和。
例如,以下是一个杨辉三角形的示例:```11 11 2 11 3 3 11 4 6 4 1```三、特点和性质1. 对称性:杨辉三角形是对称的,中心轴是竖直的。
即:第n 行的第m个数等于第n行的第n-m+1个数。
2. 二项展开:杨辉三角形的每一行的数值可以用于展开二项式的系数。
例如,(a+b)的n次方展开后,各项的系数就是第n行的数值。
3. 数字规律:杨辉三角形中的数值有许多有趣的规律。
例如,每一行的数值相加得到的和都是2的n次方;每一行的奇数位上的数值都是C(n, k)的结果,其中n是行数,k是从左到右计数的位置。
4. 斐波那契数列:杨辉三角形中的对角线上的数值形成了著名的斐波那契数列。
四、应用1. 组合数学:杨辉三角形可以用于计算组合数C(n, k)的结果,其中n是行数,k是从左到右计数的位置。
2. 概率论:杨辉三角形可以应用于概率论中的二项分布。
3. 编程中的应用:杨辉三角形可以通过编程语言来生成和使用,用于解决一些特定的问题。
五、结论杨辉三角形是一种有趣且有用的数学模型,它具有许多特点和规律。
它不仅可以用于计算组合数和展开二项式,而且还可以应用于概率理论和编程中。
通过研究和理解杨辉三角形,我们可以提高数学思维能力,并拓展数学的应用领域。
输出杨辉三角形设计报告(1)资料
首先定义一个二维数组,长度为21,21,。接着定义三个变量i,j,n。然后输出提示字符,提示输入杨辉三角行数。将每一行第一个数字和最后一个数字的初始化置于双重for循环中,减少一个循环,并计算每一行中间的各个数字。最后用双重for循环输出每一个素质并且换行。
三、详细设计(1)
主要功能模块 1 源程序
1、要熟练掌握相关的C语言知识。
2、要熟练掌握杨辉三角的基本规律。
1杨辉三角第n行中的n个数之和等于2的n-1次幂。
2每个数字都等于它上方的两数之和。
3每行数字左右对称,由1开始逐渐变大。
4第n行的数字有n+1项。
5(a+b)的n次幂的展开式中各项系数依次对应杨辉三角第n+1行中的每一项。并由二项式系数规律推出公式:k=k*(i-j)/j。
开发环境
本程序采用Microsoft Visual C++ 6.0的英文版本进行编译。Visual C++是微软公司推出的基于Windows操作系统的可视化C++编程工具。
二、总体设计(1)
系统功能需求分析
此系统的主要功能是用四种不同的方法输出杨辉三角的前n(1<n<20)行。要实现目标就要完成以下步骤:
1、函数的定义出现错误,遗漏函数的声明。
2、定义精度出现问题。
3、大括号上下括号对应出错,下括号掉了,导致程序无法运行。
4、C语言书写错误,掉了字母或写错字母。
5、C语言知识不熟练,无法使用多种方法输出杨辉三角形。
6、一位数组中的变量出现错误,导致程序崩溃。
问题的解决方法
1、补充函数的声明。
2、重新定义精度。
int i,j,n;
显示杨辉三角实验报告
显示杨辉三角实验报告姓名:许严班级:计122 学号:12130230501.问题描述杨辉三角如图2.4.3所示,其特点是两个腰上数值是1,其他位置上的每一个整数都是它的上一行相邻两个整数之和。
问题是:对于指定的最大行数rmax,要求从第一行到第rmax逐行显示杨辉三角形的所有元素。
2.基本要求⑴设计输出形式,尽量反映杨辉三角的特点。
⑵设计计算杨辉三角形各行数值的方法。
⑶输入:rmax从键盘输入。
⑷输出:屏幕输出杨辉三角形.3.实现提示⑴存储设计计算杨辉三角形第i行时,如果在第i-1行两侧各添加一个0,则第i行的第j 个元素等于第i-1行的第j-1个元素与第j个元素的和。
计算如图2.4.4所示。
第i 行计算完,第i-1行的数据就没有用了,依据第i行数据可计算第i+1行的数据。
11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1…图2.4.3 杨辉三角形从上述计算中不难看出,第i行的元素从左往右依次可被求得,求解过程中也是从左往右依次使用地i-1行的数据,显然,具有先入先出的特点。
所以,可借助一个队列存放计算过程中所需的数据,如图2.4.5所示。
但随着航数的增加,队列会很长。
所以,可以设置一循环队列,队长不少于rmax+2,边计算边出队。
(2)算法设计计算各行元素的算法步骤如下。
Step1:队列初始化,0、1入队。
队头ftont指向0处,队尾指向1后。
Step2:i从1到rmax,循环执行下列操作,求第i行数据。
2.1 0入队。
2.2 从队首起直到队尾,每出队两元素,求和后入队。
输出时注意0不输出。
(3)程序设计#include <iostream>using namespace std;#include <iomanip>int Fd(int x, int y){int t = 1;int k = 1;for(int i = y; i > x ; i--){t = t * i;t = t / k;k++;}return t;}int main(){int nsize;cout<<"请输入大小"<<endl;cout<<"提示:按Ctrl+Z两次退出!"<<endl;while(cin>>nsize){for(int i = 0; i <= nsize; i++){for(int k = 0 ; k <= nsize; k++){if(k > i){cout<<" ";}}for(int j = 0 ; j <= i; j++){cout<<setw(3)<<Fd(j,i)<<" ";}cout<<endl;}cout<<"请输入大小"<<endl;}return 0;}4.测试与运行给出行数,从运行结果验证程序设计是否正确。
杨辉三角实验报告
C 语言程序设计实验报告1 实验目的1. 练习循环结构for 、while 、do-while 语句的使用。
2. 练习转移语句和标号语句的使用。
3. 使用集成开发环境中的调试功能:单步执行、设置断点、观察变量值。
2 实验内容打印如下杨辉三角形。
1 /*第0行 */ 1 1 /*第1行 */ 12 1 /*第2行 */ 13 3 1 14 6 4 1 15 10 10 5 1 16 15 20 15 6 1 17 21 35 35 21 7 1 18 28 56 70 56 28 8 1 19 36 84 126 126 84 36 9 1每个数据值可以由组合j i C 计算(表示第i 行第j 列位置的值),而j i C 的计算如下:10=i C (i=0,1,2,…)j / 1)j -(i *1+=-j i j i C C (j=0,1,2,3, (i)本程序中为了打印出金字塔效果,要注意空格的数目。
一位数之间是3个空格,两位数之间有2个空格,3位数之间只有一个空格,程序编制过程中要注意区分。
3算法描述流程图4源程序#include<stdio.h>void main(){int a,c=0,n,i,j=0,l=1,sj=1,si=1,sn=1,cn=1;scanf("%d",&n);if(n>12)printf("fault\n");else{for(a=0;c<=n;a++,c++){for(;j<=2*(n-a);j++)putchar(32);for(i=0;i<=c;i++){j=c-i;for(l=1,sj=1;l<=j;l++)sj=sj*l;for(l=1,si=1;l<=i;l++)si*=l;for(l=1,cn=1;l<=c;l++)cn=cn*l;sn=cn/sj/si;if(sn<10)printf(" %d",sn);else{if(sn<100)printf(" %d",sn);elseprintf(" %d",sn);}}printf("\n");}}}5测试数据测试数据为9,106运行结果7出现问题及解决方法(1)在试验中若为for(;j<=n-a;j++)putchar(32);则打不出杨辉三角效果,(2)如果程序中写入2(n-a)是错误的应写为2*(n-a)VC才能识别8实验心得通过该实验,我对循环结构(for,while,do```while)的几种用法更加熟练,并掌握了如何使得打出数据俺自己想要的结果分布并对C程序设计有了总体的认识。
