版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章 用C 语言编写程序,2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100F 对应的摄氏温度 2.3 计算分段函数 2.4 输出华氏摄氏温度转换表 2.5 生成乘方表与阶乘表,本章要点,怎样编写程序,在屏幕上显示一些信息? 怎样编写程序,实现简单的数据处理,例如将华氏温度转换为摄氏温度? 怎样使用 if 语句计算分段函数? 怎样用 for 语句求 1+2+100? 如何定义和调用函数生成一张乘方表?,2.1在屏幕上显示”Hello world!”,#include int main() printf(Hello Worldn); return 0; ,以 # 开始的
2、语句称为预处理器指令,#include语句不是必需的,但是,如果程序有该语句,就必须将它放在程序的开始处,以.h为后缀的文件被称为头文件,可以是 C 程序中现成的标准库文件,也可以是自定义的库文件。,stdio.h文件中包含了有关输入输出语句的函数,main() 函数是 C 程序处理的起点。,main() 函数可以返回一个值,也可以不返回值。如果某个函数没有返回值,那么在它的前面有一个关键字 void,在函数定义的后面有一个左大括号,即 ,它表示函数的开始,后面是函数的主体,大括号也可以用于将语句块括起来,在函数定义的结尾处有一个右大括号,即 ,在屏幕上产生一行输出“Hello world”,
3、并换行(n),函数主体中的每个语句都以分号结束。,C 程序中的一个语句可以跨越多行,并且用分号通知编译器该语句已结束。,C 程序中的注释,#include void main() printf(Hello Worldn); ,/ 此程序用来打印Hello World,单行注释,C 程序可以包含注释,以便向读者作一般说明,编译器并不处理这些注释,/* 此程序由 编写 * 用来打印输出“Hello World”*/,多行注释,/* * 作者: 创建日期: 描述: * */ #include void main() ,注释,在程序中添加注释是一个好的编程习惯,可以增强程序的可读性。,模仿练习:,1、
4、在屏幕上显示 “This is my first C program!” 2、在屏幕上显示 Programming is fun. And Programming in C is even more fun! 3、在屏幕上显示 * * * * * * * * * *,#include main( ) int celsius, fahr; fahr=100; celsius=5*(fahr-32)/9; printf(“fahr=%d, celsius=%dn, fahr, celsius); ,执行程序的输出结果为: fahr=100, celsius=37,2.2求华氏温度100F对应的摄氏
5、温度,引号内的fahr和引号外的fahr有区别吗?,2.2.2 常量、变量和数据类型,int celsius, fahr; celsius = 5 * (fahr - 32) / 9; 数据 常量:在程序运行过程中,其值不能被改变 变量:在程序运行过程中,其值可以被改变 数据类型 常量:5 和 9是整型常量(整数) 变量:在定义时指定,程序,指令,常量,标识符 关键字 常量 运算符 分隔符 等,常量是在程序中保持不变的量,常量用于定义具有如下特点的数据: 在程序中保持不变 在程序内部频繁使用 需要用比较简单的方式替代某些值,变量,程序,编写程序时,常常需要将数据存储在内存中,方便后面使用这个数
6、据或者修改这个数据的值。,通常使用变量来存储数据。使用变量可以引用存储在内存中的数据,并随时根据需要显示数据或执行数据操纵。,存储 fahr,计算5 * (fahr - 32) / 9,将值存储为celsius,100,32,声明和使用变量,声明变量: int celsius, fahr; 定义时初始化变量: int celsius, fahr=100; 定义后初始化变量: fahr=100;,给变量赋值,除了给一个直接的值以外,还可以通过计算获得。 如: celsius=5*(fahr-32)/9;,变量命名,在 C 语言中,变量命名需要遵循一定的规则,有效名称,principal,cost
7、_price,marks_3,lastname,city,无效名称,123rate,currency$,discount%,zip code,变量的命名规则: 变量名可以由字母、数字和 _(下划线)组合而成 变量名不能包含除 _ 以外的任何特殊字符,如:%、# 、逗号、空格等 变量名必须以字母或 _(下划线)开头 变量名不能包含空白字符(换行符、空格和制表符称为空白字符) C 语言中的某些词(例如 int 和 float 等)称为保留字,具有特殊意义,不能用作变量名 C 语言区分大小写,因此变量 price 与变量 PRICE 是两个不同的变量,基本数据类型,数据属于不同类别,Africa,T
8、he quick brown fox,TRUE,数据,非数值,数值,整型,非整型,9002.12,999,9/12/2003,2.175,123,Jackie Chan,char,数据类型,非数值,数值,整型,int,short int,long int,double,float,非整型,算术运算和赋值运算,算术,一元,二元,操作数,操作数,运算符,二元运算符,+,-,*,/,%,算术运算注意,(1)整数除整数,得整数 如:1/2 0,9/4 2 思考: 5 * (fahr - 32) / 9 和 5 / 9 * (fahr - 32) 等价吗 (2)% 模运算,针对整型数据 如: 565,9
9、41,10040 (3)“*”乘号不能省略 5*a不能5a (4)双目运算符两侧操作数的类型要相同,赋值运算,赋值运算符 = 赋值表达式:用 = 将一个变量和一个表达式连接起来的式子 变量 表达式 例如: fahr = 100; celsius = 5 * (fahr - 32) / 9; 计算赋值运算符右侧表达式的值 将赋值运算符右侧表达式的值赋给左侧的变量,的左边必须是一个变量,printf 函数5-1,int visitor_count = 150; printf ( %d , visitor_count);,printf,将一些信息按照指定的格式送到标准输出(显示器), %d,visi
10、tor_count,将按指定的格式显示该变量的值,printf 函数5-2,int visitor_count = 150; printf ( %d , visitor_count);,输出结果:150,scanf(%d,scanf 函数,scanf 函数从标准输入(键盘)读取信息,按照格式描述把读入的信息转换为指定数据类型的数据,并把这些数据赋给指定的程序变量。,转换字符串, scanf ( %f , ,tax_rate,在内存中分配一块 32 位存储空间 存储空间使用名称“tax_rate”标识,提示用户输入一个值 输入的值存储在变量中(因为 scanf 提供此变量的地址),12.234,
11、#include void main() float radius,high,vol; printf(请输入圆柱体底面积的半径和圆柱体的高: ); scanf(%f%f, ,scanf 函数使用示例,5,10,785,请输入圆柱体底面积的半径和圆柱体的高: 5 10,周五上机作业:,P18页练习 P22 练习 1、从键盘读入两个整数数求他们的和差积商,注意1/2的商是多少。 2、从键盘读入华氏温度,输出摄氏温度 3、从键盘读入半径,输出圆的周长和面积(注意用float定义,用%f输入输出),2.3 计算分段函数,2.3.1 程序解析 2.3.2 关系运算 2.3.3 if-else语句 2.3
12、.4 格式化输入函数scanf 2.3.5 常用数学库函数,2.3.1 程序解析,例2-4 分段计算水费 要解决的问题: 输入 计算分段函数 输出,并保留2位小数 求ex,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.30000
13、0)=42.75,2.3.2 关系运算,x y x = y x != y 关系表达式:用关系运算符将2个表达式连接起来的式子。 如:x = 1,区分= 和=,运用关系表达式,表示比较的数学式 C关系表达式 x10 x10 x10 x = 10,x = 10 x != 10 x = 10,用关系表达式描述条件 判断 x 是否为负数 x 0 判断 x 是否不为零 x != 0,2.3.3 if - else语句,if (表达式) 语句1 else 语句2,if(x = 15) y = 4 * x / 3; else y = 2.5 * x - 10.5;,计算二分段函数,if (表达式) 语句1
14、else 语句2,if(x != 0) y = 1/x; else y = 0;,源程序,#include int main(void) double x, y; printf(Enter x:n); scanf(%lf, ,#include /*例2-4 */ int main(void) double x, y; printf(Enter x (x=0):n); scanf(%lf, ,运行结果,#include int main(void) double x, y; printf(Enter x:n); scanf(%lf, ,input x: 2.5 f(2.50)=0.4,input
15、 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 f(9.500000)=12.67,Enter x (x=0): 15 f(15.000000)=20.00
16、,Enter x (x=0): 21.3 f(21.300000)=42.75,2.3.4 格式化输入函数scanf,数据输入:格式化输入函数 scanf #include scanf(%lf, ,用双引号括起来,表示输入的格式,变量地址,scanf格式控制字符串,格式控制字符串: 格式控制说明: 按指定的格式输入数据, % 与数据类型有关 int型 :%d float型:%f double型:%lf 普通字符:原样输入 例如: scanf(%lf, ,输入: 9.5,scanf(x=%lf, ,输入: x=9.5,尽量不要出现普通字符,改进例2-3的程序,例2-3 求华氏温度 100F 对应
17、的摄氏温度。 摄氏温度 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, celsius); return 0; ,scanf(%d, ,printf(“Enter fahr: n);,Enter fahr: 100 fahr =100, celsius = 37,2.3.5 常用数学库函数,库函数 C语言处理系统提供事先编好的函数,供用户在编程时调用。scanf(),
18、 printf(), exp() 在相应的系统文件(头文件)中定义一些必需的信息。 #include命令 用户调用库函数时,将相应的头文件包含到源程序中。 例如 调用scanf, printf,需要 #include 调用sqrt,需要 #include ,常用数学库函数,平方根函数 sqrt(x) 绝对值函数 fabs(x) fabs(-3.56) 的值为3.56 幂函数 pow(x, n) :xn pow(1.1, 2) 的值为1.21(即1.12) 指数函数 exp(x):ex exp(2.3) 的值为e2.3 以e为底的对数函数 log(x):ln x log(123.45) 的值为4
19、.815836 以10为底的对数函数 log10(x):log10 x log10(123.45) 的值为2.091491。,例2-5 计算存款的本息,输入存款金额 money、存期 year 和年利率 rate,根据公式计算存款到期时的本息合计sum(税前),输出时保留2位小数。 sum = money ( 1 + rate)year,sum = money * pow(1 + rate), year),例2-5 程序,# include # include int main(void) int money, year; double rate, sum; printf(“Enter mon
20、ey:); scanf(%d, ,Enter money: 1000 Enter year: 3 Enter rate: 0.025 sum = 1076.89,scanf(%d%d%lf, ,调用scanf函数输入多个数据,scanf(%d%d%lf, 程序运行时,输入的多个数据之间必须有间隔。,scanf(%d%lf%d , 如何输入?,输入参数、格式控制说明、输入数据,课堂练习,1、输入一个实数x, 输出其绝对值 2、输入一个整数n,判断n的奇偶性,若n为偶数,输出“偶数”,否则输出“奇数” 3、输入三角形的三个边长,求三角形面积,思考题,输入一个整数n,输出n的位数,2.4 输出华氏摄
21、氏温度转换表,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,2.4.1 程序解析-温度转换表,#include int main(void) int fahr, lower, upper; double celsius; printf(Enter lower:); scanf(%d, ,fa
22、hr = fahr+1,Enter lower: 30 Enter upper: 35 fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7,例2-8中for语句的流程,for (fahr = lower; fahr = upper; fahr +) celsius = (5.0 / 9.0) * (fahr - 32); printf(%d %6.1fn, fahr, celsius); ,fahr = fahr+1 输出?,Enter lower: 30 Enter upper: 35 fahr celsius 30 -1.1 3
23、1 -0.6 32 0.0 33 0.6 34 1.1 35 1.7,for(表达式1;表达式2;表达式3) 循环体语句 实现C语句的重复执行,2.4.2 for语句循环语句,3个表达式、循环体语句 !书写顺序和执行顺序不同 !表达式1只执行一次,循环(控制)变量:for语句中,通过改变或判断某个变量的值来控制循环的执行 for (fahr = lower; fahr = upper; fahr +) celsius = (5.0 / 9.0) * (fahr - 32.0); printf(%d %6.1fn, fahr, celsius); ,for语句中的循环变量,赋初值,判断其值,改变
24、其值,for (fahr = 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语句的说明,for (fahr = lower; fahr = upper; fahr
25、+) celsius = (5.0 / 9.0) * (fahr - 32.0); printf(%d %6.1fn, fahr, celsius); ,for (fahr = lower ; fahr = upper; fahr = fahr + 1) celsius = (5.0 / 9.0) * (fahr - 32.0); printf(%d %6.1fn, fahr, celsius);,复合语句 和空语句 ;,for (fahr = lower ; fahr = upper; fahr = fahr + 1); celsius = (5.0 / 9.0) * (fahr - 32.
26、0); printf(%d %6.1fn, fahr, celsius);,!不要在for语句中随意加分号,求 1+2+100 抽取具有共性的算式:sum = sum + i sum初值为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 指定次数的循环程序设计,/* 计算1 + 2 + 3 + + 100 */ #include int main(void)
27、int i, sum; sum = 0; /* 置累加和sum的初值为0 */ for ( i = 1; i = 100; i+ ) /* 循环重复100次 */ sum = sum + i; /* 反复累加 */ printf( “sum = %dn”, sum); /* 输出累加和 */ return 0; ,源程序求 1+2+100,for(i=1; i=100; i+) sum=0; sum=sum+i; ,sum=5050,#include int main(void) int i, sum; sum = 0; for ( i = 1; i = 100; i+ ) sum = sum
28、 + i; printf( “sum = %dn”, sum); return 0; ,求 1+1/2+1/3+ 1/100,for(i=1; i=100; i+) sum=sum+1.0/i;,int i; double sum;,printf( “sum = %fn”, sum);,一般包含四个部分: 初始化:指定循环起点 给循环变量赋初值,如i = 1; 进入循环之前,设置相关变量的初值,如sum = 0。 条件控制: 只要i 100,循环结束。,指定次数的循环程序设计,输入一个正整数n,求前n项和,即循环n次 #include int main(void) int i, sum; su
29、m = 0; for ( i = 1; i = 100; i+ ) sum = sum + i; printf( “sum = %dn”, sum); return 0; ,例2-7 求 1+2+3+n,for(i=1; i=n; i+) sum=sum+i;,printf(“Enter n:); scanf(%d, ,Enter n: 100 Sum = 5050,#include int main(void) int i, sum; printf(“Enter n: ); scanf(%d, ,求1+1/2+1/3+ 1/n,#include int main(void) int i; d
30、ouble sum; printf(“Enter n: ); scanf(%d, ,求前n项和,即循环n次,每次累加1项。 for (i = 1; i = n ; i+) sum = sum + item (第i项) 问题是第i项item如何计算(考虑与i的关系): item = 1.0 / (2 * i - 1),求 1+1/3+1/5+ 的前n项和思路一,for (i = 1; i = n ; i+) item = 1.0 / (2 * i - 1);/* 计算第i项的值 */ sum = sum + item;/* 累加第i项的值 */ ,求前n项和,即循环n次,每次累加1项。 for
31、(i = 1; i = n ; i+) sum = sum + item (第i项) 问题是第i项item如何计算:分母总是比前一项大2,求 1+1/3+1/5+ 的前n项和思路二,denominator=1; for (i = 1; i = n ; i+) item=1.0/denominator; /*计算第i项的值 */ sum = sum + item;/* 累加第i项的值 */ denominator=denominator+2; /*计算下一项的分母 */ ,#include int main(void) int i, n; double item, sum; printf(“En
32、ter n: ); scanf (%d, ,源程序求 1+1/3+1/5+,求前n项和,即循环n次,每次累加1项。 for (i = 1; i = n ; i+) sum = sum + item (第i项) 关键是第i项item的计算: 符号和前一项相反,分母比前一项大2 denominator = denominator + 2 flag = -flag item = flag * 1.0 / denominator,例2-8 求 1-1/3+1/5- 的前n项和,denominator=1; flag=1; for (i = 1; i = n ; i+) item=flag*1.0/de
33、nominator; /*计算第i项的值 */ sum = sum + item;/* 累加第i项的值 */ denominator=denominator+2; /*计算下一项的分母 */ flag=-flag; /计算下一项的符号 ,flag=1; for (i = 1; i = n ; i+) item=flag*1.0/(2*i-1); /*计算第i项的值 */ sum = sum + item;/* 累加第i项的值 */ flag=-flag; /计算下一项的符号 ,#include int main(void) int denominator, flag, i, n; double
34、 item, sum; printf(“Enter n: ); scanf (%d, ,例2-8 源程序,n! = 1*2*n for (i = 1; i = n ; i+) product = product * item (第i项) item=i,例2-9 求n!,product=1; for (i = 1; i = n ; i+) product=product*i; ,#include int main(void) int i, n; double product; printf(input n: n); scanf (%d, ,例2-9 源程序,输入实数x和正整数n, 计算xn =
35、x * x * * x for (i = 1; i = n ; i+) power = power * x (第i项),求 xn,#include int main(void) int i, n; double x, power ; printf(“Enter x, n: n); scanf (%lf%d, ,源程序求 xn,2.5 生成乘方表和阶乘表,2.5.1 程序解析 2.5.2 结构化程序设计思想,2.5.1 程序解析,例2-10(1) 输入一个正整数n,生成一张2的乘方表,输出20到2n的值,可以调用幂函数计算2的乘方。,Enter n: 4 pow(2,0)= 1 pow(2,1)
36、= 2 pow(2,2)= 4 pow(2,3)= 8 pow(2,4)= 16,解题思路:,for (i = 0; i = n ; i+) /调用幂函数pow(2,i)计算2的i次方 power = pow(2, i); 输出power的值; ,for (i = 0; i = n ; i+) /调用幂函数pow(2,i)计算2的i次方 power = pow(2, i); printf(“pow(2,%d)=%dn”, i, power); ,源程序生成乘方表,#include #include int main(void) int i, n; double power; printf(En
37、ter n:); scanf(%d, ,Enter n: 4 pow(2,0)= 1 pow(2,1)= 2 pow(2,2)= 4 pow(2,3)= 8 pow(2,4)= 16,例2-10(2)生成阶乘表,输入一个正整数n,生成一张阶乘表,输出0!到n!的值。要求定义和调用函数fact(n)计算n!,函数类型是double。,for (i = 0; i = n ; i+) product = fact(i); /* 调用自定义函数fact(i)计算i! */ 输出product的值; ,for (i = 0; i = n ; i+) power = pow(2, i); /调用幂函数pow(2,i)计算2的i次方 输出power的值; ,阶乘函数fact()的功能实现,double fact(int n)/形参n的值由调用它的函数确定 int i; double factor=1; for (i = 0; i = n; i+) factor=factor*i; return factor; ,源程序生成阶乘表,#include double fact(int n); /* 自定义函数的声明 */ int ma
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 烟酒店联合采购制度
- 牛奶定期采购制度
- 物业绿色采购制度
- 物品采购程序及制度
- 物流采购托盘管理制度
- 物资采购互查制度模板
- 物资采购备案制度
- 物资采购黑名单制度
- 环卫局采购管理制度
- 瓶坯采购质量控制制度
- 儿科学第九版新生儿黄疸课件
- 成人气管切开拔管中国专家共识解读
- 电梯困人救援培训
- 儿童抑郁情绪自评量表(DSRSC)
- 裁剪验片记录表
- 域虎7汽车使用说明书
- LY/T 2986-2018流动沙地沙障设置技术规程
- 发展经济学 马工程课件 3.第三章 中国特色社会主义经济发展理论
- GB/T 28202-2020家具工业术语
- GB/T 12672-2009丙烯腈-丁二烯-苯乙烯(ABS)树脂
- 2023年煤矿安全生产管理人员考试题库
评论
0/150
提交评论