用C语言编写程序

上传人:博****1 文档编号:578135320 上传时间:2024-08-23 格式:PPT 页数:86 大小:766.50KB
返回 下载 相关 举报
用C语言编写程序_第1页
第1页 / 共86页
用C语言编写程序_第2页
第2页 / 共86页
用C语言编写程序_第3页
第3页 / 共86页
用C语言编写程序_第4页
第4页 / 共86页
用C语言编写程序_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《用C语言编写程序》由会员分享,可在线阅读,更多相关《用C语言编写程序(86页珍藏版)》请在金锄头文库上搜索。

1、作作 业业实验报告中的l实验2.4使用函数 l实验3 分支结构程序设计 说明:说明:l实验2.4要求全部做完。l实验3不要求全部做完,做到那里算那里,下次接下去做。12本本 章章 要要 点点编程,在屏幕上显示一些信息。编程,在屏幕上显示一些信息。编程,实现简单的数据处理。编程,实现简单的数据处理。 例,将华氏转换为摄氏温度。例,将华氏转换为摄氏温度。用用 ifif 语句计算分段函数。语句计算分段函数。用用 forfor 语句求语句求 1+2+100 1+2+100。定义和调用函数定义和调用函数, ,完成上述工作完成上述工作. .3/* 显示显示“Hello World! */# include

2、 int main(void) printf(Hello World! n) ; return 0;2.12.1 在屏幕上显示在屏幕上显示 Hello World!Hello World!【例例2-1】 在屏幕上显示在屏幕上显示: :Hello World!注释文本注释文本编译预处理命令编译预处理命令主函数主函数“;“;语句结语句结束束输出输出函数函数换行符换行符4# include int main(void ) printf(Programming is fun. n) ; printf(And Programming in C is even more fun!n); return 0;

3、【例例2-2】在屏幕上显示在屏幕上显示Programming is funAnd Programming in C is even more fun编译预处理命令编译预处理命令5例例2-3 求华氏求华氏 100F 对应的摄氏温度。对应的摄氏温度。 摄氏温度摄氏温度 C=(5/9)(F-32) #include int main(void ) int celsius, fahr; /* 变量定义变量定义 */ fahr = 100; /* 变量使用变量使用 */ celsius = 5*(fahr - 32) / 9 ; printf(fahr = %d, celsius = %dn, fahr

4、, celsius); return 0; fahr =100, celsius = 372.2.1 程序解析程序解析2.2 2.2 求华氏求华氏100100F F对应的摄氏温度对应的摄氏温度输出结果输出结果华氏温度和计华氏温度和计算摄氏温算摄氏温度的公式度的公式celsius = 5/9*(fahr - 32) ;6例例2-3 求华氏求华氏 100F 对应的摄氏温度。对应的摄氏温度。 摄氏温度摄氏温度 C=(5/9)(F-32) #include int main(void ) int celsius, fahr; /* 变量定义变量定义 */ celsius = 5*(fahr - 32)

5、 / 9 ; fahr = 100; /* 变量先定义后使用使用变量先定义后使用使用 */ printf(fahr = %d, celsius = %dn, fahr, celsius); return 0; 2.2.1 程序解析程序解析2.2 2.2 求华氏求华氏100100F F对应的摄氏温度对应的摄氏温度华氏温度和计华氏温度和计算摄氏温算摄氏温度的公式度的公式72.2.2 常量、变量和数据类型常量、变量和数据类型int celsius, fahr; celsius = 5 * (fahr - 32) / 9;数据数据常量:在程序运行过程中,其值不能被改变常量:在程序运行过程中,其值不能被

6、改变 变量:在程序运行过程中,其值可以被改变变量:在程序运行过程中,其值可以被改变 数据类型数据类型常量:常量:5 和和 9是整型常量整数是整型常量整数变量:在定义时指定变量:在定义时指定8变量的定义变量的定义变量定义的一般形式:变量定义的一般形式:类型名类型名 变量名表变量名表;例如:例如:int celsius, fahr; 定义整型变量定义整型变量float x; 定义单精度浮点型变量定义单精度浮点型变量double area, length; 定义双精度浮点型变量定义双精度浮点型变量double型数据比型数据比float精度高,取值范围大精度高,取值范围大 int二个字节、二个字节、f

