收藏 分享(赏)

chap2_用C语言编写程序1-3.ppt

上传人:杨桃文库 文档编号:8910868 上传时间:2019-07-16 格式:PPT 页数:55 大小:532.50KB
下载 相关 举报
chap2_用C语言编写程序1-3.ppt_第1页
第1页 / 共55页
chap2_用C语言编写程序1-3.ppt_第2页
第2页 / 共55页
chap2_用C语言编写程序1-3.ppt_第3页
第3页 / 共55页
chap2_用C语言编写程序1-3.ppt_第4页
第4页 / 共55页
chap2_用C语言编写程序1-3.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

1、Chap 2 用C语言编写程序,2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100F 对应的摄氏温度 2.3 计算分段函数 2.4 输出华氏摄氏温度转换表 2.5 生成乘方表与阶乘表,1,2.1 在屏幕上显示Hello World!,例2-1 在屏幕上显示一个短句:Hello World!,2,2.1 在屏幕上显示Hello World!,/* 显示 Hello World! */# include int main(void) printf(“Hello World! n”); return 0; ,1.任何程序都有主函数 2.程序由若干语句组成 3.语句由;结束,3

2、,2.1 在屏幕上显示一些信息,例2-2 在屏幕上显示: Programming is fun! And Programming in C is even more fun!,4,# include int main(void) printf(“Programming is fun! n“);printf(“And Programming in C is even more fun! n“);return 0; ,注意 return 语句 携带执行结果 提前结束任务,2.2 求华氏温度 100F 对应的摄氏温度,摄氏温度 C=(5/9)(F-32),5,2.2.1 程序解析: C=(5/9)(

3、F-32),#include int main(void) int celsius, fahr; fahr = 100; celsius = 5 * (fahr - 32) / 9; printf(“fahr = %d, celsius = %dn“, fahr, celsius);return 0; ,6,数据类型 常量:5 和 9是整型常量(整数) 变量:在定义时指定,数据 常量:在程序运行过程中,其值不能改变 变量:在程序运行过程中其值可以改变,变量的定义,变量定义的一般形式: 类型名 变量名表; 例如: int celsius, fahr; 定义整型变量 float x; 定义单精度浮

4、点型变量 double area, length; 定义双精度浮点型变量double型数据比float精度高,取值范围大,7,变量名字要合适,变量的定义,定义变量时要指定变量名和数据类型 类型名 变量名表; int celsius, fahr; float x; double area, length;变量名代表内存中的一个存储单元 存放该变量的值 该存储单元的大小由变量的数据类型决定,8,变量的定义与使用,#include int main(void) int celsius, fahr; fahr = 100; celsius = 5 * (fahr - 32) / 9; printf(“

5、fahr = %d, celsius = %dn“, fahr, celsius); return 0; ,一个变量名只能定义一次 变量一般都定义在函数的开始,应该先赋值,后引用,9,变量必须先定义,后使用,2.2.3 算术运算和赋值运算,fahr = 100; celsius = 5 * (fahr - 32) / 9; 1、算术运算 双目算术运算符:+ - * / % 算术表达式:用算术运算符将运算对象连接起来的符合C语言语法规则的式子 数学式:s(s-a)(s-b)(s-c) C表达式:s*(s-a)*(s-b)*(s-c) 数学式:(5/9)(F-32) C表达式:5 * (fahr

6、- 32) / 9,10,_ Why Not: 5/9*(fahr-32),算术运算,注意 / 整数除整数,得整数 如:1/2 0,9/4 2 ?5 * (fahr - 32) / 9 和 5 / 9 * (fahr - 32) 等价吗 % 针对整型数据 如: 565,941,10040 双目运算符两侧操作数的类型要相同,11,赋值运算,赋值运算符 = 赋值表达式:用 = 将一个变量和一个表达式连接起来的式子 变量 表达式 例如: fahr = 100; celsius = 5 * (fahr - 32) / 9; 计算赋值运算符右侧表达式的值 将赋值运算符右侧表达式的值赋给左侧的变量,的左边

