chap 2用c语言编写程序(65)

收藏

编号:217140133    类型:共享资源    大小:189KB    格式:PPT    上传时间:2023-06-11
13
积分
关 键 词:
chap 2用c语言编写程序65 语言 编写 程序 65
资源描述:
Chap 2 用用C语言编写程序语言编写程序 2.1 在屏幕上显示在屏幕上显示 Hello World!2.2 求华氏温度求华氏温度 100F 对应的摄氏温度对应的摄氏温度2.3 计算分段函数计算分段函数2.4 输出华氏输出华氏摄氏温度转换表摄氏温度转换表2.5 生成乘方表与阶乘表生成乘方表与阶乘表 本章要点本章要点n怎样编写程序,在屏幕上显示一些信息?怎样编写程序,在屏幕上显示一些信息?n怎样编写程序,实现简单的数据处理,例如怎样编写程序,实现简单的数据处理,例如将华氏温度转换为摄氏温度?将华氏温度转换为摄氏温度?n怎样使用怎样使用 if 语句计算分段函数?语句计算分段函数?n怎样用怎样用 for 语句求语句求 1+2+100?n如何定义和调用函数生成一张乘方表?如何定义和调用函数生成一张乘方表?2.1 在屏幕上显示在屏幕上显示Hello World!【例例2-1】在屏幕上显示一个短句在屏幕上显示一个短句:Hello World!2.1 在屏幕上显示在屏幕上显示Hello World!/*显示显示“Hello World!*/#include int main(void)printf(Hello World!n);return 0;1.任何程序都有主函数任何程序都有主函数2.程序由假设干语句组程序由假设干语句组成成3.语句用分号语句用分号;结束;结束注释文本注释文本定义主函数定义主函数main()分号表示语句结束分号表示语句结束换行符换行符输出函数输出函数编译预处理命令编译预处理命令函数体函数体原样原样输出字符输出字符2.1 在屏幕上显示一些信息在屏幕上显示一些信息【例例2-2】在屏幕上显示两行文字在屏幕上显示两行文字:Programming is fun!And Programming in C is even more fun!#include int main(void)printf(Programming is fun!n);printf(And Programming in C is even more fun!n);return 0;int 表示本函数返回值是整型数表示本函数返回值是整型数void 表示本函数无参数表示本函数无参数结束本函数运行并返回整数结束本函数运行并返回整数0,其类型须对应前面定义的其类型须对应前面定义的int。2.2.1 程序解析程序解析2.2.2 常量、变量和数据类型常量、变量和数据类型2.2.3 算术运算和赋值运算算术运算和赋值运算2.2.4 格式化输出函数格式化输出函数printf【例例2-3】求华氏温度求华氏温度 100F 对应的摄氏温度。对应的摄氏温度。其中:其中:c 表示摄氏温度,表示摄氏温度,f 表示华氏温度。表示华氏温度。2.2 求华氏温度求华氏温度100对应的摄氏温度对应的摄氏温度 计算公式为:计算公式为:2.2.1 程序解析程序解析【例例2-3】求华氏温度求华氏温度 100F 对应的摄氏温度。对应的摄氏温度。计算公式:计算公式:c=5*(f-32)/9#include int main(void)int celsius,fahr;fahr=100;celsius=5*(fahr-32)/9;printf(fahr=%d,celsius=%dn,fahr,celsius);return 0;运行结果运行结果:fahr=100,celsius=37/*变量定义变量定义*/*空行空行,分割变量定义和可执行语句分割变量定义和可执行语句,非必需非必需*/*对变量对变量fahr赋值赋值*/*计算且结果赋值变量计算且结果赋值变量celsius*/*输出结果输出结果*/2.2.2 常量、变量和数据类型常量、变量和数据类型n数据类型数据类型n C语言中使用的量数据都有其类型,最常见语言中使用的量数据都有其类型,最常见的的n 根本数据类型有:根本数据类型有:n int整型整型n char字符型字符型n float单精度浮点型单精度浮点型n double双精度浮点型双精度浮点型ndouble 型数据比型数据比 float 型数据占用空间多,精度型数据占用空间多,精度n高,取值范围大高,取值范围大2.2.2 常量、变量和数据类型常量、变量和数据类型n常量常量 n程序运行过程中其值不能被改变的量称为常量程序运行过程中其值不能被改变的量称为常量n常量的类型通常由书写格式决定,例如常量的类型通常由书写格式决定,例如:n 123 是整型常量整数是整型常量整数n 123.45 是实型常量实数是实型常量实数n变量变量n在程序运行过程中值可以被改变的量称为变量在程序运行过程中值可以被改变的量称为变量n变量名及其类型在定义时指定变量名及其类型在定义时指定2.2.2 常量、变量和数据类型常量、变量和数据类型n变量的定义变量的定义n变量必须变量必须“先定义先定义,后使用后使用n变量定义的一般形式:变量定义的一般形式:n 类型名类型名 变量名表;变量名表;n 例如:例如:n int celsius,fahr;定义整型变量定义整型变量n float x;定义单精度浮点型变量定义单精度浮点型变量n double area,length;定义双精度浮点型变量定义双精度浮点型变量n 变量的定义变量的定义(续续)变量名变量名为一个为一个 C 语言中称为语言中称为“标识符的字符序列标识符的字符序列“标识符只能由字母、数字和下划线三种字标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线符组成,且第一个字符必须为字母或下划线用户自定义的标识符不能是用户自定义的标识符不能是 C 语言的关键字语言的关键字详见详见p308附录附录A之之1.关键字关键字变量名变量名(标识符标识符)区分大小写字母,一般习惯区分大小写字母,一般习惯 用小写字母用小写字母n 变量的定义变量的定义(续续)l给变量起名尽量做到给变量起名尽量做到“见名知义,以及一见名知义,以及一般习惯般习惯l变量名代表内存中的一个存储单元,用于存变量名代表内存中的一个存储单元,用于存放该变量的值,单元大小由变量类型决定,放该变量的值,单元大小由变量类型决定,l 有的有的(如整型如整型)还与编译系统有关,例如:还与编译系统有关,例如:l VC+和和GUIDE中,中,int型变量占用型变量占用4个字节,个字节,而在而在TC中,中,int型变量只占用型变量只占用2个字节个字节l定义变量时可对变量初始化定义变量时可对变量初始化l 例如:例如:int a=10,b=20,c;2.2.3 算术运算和赋值运算算术运算和赋值运算n算术运算算术运算n双目算术运算符双目算术运算符(加、减、乘、除和取余加、减、乘、除和取余):n +-*/%n除运算符除运算符(/)的操作数都是整型,运算结果为整型的操作数都是整型,运算结果为整型n (商的整数局部商的整数局部),只要有一个是实型,结果为实只要有一个是实型,结果为实型。型。n 例如:例如:1/2 商为商为 0 1/2.0 商为商为 0.5n取余运算符取余运算符(%)的操作数类型必须是整型的操作数类型必须是整型n 合法:合法:10%2 非法:非法:10.0%2n 例:正整数例:正整数a的个位、十位、百位数:的个位、十位、百位数:n a%10、a/10%10、a/100%10n 算术运算算术运算(续续)当运算符两侧的操作数类型不同时,会自动转换成当运算符两侧的操作数类型不同时,会自动转换成 同一类型后再运算,运算结果也为该类型。同一类型后再运算,运算结果也为该类型。数据类型自动转换规那么:数据类型自动转换规那么:double float 高高 unsigned long long unsigned unsigned short int char,short 低低+和和-还可作单目运算符,对数值取正负还可作单目运算符,对数值取正负 例如:例如:-12.3、-a、-(a+5)(a为整型变量为整型变量)n 赋值运算赋值运算算术表达式算术表达式 是用算术运算符将运算对象连接起来的符合是用算术运算符将运算对象连接起来的符合C语言语言 语法规那么的式子。例如:语法规那么的式子。例如:5*(fahr-32)/9 赋值运算赋值运算赋值运算符赋值运算符=功能是计算其右边表达式的值再赋予左边的功能是计算其右边表达式的值再赋予左边的变量变量赋值表达式赋值表达式 是用是用=将一个变量和一个表达式连接起来的将一个变量和一个表达式连接起来的式子式子 一般形式为:变量一般形式为:变量=表达式表达式 例如:例如:celsius=5*(fahr-32)/92.2.4 格式化输出函数格式化输出函数printf()n功能功能 按指定的格式向显示器输出指定信息按指定的格式向显示器输出指定信息n一般调用格式一般调用格式 printf(格式控制串格式控制串,输出参数输出参数1,输出参数输出参数n);其中:其中:格式控制串格式控制串 用双引号括起来,表示输出的格式用双引号括起来,表示输出的格式输出参数输出参数 要输出的数据,可以是常量、变量或表达式要输出的数据,可以是常量、变量或表达式2.2.4 格式化输出函数格式化输出函数printf()n格式控制字符串包含的信息格式控制字符串包含的信息输出格式说明输出格式说明 由百分号由百分号%和紧跟在其后的格式描述符组成和紧跟在其后的格式描述符组成,具体与对具体与对 应的输出参数的数据类型有关:应的输出参数的数据类型有关:lint 型型:%dlfloat 和和 double 型型:%f原样输出字符原样输出字符 需要按原样输出的字符,包括转义字符需要按原样输出的字符,包括转义字符(如如n)n)。例如:。例如:printf(fahr=%d,celsius=%dn,fahr,celsius);输出为:输出为:fahr=100,celsius=372.3 计算分段函数计算分段函数 2.3.1 程序解析程序解析2.3.2 关系运算关系运算2.3.3 if-else语句语句2.3.4 格式化输入函数格式化输入函数scanf2.3.5 常用数学库函数常用数学库函数2.3.1 程序解析程序解析【例【例2-4】输入用户的月用水量】输入用户的月用水量x(吨吨),按如下分段函数,按如下分段函数式计算水费,输出该用户应支付的水费式计算水费,输出该用户应支付的水费 y(元元)(保存保存2位位小数小数)。此题必须对此题必须对 x 作判断,如果作判断,如果 x15,那么,那么 y=4x/3,否,否那么那么。可用。可用if-else语句实现:语句实现:if(x=15)y=4*x/3;else y=2.5*x-10.5;#include int main(void)double x,y;printf(Enter x(x=0):n);/*输入提示输入提示*/scanf(%lf,&x);/*调用调用scanf函数输入数据函数输入数据*/if(x=0):9.5f(9.500000)=12.67运行结果运行结果2:Enter x(x=0):21.3f(21.300000)=42.752.3.2 关系运算关系运算n关系运算符关系运算符(比较运算符比较运算符)n 用于比较两个表达式值的大小,有用于比较两个表达式值的大小,有6种:种:n 、=、b 的值为的值为0n 关系表达式关系表达式 c a+b 的值为的值为1nIf-else 语句的一般形式为语句的一般形式为:执行流程执行流程 if(表达式表达式)语句语句1 else 语句语句22.3.3 if-else语句语句表达式表达式语句语句1假假真真语句语句22.3.3 if-else语句语句n常用于计算二分段函数常用于计算二分段函数 【例例】if-else 语句:语句:if(x!=0)y=1/x;else y=0;源程序源程序#include int main(void)double x,y;printf(Enter x:n);scanf(%lf,&x);if(x!=0)y=1/x;else y=0;printf(f(%.1f)=%.2fn,x,y);return 0;运行结果运行结果1:Enter x:2.5f(2.5)=0.40运行结果运行结果2:Enter x:0f(0.0)=0.00测试和调试程序测试和调试程序n测试和调试程序测试和调试程序n 就是通过运行程序来发现程序中的错误就是通过运行程序来发现程序中的错误,并改正并改正错错n 误的过程。具体做法:误的过程。具体做法:n 1.精心设计一批测试用例精心设计一批测试用例(包括输入数据和预期包括输入数据和预期输输n 出结果出结果)。n 2.然后分别用这些测试用例运行程序,看程序然后分别用这些测试用例运行程序,看程序的的 n 实际运行结果与预期输出结果是否一致。实际运行结果与预期输出结果是否一致。n 3.如运行结果有错,那么查找并改正程序中的如运行结果有错,那么查找并改正程序中的错误错误,n 继续步骤继续步骤2和和3,直到运行结果与预期输出结,直到运行结果与预期输出结果果n 全部一致为止。全部一致为止。测试和调试程序测试和调试程序n测试用例的设计测试用例的设计n 测试用例的选取决定了错误是否能被发现。测试用例的选取决定了错误是否能被发现。n不能简单地认为测试用例越多就越好不能简单地认为测试用例越多就越好(穷举所有穷举所有n 测试用例,一般并不可行测试用例,一般并不可行),而是以能充分表达,而是以能充分表达n 程序功能的全貌和特殊细节的处理为好。程序功能的全貌和特殊细节的处理为好。n一般测试用例要选择正常和不正常两类数据。一般测试用例要选择正常和不正常两类数据。n正常数据通常可选择中间和边界的数据。正常数据通常可选择中间和边界的数据。n根据自己的经验和易犯的错误,有针对地选择根据自己的经验和易犯的错误,有针对地选择n 测试用例。测试用例。测试和调试程序测试和调试程序n查找程序错误的方法查找程序错误的方法n 调试程序查找错误的前提是读懂程序。调试程序查找错误的前提是读懂程序。n对不大的程序,可用出现问题的测试用例,通对不大的程序,可用出现问题的测试用例,通n 过过“走码或称走码或称“人脑运行程序,从而发现人脑运行程序,从而发现程序程序n 错误所在。错误所在。n程序中适当位置参加输出语句,通过输出的中程序中适当位置参加输出语句,通过输出的中n 间结果来分析在哪一局部存有问题。间结果来分析在哪一局部存有问题。n借助集成开发环境的程序调试功能,通过设置借助集成开发环境的程序调试功能,通过设置n 断点或单步跟踪运行程序,观测程序执行的流断点或单步跟踪运行程序,观测程序执行的流n 程和变量值程和变量值(中间结果中间结果)的变化来找到错误。的变化来找到错误。2.3.4 格式化输入函数格式化输入函数scanfn功能功能 按指定的格式从键盘接受输入数据按指定的格式从键盘接受输入数据n一般调用格式一般调用格式 scanf(格式控制串格式控制串,输入参数输入参数1,输入参数输入参数n);其中:其中:格式控制串格式控制串 用双引号括起来,表示输入的格式用双引号括起来,表示输入的格式输入参数输入参数 要输入数据的变量的地址要输入数据的变量的地址(变量名前加变量名前加&符号符号)2.3.4 格式化输入函数格式化输入函数scanfn格式控制字符串包含的信息格式控制字符串包含的信息输入格式说明输入格式说明 由百分号由百分号%和紧跟在其后的格式描述符组成和紧跟在其后的格式描述符组成,具体具体 与对应的输入参数所指变量的数据类型有关:与对应的输入参数所指变量的数据类型有关:lint 型型:%dlfloat:%f ldouble 型型:%lf原样输入字符原样输入字符 需要按原样输入的字符需要按原样输入的字符。例如:。例如:int a,b;scanf(a=%d,b=%d,&a,&b);输入时键入:输入时键入:a=100,b=372.3.4 格式化输入函数格式化输入函数scanf double x,y;scanf(%lf%lf,&x,&y);输入时键入:输入时键入:12.3 100 double x,y;scanf(%lf,%lf,&x,&y);输入时键入:输入时键入:12.3,100 提示:一般尽可能不要使用提示:一般尽可能不要使用原样输入字符原样输入字符n输入格式说明与输入参数间从类型、个数和位置输入格式说明与输入参数间从类型、个数和位置 顺序上都必须一一对应。例如:顺序上都必须一一对应。例如:int a;float y;double x;scanf(%lf%f%d,&x,&y,&a);输入多个数据时输入多个数据时,可用空格、回车或制表符作间隔。可用空格、回车或制表符作间隔。改进例改进例2-3的程序的程序【例例2-3】求华氏温度求华氏温度 100F 对应的摄氏温对应的摄氏温#include int main(void)int celsius,fahr;fahr=100;celsius=5*(fahr-32)/9;printf(fahr=%d,celsius=%dn,fahr,celsius);return 0;scanf(%d,&fahr);printf(Enter fahr:n);运行结果运行结果:Enter fahr:100fahr=100,celsius=372.3.5 常用数学库函数常用数学库函数n库函数库函数C语言处理系统提供事先编好的函数,供用户在编语言处理系统提供事先编好的函数,供用户在编 程时调用,这些函数统称为库函数程时调用,这些函数统称为库函数调用库函数所必需的一些信息在相应的头文件中作调用库函数所必需的一些信息在相应的头文件中作 了声明,调用库函数时,必须用了声明,调用库函数时,必须用#include 命令将命令将 该库函数对应的头文件包含到源程序中,例如:该库函数对应的头文件包含到源程序中,例如:l调用输入调用输入/输出函数输出函数(如如scanf,printf 等等)需要:需要:#include l调用数学处理函数调用数学处理函数(如如fabs,sqrt,pow,exp 等等)需要:需要:#include 2.3.5 常用数学库函数常用数学库函数n常用的数学库函数常用的数学库函数平方根函数平方根函数 sqrt(x)计算计算绝对值函数绝对值函数 fabs(x)计算计算|x|幂函数幂函数 pow(x,n)计算计算 xn指数函数指数函数 exp(x)计算计算 ex以以e为底的对数函数为底的对数函数 log(x)计算计算 ln x以以10为底的对数函数为底的对数函数 log10(x)计算计算 log10 x【例【例2-5】计算存款的本息】计算存款的本息【例【例2-5】计算存款的本息。输入存款金额】计算存款的本息。输入存款金额 money、存期存期 year 和年利率和年利率 rate,根据以下公式计算存款,根据以下公式计算存款到期时的本息合计到期时的本息合计sum(税前税前),输出时保存,输出时保存 2 位小位小数。数。sum=money(1+rate)year上述数学计算公式写成上述数学计算公式写成C语言表达式为:语言表达式为:sum=money*pow(1+rate),year)例例2-5程序程序#include#include int main(void)int money,year;double rate,sum;printf(Enter money:);scanf(%d,&money);printf(Enter year:);scanf(%d,&year);printf(Enter rate:);scanf(%lf,&rate);sum=money*pow(1+rate),year);printf(sum=%.2f,sum);return 0;运行结果:运行结果:Enter money:1000Enter year:3Enter rate:0.025sum=1076.89scanf(%d%d%lf,&money,&year,&rate);2.4 输出华氏摄氏温度转换表输出华氏摄氏温度转换表2.4.1 程序解析程序解析2.4.2 for语句语句2.4.3 指定次数的循环程序设计指定次数的循环程序设计2.4.1 程序解析程序解析【例例2-6】输入输入2个整数个整数 lower 和和 upper,输出一张,输出一张华氏摄氏温度转换表,华氏温度的取值范围是华氏摄氏温度转换表,华氏温度的取值范围是lower,upper,每次增加,每次增加1F。fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7#include int main(void)int fahr,lower,upper;double celsius;printf(Enter lower:);scanf(%d,&lower);printf(Enter upper:);scanf(%d,&upper);printf(fahr celsiusn);for(fahr=lower;fahr=upper;fahr+)celsius=(5.0/9.0)*(fahr-32);printf(%d%6.1fn,fahr,celsius);return 0;例例2-6 程序程序等价于等价于:fahr=fahr+1Enter lower:30Enter upper:35fahr celsius30 -1.131 -0.632 0.033 0.634 1.135 1.7例例2-6程序中程序中for语句的执行流程语句的执行流程for(fahr=lower;fahr=upper;fahr+)celsius=(5.0/9.0)*(fahr-32);printf(%d%6.1fn,fahr,celsius);Ffahr=upperfahr=lowerfahr+转换计算和输出转换计算和输出T2.4.2 for语句循环语句语句循环语句nfor语句的一般形式语句的一般形式n for(表达式表达式1;表达式表达式2;表达式表达式3)n 语句语句(循环体循环体)n执行流程如右图所示执行流程如右图所示n表达式表达式1:初值表达式:初值表达式n 用于对循环控制变量或循环体中的用于对循环控制变量或循环体中的n 变量赋初值,可以是逗号表达式变量赋初值,可以是逗号表达式n表达式表达式2:条件表达式:条件表达式n 给出循环的条件,假设值为真给出循环的条件,假设值为真(即非即非0),那么,那么继续循环;继续循环;n 为假为假(即即0),那么结束循环,那么结束循环表达式表达式2求解表达式求解表达式1求解表达式求解表达式3循环体语句循环体语句TF2.4.2 for语句循环语句语句循环语句表达式表达式3:增量表达式:增量表达式 用于改变循环控制变量的值,从而到达用于改变循环控制变量的值,从而到达改变表达式改变表达式 2值的真假,也可用逗号表达式包含一些值的真假,也可用逗号表达式包含一些本来可放本来可放 在循环体中执行的其他表达式。在循环体中执行的其他表达式。三个表达式之间的两个分号三个表达式之间的两个分号 表达式表达式1,表达式表达式2和表达式和表达式3都允许缺省都允许缺省,但分号不但分号不 可缺少可缺少,表达式表达式2缺省表示值为真缺省表示值为真(即非即非0),例如:,例如:for(;).语句语句(循环体循环体)只能是一句语句,假设要执行多句,可只能是一句语句,假设要执行多句,可用大括号将这用大括号将这 些语句括起来,使其成为一句复合语句。些语句括起来,使其成为一句复合语句。2.4.2 for语句循环语句语句循环语句n循环控制变量循环控制变量 for语句中,一般通过改变和判断某个或某些变量的语句中,一般通过改变和判断某个或某些变量的 值来控制循环的执行,这种变量称为循环控制变量。值来控制循环的执行,这种变量称为循环控制变量。例如,下面计算整数例如,下面计算整数1到到n中奇数之和与偶数之和的程中奇数之和与偶数之和的程 序段中的变量序段中的变量 i:int i,n,sum_odd,sum_even scanf(%d,&n);for(i=1,sum_odd=0,sum_even=0;i=n;i+)if(i%2=0)sum_even=sum_even+i;else sum_odd=sum_odd+i;2.4.2 for语句循环语句语句循环语句n逗号表达式逗号表达式(详见详见p132)n 一般形式为:表达式一般形式为:表达式1,表达式表达式2,表达式表达式nn 表示由左到右依次计算各表达式之值,并将表表示由左到右依次计算各表达式之值,并将表达式达式nn 的值作为逗号表达式的值的值作为逗号表达式的值n复合语句复合语句n 用括号用括号 把假设干语句括起来构成的一个语句把假设干语句括起来构成的一个语句组,称为组,称为n 复合语句,一个复合语句在语法上视为单条语复合语句,一个复合语句在语法上视为单条语句。如:句。如:n for(fahr=lower;fahr=upper;fahr+)n celsius=(5.0/9.0)*(fahr-32);n printf(%d%6.1fn,fahr,celsius);n 2.4.2 for语句循环语句语句循环语句n空语句空语句 只有分号只有分号;组成的语句称为空语句,空语句在程序执组成的语句称为空语句,空语句在程序执 行时不产生任何动作。行时不产生任何动作。有时需要加一个空语句来表示存在一条语句,但随意有时需要加一个空语句来表示存在一条语句,但随意 加分号也会导致逻辑或语法上的错误,要小心和慎用。加分号也会导致逻辑或语法上的错误,要小心和慎用。例如:例如:for(i=1,sum=0;i=100;i+);sum=sum+i;又如:又如:if(x!=0);y=1/x;else y=0;2.4.3 指定次数的循环程序设计指定次数的循环程序设计【例【例2-7】输入一个正整数】输入一个正整数n,求,求1+2+n 之和。之和。此题实际是对一个数列求此题实际是对一个数列求n项累加和问题,利用数项累加和问题,利用数 列的通项公式是数列求和的方法之一,关键是要确列的通项公式是数列求和的方法之一,关键是要确 定通项公式。定通项公式。设:第设:第 i 项为项为 ai 那么:那么:a1=1,a2=2,a3=3,可得到:可得到:通项公式:通项公式:ai=i 求求n项的累加和可用以下语句实现:项的累加和可用以下语句实现:for(sum=0,i=1;i=n;i+)sum=sum+i;#include int main(void)int i,n,sum;printf(Enter n:);scanf(%d,&n);/*输入输入n*/sum=0;/*累加和累加和sum清零清零*/for(i=1;i=n;i+)/*循环重复循环重复n次次*/sum=sum+i;/*反复累加反复累加*/printf(sum=%dn,sum);/*输出累加和输出累加和*/return 0;例例2-7程序程序运行结果运行结果:Enter n:100sum=50502.4.3 指定次数的循环程序设计指定次数的循环程序设计指定次数的循环程序设计一般包含四个局部:指定次数的循环程序设计一般包含四个局部:初始化:初始化:指定循环起点,给循环变量赋初值,如例中指定循环起点,给循环变量赋初值,如例中 i=1;进入循环之前进入循环之前,设置相关变量的初值设置相关变量的初值,如例中如例中sum=0。条件控制:只要循环变量值未超出指定的上限,就继条件控制:只要循环变量值未超出指定的上限,就继 续循环。如例中续循环。如例中 i=100。工作:指重复执行的语句工作:指重复执行的语句(循环体循环体)。必须是一条语句。必须是一条语句,可以是复合语句或空语句。如例中可以是复合语句或空语句。如例中sum=sum+i。改变循环变量:每次循环中改变循环变量的值。如例改变循环变量:每次循环中改变循环变量的值。如例 中中i+,以以改改变变循循环环条条件件的的真真假假,使使循循环环到到达达指指定定次数次数 后结束。后结束。2.4.3 指定次数的循环程序设计指定次数的循环程序设计【例【例2-8】输入一个正整数】输入一个正整数n,计算,计算1-1/3+1/5-1/7+的前的前n项和之和。项和之和。方法一:用通项公式方法一:用通项公式 此题也是个数列求和问题,也可用其通项公式实现。此题也是个数列求和问题,也可用其通项公式实现。设:第设:第 i 项为项为 ai 那么:那么:a1=1,a2=-1/3,a3=1/5,通项公式:通项公式:ai=(-1)i-1/(2i-1)求求n项的累加和可用以下语句实现:项的累加和可用以下语句实现:for(sum=0,i=1;i 1)求原数列求原数列n项的累加和可用以下语句实现:项的累加和可用以下语句实现:int den,i,n;double flag,sum;for(sum=0,flag=1,den=1,i=1;i=n;i+)sum=sum+flag/den;den=den+2;flag=-flag;#include /*用用通项公式通项公式*/#include int main(void)int i,n;double sum;printf(Enter n:);scanf(%d,&n);sum=0;for(i=1;i=n;i+)sum=sum+pow(-1,i-1)/(2*i-1);printf(sum=%fn,sum);return 0;例例2-8程序程序1运行结果运行结果1:Enter n:2sum=0.666667运行结果运行结果2:Enter n:5sum=0.834921#include /*用用递推公式递推公式*/int main(void)int den,flag,i,n;double item,sum;printf(Enter n:);scanf(%d,&n);for(sum=0,flag=den=i=1;i=n;i+)item=flag*1.0/den;sum=sum+item;flag=-flag;den=den+2;printf(sum=%fn,sum);return 0;例例2-8程序程序2运行结果运行结果1:Enter n:2sum=0.666667运行结果运行结果2:Enter n:5sum=0.8349212.4.3 指定次数的循环程序设计指定次数的循环程序设计【例【例2-9】从键盘输入一个正整数】从键盘输入一个正整数n,求,求n!。此题是个累乘的问题,算法上与累加类似,可用下此题是个累乘的问题,算法上与累加类似,可用下 列语句实现:列语句实现:for(product=i=1;i=n;i+)product=product*i;要考虑的是要考虑的是product变量的数据类型。变量的数据类型。VC+和和GUIDE 中,中,int型变量占用型变量占用4个字节,数值范围为:个字节,数值范围为:-2147483648 +2147483647 而而 12!=479001600 13!=62270208002.4.3 指定次数的循环程序设计指定次数的循环程序设计 float型变量占用型变量占用4个字节,数值个字节,数值(绝对值绝对值)范围为:范围为:10-38 1038 有效数字有效数字 67位位 double型变量占用型变量占用4个字节,数值个字节,数值(绝对值绝对值)范围为:范围为:10-308 10308 有效数字有效数字 1516位位 显然,显然,product变量应定义为变量应定义为double型。型。另外,阶乘是整数,输出另外,阶乘是整数,输出product应无小数局部:应无小数局部:printf(product=%.0fn,product);#include int main(void)int i,n;double product;printf(Enter n:);scanf(%d,&n);product=1;for(i=1;i=n;i+)product=product*i;printf(product=%.0fn,product);return 0;例例2-9程序程序运行结果运行结果:Enter n:14product=871782912002.5 生成乘方表和阶乘表生成乘方表和阶乘表【例【例2-10】输入一个正整数】输入一个正整数 n,生成一张,生成一张 2 的乘方的乘方表,输出表,输出20到到2n的值,可调用幂函数计算的值,可调用幂函数计算2的乘方。的乘方。幂函数幂函数pow的原型为:的原型为:double pow(double x,double y)(功能功能:计算计算xy)可用以下语句实现计算输出可用以下语句实现计算输出20到到2n的值:的值:for(i=0;i=n;i+)printf(pow(2,%d)=%.0fn,i,pow(2,i);#include#include int main(void)int i,n;double power;printf(Enter n:);scanf(%d,&n);for(i=0;i=n;i+)power=pow(2,i);printf(pow(2,%d)=%.0fn,i,power);return 0;例例2-10程序程序运行结果运行结果:Enter n:4pow(2,0)=1pow(2,1)=2pow(2,2)=4pow(2,3)=8pow(2,4)=162.5 生成乘方表和阶乘表生成乘方表和阶乘表【例【例2-11】输入一个正整数】输入一个正整数n,生成一张阶乘表,输,生成一张阶乘表,输出出 0!到到 n!的值。要求定义和调用函数的值。要求定义和调用函数 fact(n)计算计算 n!,函数类型为,函数类型为double。C语言不仅提供了极为丰富的库函数,还允许用户语言不仅提供了极为丰富的库函数,还允许用户建立自己定义的函数建立自己定义的函数(称为自定义函数称为自定义函数)。此题的关键是如何定义和调用函数此题的关键是如何定义和调用函数 fact()。自定义函数初步自定义函数初步1.函数定义的一般格式:函数定义的一般格式:函数类型函数类型 函数名函数名(形式形式参数说明表参数说明表)/*函数首部函数首部*/函数体函数体 /*函数体函数体*/n函数类型函数类型:函数返回值的类型,如:函数返回值的类型,如:int float double char void 等。缺省为等。缺省为int,无返回值的,无返回值的 函数,函数类型应用函数,函数类型应用 void。n函数名函数名:函数的名称,即一个自定义标识符。:函数的名称,即一个自定义标识符。n形形参说明表参说明表:说明形式参数,格式为:说明形式参数,格式为:类型类型1 形参形参1,类型类型2 形参形参2,.,类型类型n 形参形参nn函数体函数体:由说明语句和执行语句组成的程序模块。:由说明语句和执行语句组成的程序模块。自定义函数初步自定义函数初步2.函数的声明函数的声明调用函数必须遵循调用函数必须遵循“先定义或声明后调用的原那么。先定义或声明后调用的原那么。要调用库函数,就用要调用库函数,就用#include命令把包含该库命令把包含该库 函数原型声明的头文件包含在源程序前部。函数原型声明的头文件包含在源程序前部。函数定义在先调用在后,就不需函数声明。函数定义在先调用在后,就不需函数声明。函数定义在后调用在先,就必须先行函数声明。函数定义在后调用在先,就必须先行函数声明。函数声明的一般形式:函数声明的一般形式:函数值类型函数值类型 函数名函数名(形参说明表形参说明表);其中的形参说明表可以与定义时的相同,也可以其中的形参说明表可以与定义时的相同,也可以 缺省其中的形参名。缺省其中的形参名。自定义函数初步自定义函数初步(续续)3.函数的返回值函数的返回值 函数返回值通过函数中用函数返回值通过函数中用return语句实现:语句实现:return 表达式表达式;或或 return(表达式表达式);return语句的作用是终止本函数的执行,并带着语句的作用是终止本函数的执行,并带着 表达式的值返回主调函数。表达式的值返回主调函数。假设表达式缺省,那么无直接的返回值。假设表达式缺省,那么无直接的返回值。假设表达式值类型与定义的函数类型不一致,那么假设表达式值类型与定义的函数类型不一致,那么以以 函数类型为准。函数类型为准。自定义函数初步自定义函数初步4.定义计算定义计算 n!的的fact()double fact(int n)/*函数首部函数首部*/int i;double product;product=1;for(i=1;i=n;i+)product=product*i;return product;/*将结果回送主调函数将结果回送主调函数*/#include double fact(int n);/*函数声明函数声明*/int main(void)int i,n;double result;printf(Enter n:);scanf(%d,&n);for(i=0;i=n;i+)result=fact(i);/*函数调用函数调用*/printf(%d!=%.0fn,i,result);return 0;例例2-11程序程序例例2-11程序程序(续续)/*定义定义fact()函数函数*/double fact(int n)int i;double product;product=1;for(i=1;i=n;i+)product=product*i;return product;运行结果运行结果:Enter n:30!=11!=12!=23!=6本章结束
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:chap 2用c语言编写程序(65)
链接地址:https://www.zhuangpeitu.com/article/217140133.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!