7、loat四个字节、四个字节、double八个字节八个字节变量名:变量名:一般小写字母;见名知义一般小写字母;见名知义类型名类型名 变量,变量,变量,变量,,变量变量;9变量的定义变量的定义定义变量时要指定变量名和数据类型定义变量时要指定变量名和数据类型类型名类型名 变量名表;变量名表;int celsius, fahr; float x;double area, length;程序变量和数学变量的区别程序变量和数学变量的区别1. 变变量量名名代代表表内内存存中中的的一一个个存存储储单单元元存存放放该该变量的值变量的值2. 该存储单元的大小由变量的数据类型决定该存储单元的大小由变量的数据类型决定

8、3. C语言中的变量代表保存数据的存储单元语言中的变量代表保存数据的存储单元4. 数学中的变量代表未知数数学中的变量代表未知数 x = x+1类型名类型名 变量,变量,变量,变量,,变量变量;10#include int main( void ) int celsius, fahr; fahr = 100; celsius = 5 * (fahr - 32) / 9; printf(fahr = %d, celsius = %dn, fahr, celsius); return 0;变量的定义与使用变量的定义与使用一个变量名只能定义一次。一个变量名只能定义一次。变量一般都定义在程序的头上。变量

9、一般都定义在程序的头上。变量也变量也应该先赋值,后引用应该先赋值,后引用变量必须先定义,后使用。变量必须先定义,后使用。112.2.3 算术运算和赋值运算算术运算和赋值运算fahr = 100; celsius = 5 * (fahr - 32) / 9; 1、算术运算、算术运算双目算术运算符:双目算术运算符:+ - * / %算算术术表表达达式式:用用算算术术运运算算符符将将运运算算对对象象连连接接起起来来的符合的符合C语言语法规那么的式子语言语法规那么的式子 数学式:数学式: 5/9(F-32) C表达式:表达式:5 * (fahr - 32) / 9 数学式:数学式: s(s-a)(s-

10、b)(s-c)C表达式:表达式: s*(s-a)*(s-b)*(s-c)12双目算术运算符:双目算术运算符:+ - * / %+ - * / %算算术术表表达达式式:用用算算术术运运算算符符将将运运算算对对象象连连接接起起来来的的符合符合C C语言语法规那么的式子语言语法规那么的式子 注意注意/ / 整数除整数,得整数整数除整数,得整数如:如:1/2 1/2 0 0,9/4 9/4 2 2 % % 针对整型数据针对整型数据如:如: 5 56 65 5,9 94 41 1,1001004 40 0双双目目运运算算符符两两侧侧操操作作数数的的类类型型要要相相同同, ,如如不不同同自自动动转转换换求

11、余运算求余运算, ,运算对象一定是整数运算对象一定是整数问题问题5 * (fahr - 32) / 9 和和 5 / 9 * (fahr - 32) 等价吗等价吗?9.0%2正确正确不等价不等价13赋值运算赋值运算l赋值运算符赋值运算符 = =l赋赋值值表表达达式式:用用 = = 将将一一个个变变量量和和一一个个表表达达式式连接起来的式子连接起来的式子 变量变量 表达式表达式例如:例如:fahr = 100; celsius = 5 * (fahr - 32) / 9; Q计算赋值运算符右侧计算赋值运算符右侧表达式表达式的值的值Q将赋值运算符右侧将赋值运算符右侧表达式表达式的值赋给左侧的的值赋

12、给左侧的变量变量“的左边必须是一个变量的左边必须是一个变量赋值号优先级低赋值号优先级低14数据输出:数据输出:格式化输出函数格式化输出函数 printf() #include printf (Hello World! n);printf (fahr = %d, celsius = %dn, fahr, celsius);2.2.4 2.2.4 格式化输出函数格式化输出函数printf()printf()printf (格式控制字符串格式控制字符串, 输出参数输出参数1, , 输出参数输出参数n);%d“ 括起来表括起来表示输出格式示输出格式要输出的数据要输出的数据%d普通字符原样输出普通字符原