7、必须是一个变量,12,2.2.4 格式化输出函数printf,数据输出:格式化输出函数 printf#include printf(“Hello World! n“); printf(“fahr = %d, celsius = %dn“, fahr, celsius);printf(格式控制字符串, 输出参数1, , 输出参数n);,用双引号括起来,表示输出的格式,要输出的数据,13,printf格式控制字符串,printf(“Hello World! n“); printf(“fahr = %d, celsius = %dn“, fahr, celsius); printf(“Hin“, f

8、ahr); 格式控制字符串: 普通字符:原样输出 格式控制说明:按指定的格式输出数据,% 与数据类型有关 int型 :%d float double型:%f printf(“fahr = %d, celsius = %dn“, fahr, celsius);,输出:fahr =100, celsius = 37,14,2.3 计算分段函数,2.3.1 程序解析 2.3.2 关系运算 2.3.3 if-else语句 2.3.4 格式化输入函数scanf 2.3.5 常用数学库函数,15,2.3.1 程序解析,例2-4 分段计算水费要解决的问题: 输入 计算分段函数 输出,并保留2位小数 求ex,

9、16,2.3.1 程序解析求分段函数,#include int main(void) double x, y; printf(“Enter x (x=0):n“); /* 输入提示 */scanf(“%lf“, ,Enter x (x=0): 9.5 f(9.500000)=12.67,Enter x (x=0): 15 f(15.000000)=20.00,Enter x (x=0): 21.3 f(21.300000)=42.75,17,2.3.2 关系运算,x y x = y x != y 关系表达式:用关系运算符将2个表达式连接起来的式子。 如:x = 1,区分= 和=,18,运用关系

10、表达式,表示比较的数学式 C关系表达式x10 x=10x10 x!=10x =10 x=10,用关系表达式描述条件 判断 x 是否为负数 x 0 判断 x 是否不为零 x != 0,19,2.3.3 if - else语句,if (表达式)语句1 else语句2,if(x = 15) y = 4 * x / 3; else y = 2.5 * x - 10.5;,20,计算二分段函数,if (表达式)语句1 else语句2,if(x != 0)y = 1/x; else y = 0;,21,源程序,#include int main(void) double x, y; printf(“Ent

