第三章 程序设计基础
- 格式:doc
- 大小:63.50 KB
- 文档页数:11
实验10import java.util.*;public class shiyan10{public static void main(String[] args){int a=0,b=0,c=0,max=0;Scanner reader=new Scanner(System.in);System.out.println("从键盘输入第一个整数");a=reader.nextInt();System.out.println("从键盘输入第二个整数");b=reader.nextInt();System.out.println("从键盘输入第三个整数");c=reader.nextInt();if(a>b)max=a;elsemax=b;if(c>max)max=c;System.out.println("最大的数是"+max);}}//在程序中输入三个整数,比较它们的大小,输出最大的数实验11public class shiyan11{public static void main(String[] args){int s=0;for(int i=0;i<100;i++){s=s+i;i++;}System.out.println("1+3+5+···+99="+s);}}//用for循环语句求1+3+5+···+99的值实验12import java.util.*;public class shiyan12{public static void main(String[] args){int a=0,i=1,s=0;Scanner reader=new Scanner(System.in);while(a<50||a>100){System.out.println("从键盘输入一个50~100的整数");a=reader.nextInt();}System.out.println("你输入的数是"+a);while(i<=a){s=s+i;i++;}System.out.println("1+2+3+···+"+a+"="+s);}}//编写从键盘输入一个范围在50~100的整数,如果不正确,则继续输入;然后求1到输入整数的累加实验13public class shiyan13{public static void main(String[]args){int i=100,s=0;do{s=s+i;i--;}while(i>0);System.out.println("100+99+98+···+2+1="+s);}}//用do-while语句求100+99+···+2+1的值实验14import java.util.*;public class shiyan14{public static void main(String[] args)int a=-1;Scanner reader=new Scanner(System.in);System.out.println("从键盘输入0~6的整数");a=reader.nextInt();while(a<0||a>6){System.out.println("输入错误");System.out.println("从键盘输入0~6的整数");a=reader.nextInt();}switch(a){case 0:System.out.println("今天是星期日");break;case 1:System.out.println("今天是星期一");break;case 2:System.out.println("今天是星期二");break;case 3:System.out.println("今天是星期三");break;case 4:System.out.println("今天是星期四");break;case 5:System.out.println("今天是星期五");break;case 6:System.out.println("今天是星期六");break;default:System.out.println("输入错误");break;}}}//让用户通过输入一个0~6的整数,显示今天是xingqijipublic class shiyan15{public static void main(String[] args){for(int i=1;i<10;i++){if(i==6)break;System.out.println(""+i);}System.out.println("\n显示完毕");for(int i=1;i<10;i++){if(i%2==0)continue;System.out.println(""+i);}System.out.println("\n显示完毕");}}//先显示1~5各个整数,然后再显示1~10的各个奇数。
第三章顺序结构程序设计3.1 基本要求z掌握C语言中使用最多的一种语句——赋值语句的使用方法。
z掌握各种类型数据的输入输出的方法,并能正确使用各种格式转换符。
z掌握文件包含预处理命令#include。
3.2 内容小结本章主要介绍了一些为编写简单程序所必须的语句及基本的输入输出方法。
它们是C语言中5类基本语句:控制语句、函数调用语句、表达式语句、空语句和复合语句。
格式输入输出函数scanf( )和printf( ):在C语言中没有专用的输入输出语句,但可通过调用输入输出函数及C系统提供的9种格式字符,进行各种类型数据、各种格式的输入输出。
单个字符的输入输出函数getchar( )和putchar( )。
文件的包含:函数是C程序的构成单元,C程序中的函数调用可分为两类,本源程序中函数的调用和非本源程序中函数的调用,如是后者需用#include 文件包含预处理命令把该函数所在的源文件包含到本源文件中来。
3.3 典型例题分析z例题1 printf( )函数的功能main( ){ int a , b;a=10;b=25;printf(“a=%d b=%d\n”,a,b);printf(“a+b=%d\na-b=%d\n”,a+b,a-b);}运行结果:a=10 b=2529a+b=35a-b=-15从上例中可以看出,转换说明符不仅规定了输出格式,而且也决定了输出项在整个输出信息中的位置。
此外,从上例也可以看出,输出项还可以是运算表达式,这时输出的是它的运算结果值。
z例题2 scanf( )函数的功能main( ){ int x, y;printf(“Enter integer x:”);scanf(“%d”,&x);printf(“Enter integer y:”);scanf(“%d”,&y);printf(“x+y=%d\n”,x+y);printf(“x-y=%d\n”,x-y);}该程序是以人机对话方式给变量x和y赋值,它的某次运行情况如下所示:Enter integer x:16〈CR〉Enter integer y:25〈CR〉x+y=41x- y=-9其中划有下横线的部分是从键盘打入的字符,其中〈CR〉表示回车键。
第三章Java程序设计基础3.1 Java编程概况现在你可以复习一下Java语言的背景材料,它的基本结构象C/C++,但任何用面向过程语言编写过程序的人都可以了解Java语言的大部分结构.3.1.1程序结构Java语言的源程序代码由一个或多个编译单元(compilation unit)组成,每个编译单元只能包含下列内容(空格和注释除外):*一个程序包语句(package statement )*入口语句(import statements) *类的声明(class declarations)*界面声明(interface declarations) 每个Java的编译单元可包含多个类或界面,但是每个编译单元最多只能有一个类或者界面是公共的。
Java的源程序代码被编译?reg;后,便产生了Java字节代码。
Java的字节代码由一?copy;不依赖于机器的指令组成,这?copy;指令能被Java的运行系统(runtimesystem)有效地解释。
Java的运行系统工作起来如同一台虚拟机。
在当前的Java实现中,每个编译单元就是一个以.java为后缀的文件。
每个编译单元有若干个类,编译后,每个类生成一个.class文件。
.class文件是Java虚拟机能够识别的代码。
3.1.2 注释三种类型如下://注释一行/*一行或多行注释*//**文档注释**/文档注释一般放在一个变量或函数定义?reg;前,指示在任何自动生成文档系统中调入。
这?copy;注释都是声明条目的描述.。
3.1.3 标识符变量,函数,类和对象的名称都是标识符,程序员需要标识和使用的东西都需要标识符。
在Java语言里,标识符以字符或_,$开头,后面可以包含数字,标识符是大小写有区别的,没有长度限制。
有效的标识符 myname ict_network Hello _sys_path $bill例子:int a_number; char _onechar; float $bill;关键词 abstract continue for new switch boolean default goto null synchronized break do if package this byte double implements private threadsafe byvalue else import protected throw case extends instanceof public transient catch false int return true char final interface shorttry class finally long static void const float native super while 其它保留词以下单词被保留使用:cast future generic inner operator outer rest var3.1.4 数据类型Java使用五种基本类型:integer(整数),floating(浮点数),point(指针),Boolean(布尔变量),Character or String(字符或字符串)。
《计算机应用基础》教材目录《计算机应用基础》教材目录:第一章:计算机基本概念和组成1.1 计算机的定义和分类1.2 计算机硬件的组成和功能1.3 计算机软件的分类和作用1.4 计算机网络的基本概念第二章:操作系统基础2.1 操作系统的定义和作用2.2 常见操作系统的特点和应用领域2.3 操作系统的组成和层次结构2.4 操作系统的进程管理和内存管理第三章:程序设计基础3.1 程序设计的基本概念和流程3.2 程序设计的算法和数据结构3.3 常见的程序设计语言和开发工具3.4 程序调试和测试的方法和技巧第四章:数据库基础4.1 数据库的基本概念和特点4.2 常见数据库管理系统和数据库模型4.3 数据库的设计和规范化4.4 数据库的查询和操作语言第五章:网络基础5.1 网络的定义和分类5.2 网络通信基础和协议5.3 局域网和广域网的组网技术5.4 网络安全和管理的基本方法第六章:多媒体技术基础6.1 多媒体技术的基本概念和组成部分6.2 图像和音频的处理和压缩技术6.3 视频和动画的制作和编辑技术6.4 多媒体应用和发展趋势的介绍第七章:计算机维护和故障排除7.1 计算机硬件的维护和保养7.2 计算机故障的常见问题和排除方法7.3 系统软件的安装和更新7.4 综合案例分析和实际操作演练附件:本文档中涉及的附件包括示例代码、案例数据和相关参考资料。
法律名词及注释:1、版权:指对原创作品的独立使用权。
2、知识产权:指人们的智力劳动成果所享有的权益。
3、元数据:指描述数据的数据,用于数据的组织和管理。
4、隐私保护:指对个人信息的保密和合法使用的措施和规范。
《程序设计基础》电子教案第一章:计算机程序设计概述1.1 教学目标了解计算机程序设计的概念和意义掌握程序设计的基本原则和步骤理解编程语言的分类和特点1.2 教学内容计算机程序设计的定义和作用程序设计的基本原则和步骤(分析、设计、编码、测试、维护)常见编程语言的分类和特点(例如:高级语言、低级语言、脚本语言)1.3 教学方法讲授法:讲解程序设计的概念和原理案例分析法:分析典型程序设计案例互动教学法:引导学生提问和讨论1.4 教学评价课堂问答:检查学生对程序设计概念的理解课后作业:编写简单的程序,巩固所学知识第二章:C语言基础2.1 教学目标掌握C语言的基本语法和数据类型学会使用C语言进行程序设计理解C语言的特点和优势2.2 教学内容C语言的基本语法和规则(例如:变量、常量、运算符、表达式)C语言的数据类型(整型、浮点型、字符型、布尔型)C语言的控制语句(顺序、选择、循环)2.3 教学方法讲授法:讲解C语言的基本语法和规则编程实践法:让学生动手编写C语言程序案例分析法:分析典型C语言程序案例2.4 教学评价课堂问答:检查学生对C语言基础知识的掌握课后作业:编写C语言程序,巩固所学知识第三章:算法和逻辑结构3.1 教学目标理解算法的基本概念和特点掌握常用的算法设计和分析方法学会使用逻辑结构表示算法3.2 教学内容算法的定义和特点(精确性、有穷性、可行性)算法设计方法(列举法、递推法、分治法、动态规划法)逻辑结构表示算法(顺序结构、选择结构、循环结构)3.3 教学方法讲授法:讲解算法的基本概念和特点案例分析法:分析典型算法案例编程实践法:让学生动手实现算法3.4 教学评价课堂问答:检查学生对算法概念的理解课后作业:实现简单的算法,巩固所学知识第四章:数据结构基础4.1 教学目标理解数据结构的概念和重要性掌握常用的数据结构及其应用学会使用编程语言实现基本数据结构4.2 教学内容数据结构的定义和分类(线性结构、非线性结构)线性表(顺序表、链表)栈和队列(栈的定义和应用、队列的定义和应用)树和图(树的基本概念、图的基本概念)4.3 教学方法讲授法:讲解数据结构的基本概念和原理编程实践法:让学生动手实现基本数据结构案例分析法:分析典型数据结构应用案例4.4 教学评价课堂问答:检查学生对数据结构概念的理解课后作业:实现基本数据结构,巩固所学知识第五章:C语言高级编程5.1 教学目标掌握C语言的高级编程技术学会使用函数、指针和数组理解C语言的面向对象编程思想5.2 教学内容函数的定义和声明(函数的参数、返回值)指针的基本概念和应用(指针的声明、指针的运算、指针数组)数组的基本概念和应用(一维数组、多维数组)面向对象编程(类、对象、封装、继承、多态)5.3 教学方法讲授法:讲解C语言高级编程技术的基本概念编程实践法:让学生动手实现高级编程技术案例分析法:分析典型高级编程技术应用案例5.4 教学评价课堂问答:检查学生对C语言高级编程技术的理解课后作业:实现高级编程技术,巩固所学知识第六章:软件开发方法和工具6.1 教学目标理解软件开发过程和原则掌握常用的软件开发方法和工具学会使用版本控制系统6.2 教学内容软件开发过程(需求分析、设计、编码、测试、维护)软件开发方法(面向过程、面向对象、敏捷开发)常用的软件开发工具(集成开发环境、版本控制系统、调试工具)6.3 教学方法讲授法:讲解软件开发过程和原则案例分析法:分析典型软件开发案例实践操作法:让学生动手使用开发工具6.4 教学评价课堂问答:检查学生对软件开发方法的理解课后作业:使用开发工具完成小项目,巩固所学知识第七章:项目管理和团队协作7.1 教学目标理解项目管理的基本概念和方法掌握项目计划的制定和执行学会团队协作和沟通技巧7.2 教学内容项目管理的基本概念和方法(项目生命周期、工作分解结构、甘特图)项目计划的制定和执行(任务分配、时间管理、资源调度)团队协作和沟通技巧(团队建设、冲突解决、会议管理)7.3 教学方法讲授法:讲解项目管理的基本概念和方法角色扮演法:模拟项目管理和团队协作场景小组讨论法:让学生分组讨论和实践团队协作7.4 教学评价课堂问答:检查学生对项目管理概念的理解小组项目:评估学生在项目管理和团队协作中的表现第八章:数据库基础8.1 教学目标理解数据库的基本概念和原理掌握关系型数据库的设计和操作学会使用SQL语言进行数据查询和管理8.2 教学内容数据库的基本概念和原理(数据模型、关系型数据库、数据库管理系统)关系型数据库的设计(表的设计、索引的使用)SQL语言的基本操作(数据查询、数据更新、数据删除、数据完整性约束)8.3 教学方法讲授法:讲解数据库的基本概念和原理编程实践法:让学生动手使用SQL语言进行数据操作案例分析法:分析典型数据库应用案例8.4 教学评价课堂问答:检查学生对数据库概念的理解课后作业:使用SQL语言完成数据操作,巩固所学知识第九章:网络安全基础9.1 教学目标理解网络安全的重要性和挑战掌握常用的网络安全技术和策略学会分析和防范网络安全风险9.2 教学内容网络安全的基本概念和威胁(信息加密、认证、篡改、泄露)常用的网络安全技术(防火墙、入侵检测系统、VPN、加密算法)网络安全策略和最佳实践(访问控制、安全审计、漏洞管理)9.3 教学方法讲授法:讲解网络安全的基本概念和技术案例分析法:分析网络安全事件和案例实践操作法:让学生动手配置网络安全设备9.4 教学评价课堂问答:检查学生对网络安全概念的理解实验报告:评估学生在网络安全实践中的表现第十章:软件测试和维护10.1 教学目标理解软件测试的目的和重要性掌握常用的软件测试方法和技巧学会软件维护和升级策略10.2 教学内容软件测试的基本概念和目标(验证和验证、静态测试、动态测试)常用的软件测试方法和技巧(黑盒测试、白盒测试、灰盒测试、自动化测试)软件维护和升级策略(修改策略、版本控制、兼容性测试)10.3 教学方法讲授法:讲解软件测试的基本概念和方法案例分析法:分析典型软件测试案例实践操作法:让学生动手进行软件测试10.4 教学评价课堂问答:检查学生对软件测试概念的理解课后作业:完成软件测试实践,巩固所学知识重点和难点解析重点环节1:程序设计的基本原则和步骤补充说明:程序设计原则如模块化、抽象化、逐步求精等,是提高程序质量的关键。
第三章S7-1200 PLC程序设计基础1、PLC一个扫描过程周期分为哪几个阶段?参考答案:PLC的一个扫描过程周期可分为输入采样、程序执行、输出刷新三个阶段。
2、请说明PLC的工作原理。
参考答案:PLC采用循环执行用户程序的方式,称为循环扫描工作方式,其运行模式下的扫描过程如图3-2所示。
可以看出:当PLC上电或者从停止模式转为运行模式时,CPU执行启动操作,消除没有保持功能的位存储器、定时器和计数器,清除中断堆栈和块堆栈的内容,复位保存的硬件中断等;此外还要执行用户可以编写程序的启动组织块,即启动程序,完成用户设定的初始化操作;然后,进入周期性循环运行。
一个循环扫描过程周期可分为输入采样、程序执行、输出刷新三个阶段。
(1)输入采样阶段此阶段PLC依次读入所有输入信号的状态和数据,并将它们存入I/O映像区中的相应单元内。
输入采样结束后,转入用户程序执行和输出刷新阶段。
在这两个阶段中,即使输入状态和数据发生变化,I/O映像区中的相应单元的状态和数据也不会改变。
因此,如果输入是脉冲信号,则该脉冲信号的宽度必须大于一个扫描周期,才能保证在任何情况下,该输入均能被读入。
(2)程序执行阶段PLC按照从左到右,从上至下的顺序对用户程序进行扫描,并分别从输入映像区和输出映像区中获得所需的数据进行运算、处理,再将程序执行的结果写入寄存执行结果的输出映像区中保存。
这个结果在程序执行期间可能发生变化,但在整个程序未执行完毕之前不会送到输出端口。
(3)输出刷新阶段在执行完用户所有程序后,PLC将输出映像区中的内容送到寄存输出状态的输出锁存器中,这一过程称为输出刷新。
输出电路要把输出锁存器的信息传送给输出点,再去驱动实际设备。
图3-2 PLC 循环扫描工作过程由上可以看出PLC 的工作特点如下:所有输入信号在程序处理前统一读入,并在程序处理过程中不再变化,而程序处理的结果也是在扫描周期的最后时段统一输出,将一个连续的过程分解成若干静止的状态,便于面向对象的思维。
3.1编程序:用getchar函数读入两个字符给c1,c2,然后分别用putchar和printf函数输出这两个字符。
并思考以下问题:(1)变量c1,c2应定义为字符型或整型?或两者皆可?(2)要求输出C1和C2值的ASCII 码,应如何处理?用putchar函数还是printf函数?(3)整型变量与字符型变量是否在任何情况下都可以互相替代?1、#include<stdio.h>main(){char c1,c2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);p rintf(“\n”);p rintf(“%c,%c\n”,c1,c2);}运行结果:请输入两个字符C1,C2:AB用putchar语句输出结果为:AB用printf语句输出结果为:A,B回答思考问题:C1和C2定义为字符型。
在printf函数中用%d格式符输出。
即:printf(“%d,%d\n”,C1,C2);字符变量在计算机内占一个字节,而整型变量占两个字节,因此整型变量在可输出字符的范围内(ASCII 码为0-255之间的字符)是可以与字符数据互相转换的。
如果整数在此范围外,则不能代替。
3.2#include "stdio.h"main(){int hh,mm,ss;int result;printf("input the time(hh:ss:mm):");scanf("%d:%d:%d",&hh,&mm,&ss);result=hh*3600+mm*60+ss;printf("%d",result);}3.3设某职工应发工资x元,试求各种票额钞票总张数最少的付款方案。
分析:可以从最大的票额(100元)开始,算出所需的张数,然后在剩下的部分算出较小票额的张数,直到最小票额(1元)。
解法一:#include "stdio.h"main(){int x,y;scanf("%d",&x); /* x为实发工资数*/y=x/100;printf("百元:%d\n",y); /*求百元票张数并显示*/x=x-100 * y; /*求剩余款项*/y=x/50; /*求五十元票张数并显示*/printf("五十元:%d\n",y);x=x-50 * y; /*求剩余款项*/y=x/20; /*求二十元票张数并显示*/printf("二十元:%d\n",y);x=x-20 * y; /*求剩余款项*/y=x/10;printf("十元:%d\n",y);x=x-10 * y; /*求剩余款项*/y=x/5;printf("五元:%d\n",y);x=x-5*y; /*求剩余款项*/y=x/2 ; /*求二元票张数并显示*/printf("二元:%d\n",y);x=x-2*y; /*求剩余款项*/y=x; /*求一元票张数并显示*/printf("一元:%d\n",y);}解法二:#include "stdio.h"main(){int x,y;scanf("%d",&x); /* x为实发工资数*/y=x/100; /*求百元票张数并显示*/ printf("百元:%d\n",y);y=x%100/50; /*求五十元票张数并显示*/ printf("五十元:%d\n",y);y=x%50/20; /*求二十元票张数并显示*/ printf("二十元:%d\n",y);y=x%50%20/10; /*求十元票张数并显示*/ printf("十元:%d\n",y);y=x%10/5; /*求五元票张数并显示*/printf("五元:%d\n",y);y=x%5/2; /*求二元票张数并显示*/printf("二元:%d\n",y);y=x%5%2; /*求一元票张数并显示*/ printf("一元:%d\n",y);}3.6解法一:#include"stdio.h"main(){int i=0;long a=1;scanf("%ld",&a);if(a==0) i=1;while(a!=0){a/=10;i++;}printf("%d\n",i);}解法二:#include "stdio.h"main(){int n1,n2,flag=0;scanf("%d",&n2);if(n2==0) flag=1;while(n2!=0){n1=n2%10;n2=n2/10;printf("%d",n1);flag++;}printf("\nwei shu shi:%d",flag);}3.7#include "stdio.h"main(){float p, w;printf("input w(kg):");scanf("%f",&w);if (w <= 50)p = w * 0.25;else if (w <= 100)p = 50 * 0.25 + (w - 50) * 0.35;else p = 50 * 0.25 + 50 * 0.35 + (w - 100) * 0.45;printf("fei yong shi %.3f:",p);}3.8思路:数字字符的ASCII值与此数值的关系。
若设该一位十进制数为a,则数字字符a的ASCII等于48+a。
#include "stdio.h"main(){int a,i;for(i=48;i<=57;i++){printf("%c\n",i);}}3.9#include "stdio.h"main(){int n1,n2,n3,n4,min;scanf("%d%d%d%d",&n1,&n2,&n3,&n4);min=n1;if(n2<min) min=n2;if(n3<min) min=n3;if(n4<min) min=n4;printf("small is:%d",min);}3.10/*判断已经过去的月份天数和当月的天数就可以了*/#include "stdio.h"main(){int year, month, day;int i;int totaldays = 0;/*初始化年,月,日*/int daysofmonth[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; printf("input year,month,day:");scanf("%d%d%d",&year,&month,&day);/*计算今年是否是闰年*/if ((year % 100 != 0 && year % 4 == 0 ) || year % 400 == 0){/*如果是闰年,则二月为29天*/daysofmonth[2] = 29;}/*将每月的天数相加*/for (i = 1; i < month; i++ ){totaldays += daysofmonth[i];}/*再加上本月的天数*/totaldays += day;printf("the day is:%d",totaldays); /*输出所在的天数*/}3.12解法一:/* 计算1!+2!+……+10! */#define N 10#include"stdio.h"main(){int i;long n=1,sum=0;for(i=1;i<=N;i++){n*=i;sum+=n;}printf("%ld\n",sum);}解法二:#include "stdio.h"main(){int i,j;long fac,sum=0;for(i=1;i<=10;i++){{fac=1;for(j=1;j<=i;j++)fac=fac*j;} /*计算阶成*/sum=sum+fac; /*计算阶成之和*/}printf("%ld",sum);}3.13#include "stdio.h"main(){int a,n,i,j,temp;long int sum=0;printf("input a,n :");scanf("%d%d",&a,&n);for(i=1;i<=n;i++){{ /*用于计算a的n次方*/temp=1;for(j=1;j<=i;j++)temp=temp*a;}sum=sum+temp; /*用于计算总和*/ }printf("result is :%ld",sum);}3.14参考答案1:#include <stdio.h>main(){float term, result = 1;int n;for (n = 2; n <= 100; n = n + 2){term = (float)( n * n)/(( n - 1) * ( n + 1));result = result * term;}printf("result = %f\n", 2*result);}参考答案2:#include <stdio.h>main(){float result = 1,term;int n;for (n = 1; n <= 50; n++){term = (float)(2*n*2*n)/((2*n-1)*(2*n+1));result = result * term;}printf("result = %f\n", 2*result);}3.15解法一:#include"stdio.h"#include "math.h"main(){long t=1;int i,n=1;float e=1;clrscr();while(1.0/fabs(t)>=1e-5) //判断条件{t=1; //初始化阶乘变量for(i=1;i<=n;i++) //计算阶乘t=t*i;e=e+1.0/t;n++; //为计算下一个阶乘做处理}printf("e=%f\n",e);}解法二:#include "stdio.h"#include "math.h"/*自定义函数,计算n! */long fact(int n){int i;long y=1;for(i=1;i<=n;i++)y*=i;return y;}main(){float e=1.0,t=1.0;int n=1,count=0;while(fabs(t)>=1e-5){e=e+t;n=n+1;t=1.0/fact(n);count++; /*计数*/}printf("e=%f\n",e);printf("counter:%d",count); }3.16#include "stdio.h"#include "math.h"/*定义求平方根函数*/float fsqrt(float a){ float x0, x1;x1=a/2;do{x0=x1;x1=0.5*(x0+a/x0);}while(fabs(x1-x0)>0.00001); return(x1);}/*主函数*/main(){ float a;scanf("%f", &a);printf("gen hao =%f\n", fsqrt(a)); }3.17 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。