13、样输出fahr =和和, celsius =还有还有n就是普通字符就是普通字符 15格式控制字符串:格式控制字符串:(注意:字符串是要加注意:字符串是要加“ 的的)普通字符:原样输出普通字符:原样输出格式控制说明格式控制说明:按指定的格式输出数据按指定的格式输出数据,%与数据类型有关与数据类型有关 int型型 : %dchar型型 : %c float型:型:%f double型:型:%f 或或%lfprintf(Hello World! n); printf()格式控制字符串格式控制字符串格式控制格式控制输出输出: :fahr =100, celsius = 37printf(fahr =

14、%d, celsius = %dn, fahr, celsius);普通字符普通字符输出输出: : Hello World! 16 程序解析程序解析 关系运算关系运算 if-else语句语句 格式化输入函数格式化输入函数scanf( )2.3.5 常用数学库函数常用数学库函数 else-if语句语句2.3 计算分段函数计算分段函数 172.3.1 程序解析程序解析要解决的问题:要解决的问题:输入输入判断判断计算分段函数计算分段函数 4x/3 4x/3或或输出,并保存输出,并保存2 2位小位小数数 例例2-4 分段计算水费。分段计算水费。 4x/3x15X15182.3.1 程序解析程序解析求分

15、段函数求分段函数 #include int main(void) double x, y; printf(Enter x (x=0): ); scanf(%lf, &x); if(x =0): 9.5f(9.500000)=12.67#include int main(void) double x, y; printf(Enter x (x=0): ); scanf(%lf, &x); if(x =0):f(21.300000)=42.75#include int main(void) double x, y; printf(Enter x (x=0): ); scanf(%lf, &x);

16、if(x = 15) y = 4 * x / 3; else y = 2.5 * x - 10.5; printf(y = f(%f) = %.2fn, x, y); return 0;21.3当当x=21.3时时程程序的执行情况序的执行情况212.3.2 关系运算关系运算关系运算关系运算 比较运算,比较两个操作数比较运算,比较两个操作数关系运算符关系运算符x y x y x = y x != y关关系系表表达达式式:用用关关系系运运算算符符将将2个个表表达达式式连连接接起起来来的的式式子。如:子。如:x = 1区分区分和和x = 1比较比较 x 和和 1 的大小的大小比较的结果:真比较的结果

17、:真 假假当当 x 取值取值0.5时,时, x = 1的结果是:?的结果是:?当当 x 取值取值1.5时,时, x = 1的结果是:?的结果是:?22运用关系表达式运用关系表达式表示比较的数学式表示比较的数学式x10x10x10x = 10C关系表达式关系表达式 x = 10 x != 10 x = 10用关系表达式描述条件用关系表达式描述条件判断判断 x 是否为负数是否为负数 x 232.3.3 if - else语句语句if (表达式表达式) 语句语句1else 语句语句2if (x = 0) y = 0;else y = x * x -1;语句语句1表达式表达式语句语句2真真假假问题问题

18、往那条路线走?往那条路线走?24例2-5 输入x,求分段函数 f(x) 的值,保存1位小数。 例例2-5 求分段函数求分段函数 要解决的问题:要解决的问题:输入输入判断判断x=0x=0还是不等于还是不等于0 0计算分段函数计算分段函数 输出,并保存输出,并保存1 1位小位小数数 if (x != 0) y = 1/x;else y = 0;if (表达式表达式) 语句语句1else 语句语句2if (x = 0) y = 0;else y = 1/x;25例例2-5 程序程序#include /* 例例2-5 */int main( ) float x, y; printf(提示提示:输入输入

19、 x: ); scanf(%f, &x); if (x != 0) y = 1/x; else y = 0; printf(f(%.2f)=%.1fn,x,y); return 0; 只要输入的只要输入的x不等于不等于0就执行本语句就执行本语句提示提示:输入输入 x: 提示提示:输入输入 x: 0f(0.00)=0.02.5f(2.50)=0.426软件测试软件测试精精心心设设计计一一批批测测试试用用例例输输入入数数据据,预预期期输输出出结结果果 ,然然后后分分别别用用这这些些测测试试用用例例运运行行程程序序,看看程程序序的的实际运行结果与预期输出结果是否一致。实际运行结果与预期输出结果是否一

20、致。软件测试的根本思想软件测试的根本思想 提示提示:输入输入 x:2.5f(2.50)=0.4提示提示:输入输入 x: 0f(0.00)=0.0if (x != 0) y = 1/x;else y = 0;if (x = 1) y = exp(x);else y = x * x -1;提示提示:输入输入 x:0.5f(0.500000)=1.65提示提示:输入输入 x:2.4f(2.400000)=4.76272.3.4 格式化输入函数格式化输入函数scanf()scanf(格式控制字符串格式控制字符串, 输入参数输入参数1, , 输入参数输入参数n);用双引号括起来,表示输入的格式用双引号括