11、er x:n“);scanf(“%lf“, ,22,input x: 2.5 f(2.50)=0.4,input x: 0 f(0.00)=0.0,软件测试的基本思想,软件测试 精心设计一批测试用例 输入数据,预期输出结果 ,然后分别用这些测试用例运行程序,看程序的实际运行结果与预期输出结果是否一致。,input x: 2.5 f(2.50)=0.4,input x: 0 f(0.00)=0.0,if(x != 0)y = 1/x; else y = 0;,if(x = 15)y = 4 * x / 3; else y = 2.5 * x - 10.5;,Enter x (x=0): 9.5

12、f(9.500000)=12.67,Enter x (x=0): 15 f(15.000000)=20.00,Enter x (x=0): 21.3 f(21.300000)=42.75,23,2.3.4 格式化输入函数scanf,数据输入:格式化输入函数 scanf#include scanf(“%lf“, ,用双引号括起来,表示输入的格式,变量地址,24,scanf格式控制字符串,格式控制字符串: 格式控制说明: 按指定的格式输入数据, % 与数据类型有关 int型 :%d float型:%f double型:%lf 普通字符:原样输入 例如: scanf(“%lf“, ,输入: 9.5,

13、scanf(“x=%lf“, ,输入: x=9.5,尽量不要出现普通字符,25,2.3.5 常用数学库函数,库函数 C语言处理系统提供事先编好的函数,供用户在编程时调用。scanf(), printf(), exp() 在相应的系统文件(头文件)中定义一些必需的信息。 #include命令 用户调用库函数时,将相应的头文件包含到源程序中。 例如 调用scanf, printf,需要 #include 调用sqrt,需要 #include ,26,常用数学库函数,平方根函数 sqrt(x) 绝对值函数 fabs(x) fabs(-3.56) 的值为3.56 幂函数 pow(x, n) :xn p

14、ow(1.1, 2) 的值为1.21(即1.12) 指数函数 exp(x):ex exp(2.3) 的值为e2.3 以e为底的对数函数 log(x):ln x log(123.45) 的值为4.815836 以10为底的对数函数 log10(x):log10x log10(123.45) 的值为2.091491。,27,例2-5 计算存款的本息,输入存款金额 money、存期 year 和年利率 rate,根据公式计算存款到期时的本息合计sum(税前),输出时保留2位小数。sum = money ( 1 + rate)year,sum = money * pow(1 + rate), year

15、),28,例2-5 程序,# include # include int main(void) int money, year;double rate, sum; printf(“Enter money:“); scanf(“%d“, ,Enter money: 1000 Enter year: 3 Enter rate: 0.025 sum = 1076.89,29,调用scanf函数输入多个数据,scanf(“%d%d%lf“, 程序运行时,输入的多个数据之间必须有间隔。,输入参数、格式控制说明、输入数据,30,2.4 输出华氏摄氏温度转换表,2.4.1 程序解析 2.4.2 for语句

16、2.4.3 指定次数的循环程序设计,31,2.4.1 程序解析,例2-6输入2个整数lower和 upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是lower, upper,每次增加1F。 fahr celsius30 -1.131 -0.632 0.033 0.634 1.135 1.7,32,2.4.1 程序解析-温度转换表,教材第28页源程序for (fahr = lower; fahr = upper; fahr +) celsius = (5.0 / 9.0) * (fahr - 32); printf(“%d %6.1fn“, fahr, celsius); ,Enter

17、 lower: 30 Enter upper: 35 fahr celsius30 -1.131 -0.632 0.033 0.634 1.135 1.7,33,for (fahr = lower; fahr = upper; fahr +) celsius = (5.0 / 9.0) * (fahr - 32); printf(“%d %6.1fn“, fahr, celsius); ,34,for(表达式1;表达式2;表达式3)循环体语句实现C语句的重复执行,2.4.2 for语句循环语句,3个表达式、循环体语句 !书写顺序和执行顺序不同 !表达式1只执行一次,35,for (fahr =

18、 lower; fahr = upper; fahr +) celsius = (5.0 / 9.0) * (fahr - 32.0); printf(“%d %6.1fn“, fahr, celsius); ,表达式1:给循环变量赋初值,指定循环的起点。 fahr = lower 初始化 表达式2:给出循环的条件,决定循环的继续或结束。 fahr = upper 条件判断 表达式3:设置循环的步长,改变循环变量的值,从而可改变表达式2的真假性。 fahr+ 控制改变 语句:被反复执行的语句,一条语句。 主要任务,for语句的说明,36,求 1+2+100 抽取具有共性的算式:sum = su

19、m + isum初值为0,该算式重复100次,i从1变到100设i为循环变量,则: 指定循环起点的表达式1:i = 1 给出循环条件的表达式2:i = 100 设置循环步长的表达式3:i+ 循环体语句:sum = sum + i;for(i=1; i=100; i+) sum =sum+i;,2.4.3 指定次数的循环程序设计,37,/* 计算1 + 2 + 3 + + 100 */ #include int main(void) int i, sum;sum = 0; /* 置累加和sum的初值为0 */for ( i = 1; i = 100; i+ ) /* 循环重复100次 */sum

20、 = sum + i; /* 反复累加 */printf( “sum = %dn”, sum); /* 输出累加和 */return 0; ,源程序求 1+2+100,38,一般包含四个部分: 初始化:指定循环起点 给循环变量赋初值,如i = 1; 进入循环之前,设置相关变量的初值,如sum = 0。 条件控制: 只要i 100,循环结束。,指定次数的循环程序设计,39,#include int main(void) int i, sum;printf(“Enter n: “);scanf(“%d“, ,例2-7 求 1+2+3+n,40,sum = 0 ;for ( i = 1; i = n

21、; i+ ) item = 1.0 / (2 * i - 1); /* 计算第i项的值 */sum = sum + item ; /* 累加第i项的值 */,求前n项之和: 1+1/3+1/5+,41,double item, sum;,例2-8 求 1-1/3+1/5- 的前n项和,42,sum = 0 ; flag = 1;for ( i = 1; i = n; i+ ) item = 1.0 / (2 * i - 1); /* 计算第i项的值 */sum = sum + flag* item ; /* 累加第i项的值 */flag = - flag; /* 改变符号 */,int i,

22、product;product = 1; for (i = 1; i = n ; i+)product = product * i;,例2-9 求n! = 1*2*n,43,#include int main(void) int i, n;double product;printf(“input n: n“);scanf (“%d“, ,例2-9 源程序,44,#include int main(void) int i, n;double x, power ;printf(“Enter x, n: n“);scanf (“%lf%d“, ,求 xn,45,2.5 生成乘方表和阶乘表,2.5.1

23、 程序解析 2.5.2 结构化程序设计思想,46,2.5.1 程序解析,例2-10(1) 输入一个正整数n,生成一张2的乘方表,输出20到2n的值,可以调用幂函数计算2的乘方。,for (i = 0; i = n ; i+) power = pow(2, i); /*调用幂函数pow(2,i)计算2的i次方*/输出power的值; ,47,源程序生成乘方表,#include #include int main(void) int i, n;double power;printf(“Enter n:“); scanf(“%d“, ,Enter n: 4 pow(2,0)= 1 pow(2,1)=

24、 2 pow(2,2)= 4 pow(2,3)= 8 pow(2,4)= 16,48,例2-10(2)生成阶乘表,输入一个正整数n,生成一张阶乘表,输出0!到n!的值。要求定义和调用函数fact(n)计算n!,函数类型是double。,for (i = 0; i = n ; i+)product = fact(i); /* 调用自定义函数fact(i)计算i! */输出product的值; ,49,double fact(int n) /* 函数首部 */ int i; double product; product = 1; for (i = 1; i = n; i+) product =

25、product * i;return product; /* 将结果回送主函数 */ ,2.5.2 结构化程序设计思想,结构化程序设计(Structured Programming) 程序设计技术 C语言是结构化程序设计语言 强调程序设计的风格和程序结构的规范化,提倡清晰的结构,其基本思路是将一个复杂问题的求解过程划分为若干阶段,每个阶段要处理的问题都容易被理解和处理。 按自顶向下的方法对问题进行分析、模块化设计和结构化编码等3个步骤。,50,自顶向下的分析方法,把大的复杂的问题分解成小问题后再解决 面对一个复杂的问题,首先进行上层(整体)的分析,按组织或功能将问题分解成子问题,如果子问题仍然

26、十分复杂,再做进一步分解,直到处理对象相对简单,容易处理为止。 当所有的子问题都得到了解决,整个问题也就解决了。 每一次分解都是对上一层的问题进行细化和逐步求精,最终形成一种类似树形的层次结构,来描述分析的结果。,51,学生成绩统计程序,学生成绩统计程序的层次结构图,52,模块化设计,将模块组织成良好的层次系统,顶层模块调用其下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能。 遵循模块独立性的原则,即模块之间的联系应尽量简单。 一个模块只完成一个指定的功能。 模块之间只通过参数进行调用。 一个模块只有一个入口和一个出口。 模块内慎用全局变量。,53,结构化编码,选用顺序、选择和循环三种控制结构,使程序具有良好的风格。 对变量、函数、常量等命名时,要见名知意,有助于对变量含义或函数功能的理解。 在程序中增加必要的注释,增加程序的可读性。 程序要清晰易懂,语句构造要简单直接,一行写一条语句,采用缩进格式。! 程序有良好的交互性,输入有提示,输出有说明,并尽量采用统一整齐的格式。,54,本章要点,输入输出函数printf, scanf 变量定义、使用、赋值 算术运算怎样使用 if 语句 怎样使用 for 语句了解结构化程序设计思想,55,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报