21、起来,表示输入的格式变量地址变量地址数据输入:数据输入:格式化输入函数格式化输入函数 scanf()#include scanf(%f, &x);28格式控制字符串:格式控制字符串:格式控制说明格式控制说明: :按指定的格式输入数据按指定的格式输入数据, ,%与数据类型有关与数据类型有关l int型型 :%d long型型 : %ldl float型:型:%f char型型 : %c %sl double型:型:%lf普通字符:原样输入普通字符:原样输入scanf()格式控制字符串格式控制字符串输入输入: : 2.5scanf(x=%f, &x);输入输入: x=2.5尽量不要出现没有尽量不要

22、出现没有必要的普通字符必要的普通字符scanf(%f, &x);29double x;scanf(%f, &x);double x;scanf(%lf, &x);30例2-3 求华氏温度 100F 对应的摄氏温度。摄氏温度 C=(5/9)(F-32) 改进例改进例2-3的程序的程序#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);pri

23、ntf(提示,输入华氏温度:提示,输入华氏温度:);提示,输入华氏温度:提示,输入华氏温度:100fahr =100, celsius = 37问题问题任意温度转换任意温度转换312.3.5 常用数学库函数常用数学库函数库函数库函数 C语语言言处处理理系系统统提提供供事事先先编编好好的的函函数数,供供用用户户在在编编程程时时调调用用。scanf(), printf(), exp()在在相相应应的的系系统统文文件头文件中定义一些必需的信息。件头文件中定义一些必需的信息。#include命令命令 用用户户调调用用库库函函数数时时,将将相相应应的的头头文文件件包包含含到到源源程程序序中。中。例如例如

24、: 调用调用scanf(), printf() 需要需要 #include 调用调用exp() 需要需要 #include 32常用数学库函数常用数学库函数n平方根函数平方根函数 sqrt(x) sqrt(x) n sqrt(9) sqrt(9)的值为的值为3 3n绝对值函数绝对值函数 fabs(x) fabs(x)和和abs(x)abs(x)nfabs(-3.56) fabs(-3.56) 的值为的值为3.563.56,abs(-2)abs(-2)的值为的值为2 2n幂函数幂函数 pow(x, n) pow(x, n) :xnxnnpow(1.1, 2) pow(1.1, 2) 的值为的值为

25、1.211.21即即1.121.12n指数函数指数函数 exp(x) exp(x) :exexnexp(2.3) exp(2.3) 的值为的值为e2.3e2.3n以以e e为底的对数函数为底的对数函数 log(x) log(x) :ln xln xnlog(123.45) log(123.45) 的值为的值为4.8158364.815836n以以1010为底的对数函数为底的对数函数 log10(x) log10(x) :log10xlog10xnlog10(123.45) log10(123.45) 的值为的值为2.0914912.091491。 33数学公式:数学公式:输入存款金额 mone

26、y、存期 year 和年利率 rate,根据公式计算存款到期时的本息合计sum税前,输出时保存2位小数。例例2-5 计算存款的本息计算存款的本息sum = money * pow(1 + rate, year)sum = money ( 1 + rate)year问题问题程序如何写程序如何写34# include # include int main( ) int money, year; double rate, sum; printf(提示,输入提示,输入 money, year and rate: ); scanf(%d%d%lf, &money, &year, &rate); sum

27、= money * pow(1 + rate, year); printf(sum = %.2f, sum); return 0;例例2-5 程序程序提示,输入提示,输入 money, year and rate: 1000 3 0.025sum = 1076.89sum = money ( 1 + rate)year35scanf(%d%d%lf, &money, &year, &rate); 输入:输入:1000 3 0.025lscanf()需要多个输入参数和多个格式控制说明需要多个输入参数和多个格式控制说明输入参数的类型、个数和位置要与格式控制说明一一输入参数的类型、个数和位置要与格式

28、控制说明一一对应对应 调用调用scanf函数输入多个数据函数输入多个数据输入参数、格式控制说明、输入数据输入参数、格式控制说明、输入数据scanf(%d%lf%d , &money, &year, &rate);正确正确36程序运行时,输入的多个数据之间必须有间隔程序运行时,输入的多个数据之间必须有间隔scanf(money=%d,rate=%lf,year=%d, &money, &rate , &year);输入输入scanf(%d%lf%d, &money, &rate , &year);输入输入1000 3 0.025money=1000,rate=3,year=0.02537练练习习

29、:输输入入2个个整整数数,求求2个个数中的大者,并输出。数中的大者,并输出。382.4.1 程序解析程序解析例例2-8 输出一张华氏摄氏温度转换表,将华氏温度从输出一张华氏摄氏温度转换表,将华氏温度从 3040F 之间的每一度,分别转换成相应的摄氏之间的每一度,分别转换成相应的摄氏 温度并输出。温度并输出。2.4 2.4 输出华氏摄氏温度转换表输出华氏摄氏温度转换表fahr celsius 30 - 1.1 31 - 0.6 32 0.0 33 0.6 34 1.1 35 1.7 36 2.2 37 2.8 38 3.3 39 3.9 40 4.4进口进口问题问题第第1次次第第2次次第第3次次

30、第第4次次第第5次次循环体循环体5次次呵呵,我已呵呵,我已经跑完,经跑完,走喽!走喽!39for(i=1;i=100;i+)sum=sum+i;条条件件控控制制循循环环改改变变量量 for(表达式表达式1;表达式;表达式2;表达式;表达式3) 循环体循环体 求解表达式求解表达式1求解表达式求解表达式1 1表达式表达式2 2循环体循环体 求解表达式求解表达式3 3forfor语句的语句的下一条语句下一条语句真真假假for语句语句 (循环语句循环语句)初初始始化化局局部部执执 行行forfor语语句句 的的下下 一一条条 语语句句40【例例2-6】输输入入2个个整整数数lower和和 upper,

31、输输出出一一张张华华氏氏摄摄氏氏温温度度转转换换表表,华华氏氏温温度度的的取取值值范范围围是是lower, upper,每每次次增加增加1F。 #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

32、) * (fahr - 32); printf(%d %6.1fn, fahr, celsius); return 0; Enter lower:Enter upper:fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7fahr=fahr+130 3541#include int main( ) printf (华氏摄氏华氏摄氏n); for (fahr = 30; fahr = 35; fahr+) /* 复合语句开始复合语句开始 */ celsius = (5.0 / 9.0) * (fahr - 32.0); printf(%

33、3.0f %6.1fn, fahr, celsius); /* 复合语句结束复合语句结束 */ return 0;double celsius, fahr;42编程思想编程思想:抽取具有共性的算式:抽取具有共性的算式:sum = sum + i sum初初值值为为0,该该算算式式重重复复n次次,i从从1变到变到n设设i为循环变量,那么:为循环变量,那么:指定循环起点的表达式指定循环起点的表达式1:i = 1给出循环条件的表达式给出循环条件的表达式2:i = n循环体语句:循环体语句:sum = sum + i;设置循环步长的表达式设置循环步长的表达式3:i=i+1for (i=1; i=n;

34、i+)sum =sum+i;【例例2-7】 n求求 sum= i i=143输入一个正整数输入一个正整数n,求前,求前n项和。项和。#include int main(void) int i, n; double sum; printf(“提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i = n; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;44输入一个正整数输入一个正整数n,求前,求前n项和。项和。#include int main(void) printf(提示,输入

35、提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i = n; i+ ) sum = sum + i; printf(sum = %dn, sum); return 0;int i, n; double sum;isumn:45#include int main(void) int i, n; double sum; scanf(%d, &n); sum=0; for ( i = 1; i = n; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;输入一个正整数输入一个正整数n,求前,求前

36、n项和。项和。printf(提示,输入提示,输入 n: );isum提示,输入提示,输入 n:46#include int main(void) int i, n; double sum; printf(“提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i = n; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;输入一个正整数输入一个正整数n,求前,求前n项和。项和。isum提示,输入提示,输入 n:scanf(%d, &n);347#include int main(voi

37、d) int i, n; double sum; printf(“提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i = n; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;输入一个正整数输入一个正整数n,求前,求前n项和。项和。isum提示,输入提示,输入 n:sum=0;3048#include int main(void) int i, n; double sum; printf(“提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for (

38、 i = 1; i = n; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;输入一个正整数输入一个正整数n,求前,求前n项和。项和。1isum提示,输入提示,输入 n:i = 1;3049#include int main(void) int i, n; double sum; printf(“提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i = n; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;输入一个正整

39、数输入一个正整数n,求前,求前n项和。项和。1isum提示,输入提示,输入 n:i=n;3050#include int main(void) int i, n; double sum; printf(“提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i = n; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;输入一个正整数输入一个正整数n,求前,求前n项和。项和。1isum提示,输入提示,输入 n:sum+i;300+151#include int main(void) i

40、nt i, n; double sum; printf(“提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i = n; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;输入一个正整数输入一个正整数n,求前,求前n项和。项和。10isum提示,输入提示,输入 n:sum310+1521#include int main(void) int i, n; double sum; printf(提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i

41、 = 1; i = n; i+ ) sum = sum + i; printf(sum = %dn, sum); return 0;输入一个正整数输入一个正整数n,求前,求前n项和。项和。0isum提示,输入提示,输入 n:i+31i=i+12532#include int main(void) int i, n; double sum; printf(提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i = n; i+ ) sum = sum + i; printf(sum = %dn, sum); return 0;输入一个正整数输入一

42、个正整数n,求前,求前n项和。项和。isum提示,输入提示,输入 n:i=n;3154#include int main(void) int i, n; double sum; printf(提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i = n; i+ ) sum = sum + i; printf(sum = %dn, sum); return 0;输入一个正整数输入一个正整数n,求前,求前n项和。项和。2isum提示,输入提示,输入 n:sum+i;311+255#include int main(void) int i, n;

43、 double sum; printf(“提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i = n; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;输入一个正整数输入一个正整数n,求前,求前n项和。项和。21isum提示,输入提示,输入 n:sum331+256#include int main(void) int i, n; double sum; printf(“提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i

44、= n; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;输入一个正整数输入一个正整数n,求前,求前n项和。项和。23isum提示,输入提示,输入 n:i+3i=i+1357#include int main(void) int i, n; double sum; printf(“提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i = n; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;输入一个正整数输入一个正整数

45、n,求前,求前n项和。项和。33isum提示,输入提示,输入 n:i=n;358#include int main(void) int i, n; double sum; printf(“提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i = n; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;输入一个正整数输入一个正整数n,求前,求前n项和。项和。33isum提示,输入提示,输入 n:sum+i;33+359#include int main(void) int i, n;

46、 double sum; printf(“提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i = n; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;输入一个正整数输入一个正整数n,求前,求前n项和。项和。33isum提示,输入提示,输入 n:sum363+360#include int main(void) int i, n; double sum; printf(“提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i

47、= n; i+ ) sum = sum + i; printf( “sum = %fn, sum); return 0;输入一个正整数输入一个正整数n,求前,求前n项和。项和。36isum提示,输入提示,输入 n:i+3i=i+1461#include int main(void) int i, n; double sum; printf(“提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i = n; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;输入一个正整数输入一个正整数

48、n,求前,求前n项和。项和。36isum提示,输入提示,输入 n:i=n34printf( “sum = %dn, sum);sum =662#include int main(void) int i, n; double sum; printf(“提示,输入提示,输入 n: ); scanf(%d, &n); sum=0; for ( i = 1; i = n; i+ ) sum = sum + i; printf( “sum = %dn, sum); return 0;输入一个正整数输入一个正整数n,求前,求前n项和。项和。36isum提示,输入提示,输入 n:34return 0;sum

49、 =6程序运行结程序运行结束束63#include void main( ) int i; float sum; sum = 0; for ( i = 1; i = 100; i+ ) sum = sum + 1 / i; printf( “ %f n, sum); 求求 1+1/2+1/3+ 1/1001+1/2+1/3+ 1/1001.0程序有程序有问题问题?64求前求前n项和,即循环项和,即循环n次,每次累加次,每次累加1项。项。求求 1+1/3+1/5+ + 1 / i +1/n的前的前n项和项和item = 1.0 / (2 * i - 1);for (i = 1; i = n ;

50、i+) sum = sum + item;第i项65求求 1+1/3+1/5+ 1+1/3+1/5+ 的前的前n n项和项和#include int main( ) int i, n; double item , sum; printf(输入输入 n: ); scanf (%d, &n); sum=0; for ( i = 1; i = n; i+ ) item = 1.0 / (2 * i - 1); sum = sum + item ; printf ( sum = %fn, sum); return 0;for ( i = 1; i = n; i+ ) sum = sum +1.0 /

51、item; item=item+2;问题问题有其它解决的方法有其它解决的方法item=166【例例2-8】求求 1-1/3+1/5- 的前的前n项和项和求前求前n项和,即循环项和,即循环n次,每次累加次,每次累加1项。项。item = flag * 1.0 / t;t = t + 2;flag = -flag;for (i = 1; i = n ; i+) sum = sum + item;第i项item = flag*1.0/(2 * i - 1);item=1;67#include int main( ) int i, n, flag, t; double item, sum; print

52、f(提示提示,输入输入n: ); scanf (%d, &n);flag=t=1; sum = 0; for ( i = 1; i = n; i+ ) item = flag * 1.0/ t; sum = sum + item ; flag=-flag; t=t+2; printf ( sum = %fn, sum); return 0;【例例2-8】求求 1-1/3+1/5- 的前的前n项和项和sum=sum+flag/item; item=item+2;flag=-flag;item=1;语句可以语句可以连续赋值连续赋值,但定义不但定义不行行68for (item = 1; item =

53、 n ; item +) product = product * item;product = 1;【例例2-9】求求n!n! = 12n69#include int main(void) int i, n; double product; printf(提示输入提示输入 n: ); scanf (%d, &n) ; product=1; for ( i = 1; i = n; i+ ) product = product * i ; printf ( product = %.0fn, product ); return 0;【例例2-9】求求n!源程序源程序置阶乘置阶乘product的初值为

54、的初值为1循环重复循环重复n次,计算次,计算n!70for (i = 1; i = n ; i+) product = product * x;product = 1;【例例】求求xn输入实数输入实数x和正整数和正整数n,计算,计算xn = x * x * * x71#include int main(void) int i, n; double x, power ; printf(Enter x, n: ); scanf (%lf%d, &x, &n) ; power = 1; for ( i = 1; i = n; i+ )power = power * x; printf( %0.fn,

55、 power); return 0;【例例】求求xn 源程序源程序置置power的初值为的初值为1循环重复循环重复n次,计次,计算算x的的n次幂次幂722.5.1 程序解析程序解析输输入入一一个个正正整整数数n,生生成成一一张张2的的乘乘方方表表,输输出出20到到2n的值,可以调用幂函数计算的值,可以调用幂函数计算2的乘方。的乘方。for (i = 0; i = n ; i+) power = pow(2, i); 输出输出power的值的值;【例【例2-10 2-10 】1 1调用幂函数调用幂函数pow(2,i)计算计算2的的i次方。次方。73源程序生成乘方表源程序生成乘方表#include

56、 #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;Enter n:pow(2,0)= 1pow(2,1)= 2pow(2,2)= 4pow(2,3)= 8pow(2,4)= 16 调用幂函数调用幂函数pow(2,i)计算计算2的的i次方次方 45i74【例【例2-10 】 2生成阶乘表生成阶乘表输输入入一一个

57、个正正整整数数n,生生成成一一张张阶阶乘乘表表,输输出出0!到到n!的的值值。要要求求定定义义和和调调用用函函数数fact(n)计计算算n!,函函数数类类型是型是double。 for (i = 0; i = n ; i+) power = pow(2, i); 输出输出power的值的值;for (i = 0; i = n ; i+) product = fact(i); 输出输出product的值的值;调用自定义函数调用自定义函数fact(i)计算计算i!调用幂函数调用幂函数pow(2,i)计算计算2的的i次方次方 75问题问题如果没有系统提供的函数调用如果没有系统提供的函数调用x0+x1

58、+x2+x3+xn1!+2!+3!+n!没有没有pow(x, n)函数函数没有没有n!函数函数我们必须编制一个和我们必须编制一个和xn或或n!一样的函数一样的函数76源程序生成阶乘表源程序生成阶乘表#include 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;Enter n:0!=11!=12!=23!=6double fact(in

59、t n) int i; double product; product = 1; for (i = 1; i = n; i+) product = product * i; return product;自定义函数自定义函数的声明的声明调用自定义函数调用自定义函数fact(i)计算计算i!函数首部函数首部将结果回将结果回送主函数送主函数30!1!2!3!double fact(int n);77#include int main(void) int i, n; double result=0; scanf(%d, &n); for (i = 0; i = n ; i+) result = re

60、sult + power(2, i); printf( result = %.0fn, result); return 0;x0+x1+x2+x3+xndouble power(int m,int n) int i; double y; for(i=0;i=n;i+) if(i=0) y=1; else y=y*m; return y;从核心开始编程从核心开始编程double power(int m,int n);782.5.2 结构化程序设计思想结构化程序设计思想l结构化程序设计结构化程序设计(Structured Programming)l程序设计技术程序设计技术lC语言是结构化程序设计语

61、言语言是结构化程序设计语言l强强调调程程序序设设计计的的风风格格和和程程序序结结构构的的标标准准化化,提提倡倡清清晰晰的的结结构构,其其根根本本思思路路是是将将一一个个复复杂杂问问题题的的求求解解过过程程划划分分为为假假设设干干阶阶段段,每每个个阶阶段段要要处处理的问题都容易被理解和处理。理的问题都容易被理解和处理。l按按自自顶顶向向下下的的方方法法对对问问题题进进行行分分析析、模模块块化化设设计和结构化编码等计和结构化编码等3个步骤。个步骤。79自顶向下的分析方法自顶向下的分析方法l把大的复杂的问题分解成小问题后再解决把大的复杂的问题分解成小问题后再解决l面面对对一一个个复复杂杂的的问问题题

62、,首首先先进进行行上上层层整整体体的的分分析析,按按组组织织或或功功能能将将问问题题分分解解成成子子问问题题,如如果果子子问问题题仍仍然然十十分分复复杂杂,再再做做进进一一步步分分解解,直到处理对象相对简单,容易处理为止。直到处理对象相对简单,容易处理为止。l当当所所有有的的子子问问题题都都得得到到了了解解决决,整整个个问问题题也也就就解决了。解决了。l每每一一次次分分解解都都是是对对上上一一层层的的问问题题进进行行细细化化和和逐逐步步求求精精,最最终终形形成成一一种种类类似似树树形形的的层层次次结结构构,来描述分析的结果。来描述分析的结果。80学生成绩统计程序学生成绩统计程序成绩输入成绩输入

63、数据计算数据计算数据查找数据查找输出成绩输出成绩计算学生平均分计算学生平均分计算课程平均分计算课程平均分学生成绩统计程序的层次结构图学生成绩统计程序的层次结构图 81模块化设计模块化设计l将模块组织成良好的层次系统,顶层模块调用将模块组织成良好的层次系统,顶层模块调用其下层模块以实现程序的完整功能,每个下层其下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,从而完成程序的一模块再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能。个子功能,最下层的模块完成最具体的功能。l遵循模块独立性的原那么,即模块之间的联系遵循模块独立性的原那么,即模块之间的联系应尽量简单

64、。应尽量简单。l一个模块只完成一个指定的功能。一个模块只完成一个指定的功能。l模块之间只通过参数进行调用。模块之间只通过参数进行调用。l一个模块只有一个入口和一个出口。一个模块只有一个入口和一个出口。l模块内慎用全局变量。模块内慎用全局变量。82结构化编码结构化编码 选用顺序、选择和循环三种控制结构,使程序具选用顺序、选择和循环三种控制结构,使程序具有良好的风格。有良好的风格。对变量、函数、常量等命名时,要见名知意,有对变量、函数、常量等命名时,要见名知意,有助于对变量含义或函数功能的理解。助于对变量含义或函数功能的理解。在程序中增加必要的注释,增加程序的可读性。在程序中增加必要的注释,增加程

65、序的可读性。程序要清晰易懂,语句构造要简单直接,一行写程序要清晰易懂,语句构造要简单直接,一行写一条语句,采用缩进格式。一条语句,采用缩进格式。程序有良好的交互性,输入有提示,输出有说明,程序有良好的交互性,输入有提示,输出有说明,并尽量采用统一整齐的格式。并尽量采用统一整齐的格式。83流流 程程 控控 制制 结构化程序设计方法结构化程序设计方法将将复复杂杂程程序序划划分分为为假假设设干干个个相相互互独独立立的的模块模块模模块块:一一条条语语句句StatementStatement、一一段段程程序或一个函数子程序等序或一个函数子程序等单入口、单出口单入口、单出口84流程控制流程控制 任任何何程程序序都都可可以以将将模模块块通通过过3种种根根本本的控制结构进行组合来实现的控制结构进行组合来实现顺序结构顺序结构循环结构循环结构分支结构分支结构85本本 章章 小小 结结u表达式、语句表达式、语句u运算符数学、关系、逻辑运算符数学、关系、逻辑uif(表达式表达式) 语句语句1 else 语句语句2ufor(表达式表达式1;表达式表达式2;表达式表达式3) 语句语句386

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号