第2章 简单C语言程序设计.ppt

上传人:qwe****56 文档编号:70106321 上传时间:2023-01-16 格式:PPT 页数:74 大小:1.29MB
返回 下载 相关 举报
第2章 简单C语言程序设计.ppt_第1页
第1页 / 共74页
第2章 简单C语言程序设计.ppt_第2页
第2页 / 共74页
点击查看更多>>
资源描述

《第2章 简单C语言程序设计.ppt》由会员分享,可在线阅读,更多相关《第2章 简单C语言程序设计.ppt(74页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第第2章章 简单简单C程序设计程序设计 2回顾回顾v程序是为执行一项任务而编写的有序指令集程序是为执行一项任务而编写的有序指令集vC程序的程序的特点特点vC语言的语言的组成组成vC程序的编译和运行过程程序的编译和运行过程 编译器将源程序转换成机器能理解的程序编译器将源程序转换成机器能理解的程序 连接器用于连接相关的目标文件以生成可执行程连接器用于连接相关的目标文件以生成可执行程序序3本章要点本章要点C语言的数据类型、运算符语言的数据类型、运算符C语言的常量和变量语言的常量和变量C语言的表达式语言的表达式常用数学函数常用数学函数4#include int main()int celsius,fa

2、hr;fahr=100;celsius=5*(fahr-32)/9;printf(“fahr=%d,celsius=%dn“,fahr,celsius);执行程序的输出结果为:执行程序的输出结果为:fahr=100,celsius=372.1 温度转换温度转换例例2.1 求华氏温度求华氏温度100F对应的摄氏温度对应的摄氏温度52.1.1 内存v内存可以理解为一排井然有序的小开关,每个开关有内存可以理解为一排井然有序的小开关,每个开关有两个状态:开表示两个状态:开表示1,断表示,断表示0,所以每个开关表示一,所以每个开关表示一个二进制数,个二进制数,0或或1,称为一个,称为一个位(位(bit)

3、.v为管理方便,为管理方便,8个位为一组,称为一个个位为一组,称为一个字节(字节(byte)v然后为所有字节从然后为所有字节从0开始编号,这个编号称为字节的开始编号,这个编号称为字节的地址地址v2的的10次方次方(1024)个字节称为个字节称为1kv2的的20次方次方(1048576)个字节称为)个字节称为1Mv2的的30次方次方(1073741824)个字节称为)个字节称为1G62.1.2 变量int celsius,fahr;celsius=5*(fahr-32)/9;v变量是计算机里一块变量是计算机里一块特定的内存特定的内存,它由一个或多个连续的,它由一个或多个连续的字节组成。字节组成。

4、v每个变量都有一个名称,表示内存中的这个位置,以便通每个变量都有一个名称,表示内存中的这个位置,以便通过变量名过变量名读取读取该位置的数据或该位置的数据或存储存储一个新数值。一个新数值。v变量的值不是固定的,随时都可以改变,且次数不限。变量的值不是固定的,随时都可以改变,且次数不限。7编写程序时,通常使用变量来存储数据,方便后面使用这个数据或者修改这个数据的值。变量变量程序内存存储 fahr计算5*(fahr-32)/9将值存储为celsius10032输出fahr和celsius8内存变量用来存储数据,系统需要知道每个变量要存储什么类型的数据,然后为每个变量分配一块足够大的内存空间,用来该类

5、型的数据2.1.3 数据类型数据类型数据属于不同类别AfricaThe quick brown foxTRUE数据 非数值数值整型非整型9002.129999/12/20032.175123Jackie Chanchar数据类型非数值数值整型intshort intlong intdoublefloat非整型9整型变量类型整型变量类型 short int 2个字节个字节-2-15至215-1,-32768至+32767整数变量还分为几种不同的类型,以存储不同范围的整数 int 4个字节个字节-2-31至231-1,-2147438648至+2147438647 long int 4个字节个字节

6、-2-31至至231-1,-2147438648至至+2147438647_int64long long int8个字节个字节-2-63 至 263-11、数据类型所占字节数,取决于所使用的编译器2、shortint可以简写为short,long int可以简写为可以简写为long3、不同编译器对64位的支持不同,在VC中只支持_int64,gcc/g+支持longlong,windows平台的gcc/g+也支持_int6410无符号的整数类型无符号的整数类型 unsigned short int 2个字节个字节0至216-1,0至+65535 unsignedint 4个字节个字节0至232

7、-1,0至+4294967295 unsignedlong int 4个字节个字节0至232-1,0至+4294967295unsigned_int64unsignedlong long int8个字节个字节0至264-1,0至至18445744073709551615当处理不能为负的数据时,可以使用无符号类型,所占内存与有符号型相同,但对正数的表示范围比有符号型大一倍112.1.4 变量的声明和使用变量的声明和使用v声明变量:声明变量:int celsius,fahr;v定义时初始化变量:定义时初始化变量:int celsius,fahr=100;v定义后初始化变量:定义后初始化变量:fah

8、r=100;。v给变量赋值,除了给一个直接的值以外,还给变量赋值,除了给一个直接的值以外,还可以通过计算获得如:可以通过计算获得如:celsius=5*(fahr-32)/9;12变量的命名规则变量的命名规则在 C 语言中,变量命名需要遵循一定的规则有效名称有效名称principalcost_pricemarks_3lastnamecity无效名称无效名称123ratecurrency$discount%zip codev变量的命名规则:变量的命名规则:n变量名可以由字母、数字和 _(下划线)组合而成n变量名不能包含除 _ 以外的任何特殊字符,如:%、#、逗号、空格等n变量名必须以字母或 _(

9、下划线)开头n变量名不能包含空白字符(换行符、空格和制表符称为空白字符)nC 语言中的某些词(例如 int 和 float 等)称为保留字,具有特殊意义,不能用作变量名nC 语言区分大小写,因此变量 price 与变量 PRICE 是两个不同的变量132.1.5 赋值运算赋值运算v赋值运算符赋值运算符 =v赋值表达式:用赋值表达式:用=将一个将一个变量变量和一个和一个表达式表达式连接连接起来的式子起来的式子 变量 表达式例如:例如:fahr=100;celsius=5*(fahr-32)/9;n计算计算赋值运算符右侧表达式的值赋值运算符右侧表达式的值n将赋值运算符右侧表达式的值将赋值运算符右侧

10、表达式的值赋给赋给左侧的变量左侧的变量 的左边必须是一个变量的左边必须是一个变量14分析错误程序分析错误程序/求两个整数的和#includeintmain()inta,b,sum;sum=a+b;a=3;b=5;printf(%dn,sum);return0;该程序为何得不到正确结果?错误原因是受数学思维的影响,吴以为sum=a+b;是建立sum和a+b之间的一个等量关系 赋值运算“=”表示的是一个动作:先计算表达式的值,再存入赋值号左边的变量中,既不表示数学中的等量代换,也不表示相等关系执行sum=a+b;语句是,因为a和b中的值都不确定,是随机的,所以其和也是随机的,然后把这个数赋给了su

11、m该程序为何得不到正确结果?152.1.6 格式化输出函数格式化输出函数printfprintf(%d,count);printf将一些信息按照指定的格式送到标准输出(显示器)count输出参数表:待输出的数据,可以是常量、变量或表达式格式:printf(“格式控制串格式控制串”,输出输出参数参数表表)%d 格式字符串:指定数据的输出格式16输出格式输出格式printf(“fahr=%d,celsius=%dn,fahr,celsius);普通字符,原样输出%开头的是转换说明,对应与后面一个输出参数,对应参数将被转换成指定格式后在该位置输出输出结果:fahr=100,celsius=37输出参

12、数列表n是转意字符,用来输出一个回车17转换字符串转换字符串printf(%d,count);%d 转换字符串说 明%d将参数按整数形式转换输出,对应参数应是将参数按整数形式转换输出,对应参数应是int 类型类型%ld将参数按长整数形式转换输出将参数按长整数形式转换输出,对应参数是对应参数是long型型%c输出一个字符,对应参数应该是一个字符输出一个字符,对应参数应该是一个字符%s输出一个字符串,对应参数应该是一个字符串输出一个字符串,对应参数应该是一个字符串%f将参数按带小数点数形式输出,将参数按带小数点数形式输出,对应参数应是对应参数应是double 类类型,默认情况下精确到型,默认情况下

13、精确到 6 位小数位小数18转换字符串转换字符串%dint visitor_count=150;printf(%d,visitor_count);输出结果:15019转换字符串转换字符串%mdint salary=5500;printf(%10d,salary);输出结果:5500输出结果的左边显示了 6 个空格%10d 数据以十进制整数格式输出,宽度占m列,数据不足m列左补空格,超过m列按实际位数输出。20转换字符串转换字符串%-mdint salary=5500;printf(%10d,salary);输出结果:5500输出结果的右边显示了 6 个空格%-10d 数据以十进制整数格式输出,

14、宽度占m列,数据不足m列右补空格,超过m列按实际位数输出。21课堂练习课堂练习:输出整数幂输出整数幂已知已知m=11,n=41,m=11,n=41,输出输出m m和和n n的的2 2次方、次方、3 3次方和次方和4 4次方,要次方,要求每个数据占求每个数据占8 8列,左对齐。效果如下:列,左对齐。效果如下:121 1331 14641 121 1331 14641 1681 68921 2825761 1681 68921 2825761 222.2:使用浮点数进行温度转换:使用浮点数进行温度转换v例例2.22.2:例:例2.12.1中程序的运行结果并不令人满意,因中程序的运行结果并不令人满意

15、,因为华氏温度为华氏温度100100,对应的摄氏温度应该为,对应的摄氏温度应该为37.777737.7777,而不应该是,而不应该是3737。需要使用浮点型变量来存储带小数点的数,我们需要将celsius,fahr声明为双精度浮点型声明为双精度浮点型#include int main()double celsius,fahr;/声明两个双精度浮点型变量声明两个双精度浮点型变量 fahr=100.0;/赋值运算赋值运算 celsius=5*(fahr-32)/9;/计算摄氏温度,并存入变量计算摄氏温度,并存入变量celsius printf(fahr=%f,celsius=%fn,fahr,ce

16、lsius);232.2.1 浮点变量类型浮点变量类型 浮点数在计算机中的表示,基于指数表示法,将分为指数和尾数来存储。浮点变量根据数据表示范围和精确度不同,有一下几种类型float4个字节个字节(+/-)3.4E38,6位有效数字浮点变量用来存储浮点数,浮点数包含的值带小数点,也可以表示分数和整数。double8个字节个字节(+/-)1.7E308,15位有效数字课外作业:查阅资料,了解浮点数是如何存储的Long double12个字节个字节(+/-)1.19E4932,18位有效数字24注意有效位数的不同注意有效位数的不同内存内存floatdouble213.5671435568967 6

17、4位位取值范围:10-308 至 1030816 位有效数字nflaot f_level=213.5671435568967;ndouble d_level=213.5671435568967;去VC下试试!25转换字符串转换字符串%ffloat circumference=78.53;printf(%f,circumference);输出结果:78.530000默认情况下精确到六位小数9.4786789;9.4786792.2.2 浮点数据的输出浮点数据的输出 26double mercury_level=168.2251074;printf(%7.2f,mercury_level);输出结

18、果:168.23宽度,表示所有的数字和小数点所占的位数。不够7位右对齐。%7.2f 精度(精确到小数点后多少位)转换字符串转换字符串%m.nf2.2.2 浮点数据的输出浮点数据的输出 27程序程序指令指令2.2.3 常量常量标识符标识符关键字关键字常量常量运算符运算符分隔符分隔符等等常量是在程序中保持不变的量,分为:立即数符号常量(宏常量)const 常量立即数立即数v整型常量:整型常量:如如32、100v实型常量实型常量:如如1.23 123.567e5v字符常量字符常量:a、2、nv字符串常量:字符串常量:“c program”28定义常量定义常量v为使程序易于阅读和便于修改,可以给程序中

19、经常使用的常量定义一个有一定含义的名字。常量用于定义具有如下特点的数据:在程序中保持不变在程序内部频繁使用需要用比较简单的方式替代某些值防止意外的修改,增强程序的健壮性 29定义宏常量定义宏常量v#define PI 3.1415926编译预处理指令#define将PI定义成一个要被3.1415926取代的符号,此时PI不是一个变量,而是3.1415926的别名。在编译开始之前,只要在程序的表达式中引用PI,预处理器就会用#define指令中的值(3.1415926)来取代它。宏常量的缺点:宏常量被替换成立即数之后,内存中有同一个立即数的多份拷贝。30定义定义const常量常量v在定义变量时,

20、加上在定义变量时,加上const修饰,告诉编译器,修饰,告诉编译器,它的值是固定的,不能被改变。编译器会帮你检它的值是固定的,不能被改变。编译器会帮你检查、监督。查、监督。const double PI=3.1415926;const推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。在编译的时候,由于const定义常量只是给出了对应的内存地址,而不是象#define给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。31例例2.3 求圆柱体的体积求圆柱体的体积/求圆面积,圆周率用立即数求圆面积,圆周率用立

21、即数#include“stdio.h”int main()doulbe v,r,h;r=10.0;h=20.0;v=3.1415926 r*r*h;printf(“v=%fn”,v);return 0;/求圆面积,圆周率用宏常量求圆面积,圆周率用宏常量#include“stdio.h”#define PI 3.1415926int main()double v,r,h;r=10.0;h=20.0;v=PIr*r*h;printf(“v=%fn”,v);return 0;/求圆面积,圆周率用求圆面积,圆周率用const宏常量宏常量#include“stdio.h”const double PI=

22、3.1415926;int main()double v,r,h;r=10.0;h=20.0;v=PIr*r*h;printf(“v=%fn”,v);return 0;32模仿练习模仿练习v(1)编程,已知圆的半径)编程,已知圆的半径radius(实数),输实数),输出圆的面积出圆的面积,保留两位小数保留两位小数332.3:对任意华氏温度进行温度转换对任意华氏温度进行温度转换v例2.3:例2.2中的程序运行后只能输出华氏温度100F对应的摄氏温度,为提高程序地通用性,要求程序运行后等待键盘输入一个华氏温度(实数),程序输出其对应的摄氏温度。/读入一个华氏温度,输出其对应的摄氏温度读入一个华氏温

23、度,输出其对应的摄氏温度#include int main()double celsius,fahr;/声明两个双精度浮点型变量声明两个双精度浮点型变量 scanf(%lf,&fahr);/等待用户输入一个数,存入等待用户输入一个数,存入fahr celsius=5*(fahr-32)/9;/计算摄氏温度,并存入变量计算摄氏温度,并存入变量celsius printf(fahr=%f,celsius=%fn,fahr,celsius);34scanf(“%d”,&a);2.3.1 scanf()函数函数scanf 函数从标准输入(键盘)读取信息,按照格式描述把读入的信息转换为指定数据类型的数据

24、,并把这些数据赋给指定的内存区域中。转换字符串&符号(附在读取的每个变量上)用于指明变量在内存中的位置变量的名称35scanf()函数的格式函数的格式scanf(格式控制字符串,内存地址1,内存地址2,内存地址n)scanf(“%d”,&a);(1)%d为格式转换符,每个格式转换符对应后面一个内存地址。(2)scanf将读入数据,按指定格式理解该输入,然后存入对应内存地址363.1.2 格式转换符格式转换符格式转换符参数变量的类型要求的实际输入%dint 十进制整数十进制整数%f float 十进制数实数十进制数实数%lf double十进制数实数十进制数实数格式控制字符串:格式控制字符串:(

25、1)由一对双引号括起来)由一对双引号括起来(2)可以包含)可以包含格式转换符格式转换符和和普通字符普通字符格式转换符以%开头,不同类型的数据,采用不同的格式转换符,目前常用的转换符见下表:37内存用用scanf()读入整形数据读入整形数据int num;scanf(%d,&num);num在内存中分配一块 32 位存储空间存储空间使用名称“num”标识等待用户输入一个值将输入的值按十进制整数来理解,然后内存中(因为 scanf 提供了num的内存地址)12338内存用用scanf()读入单精度浮点数据读入单精度浮点数据float tax_rate;scanf(%f,&tax_rate);tax

26、_rate在内存中分配一块 32 位存储空间存储空间使用名称“tax_rate”标识等待用户输入一个值将输入的值按十进制单精度实数来理解,然后内存中(因为 scanf 提供了tax_rate的内存地址)12.23439内存double tax_rate;scanf(%lf,&tax_rate);tax_rate在内存中分配一块 64 位存储空间存储空间使用名称“tax_rate”标识等待用户输入一个值将输入的值按十进制双精度实数来理解,然后内存中(因为 scanf 提供了tax_rate的内存地址)12.234约定:以后凡说要定义实型变量,都使用double用用scanf()读入双精度浮点数据

27、读入双精度浮点数据403.1.3格式控制字符串中的普通字符格式控制字符串中的普通字符vscanf(格式字符串,地址列表格式字符串,地址列表)在格式字符串中若有普通字符,则输入时在对应位置也必须在格式字符串中若有普通字符,则输入时在对应位置也必须输入该普通字符,否则会因读入格式错误而终止程序。输入该普通字符,否则会因读入格式错误而终止程序。如果有如果有scanf(“%d,%d”,&a,&b)输入的两个数直接必须有一个逗号输入的两个数直接必须有一个逗号3,5 正确正确3 5 错误错误如果有如果有scanf(“a=%d,b=%d”,&a,&b)输入应该是输入应该是:a=3,b=5,否则就会失败,否则

28、就会失败scanf的格式字符串中最好不加任何普通字符,只写%开头的格式转换符。如scanf(“%d%d”,&a,&b)不要给自己制造输入格式限制!41课堂练习课堂练习1、读入两个整数,输出它们的和、读入两个整数,输出它们的和2、读入两个实数,输出它们的平均值,结果保留、读入两个实数,输出它们的平均值,结果保留两位小数。两位小数。42常见错误分析常见错误分析1/两个整数的运算#includeintmain()intm,n;scanf(%d,%d,&m,&n);printf(%d,m+n);return0;输入85输出结果是错误的若输入8,5,则运行结果正确scanf中的格式字符串中若有普通字符,

29、则输入时在对应位置也必须输入该普通字符分析如下程序错误的原因分析如下程序错误的原因43常见错误分析常见错误分析2/输入半径,输出面积#include#definePI3.1415926intmain()doublea,b;scanf(%d%d,&a,&b);s=PI*r*r;printf(s=%.2fn,s);return0;输入:35输出结果错误错误原因:因a,b是double类型的变量,故scanf的格式转换符应该是%lf分析如下程序错误的原因%lf%lf442.4 整数的运算整数的运算例例2.4 分糖果,老师有n个糖果,要分给m个小朋友分糖果,n和m由键盘输入,输出每个小朋友分几个,老师

30、还剩余几个。/程序2.4:整数运算#includeintmain()intcandies,kids;scanf(%d%d,&candies,&kids);printf(每人分%d个n,candies/kids);printf(剩余%d个n,candies%kids);return0;452.4.1 算术运算算术运算C运算符算术运算符:(+-*/%+-)关系运算符:(=!=)逻辑运算符:(!&|)位运算符 :(|&)赋值运算符:(=及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(*&)求字节数 :(sizeof)强制类型转换:(类型)分量运算符:(.-)下标运算符:()其它 :((

31、)-)46算术运算算术运算算术 一元一元 二元二元操作数操作数运算符47算术运算注意算术运算注意(1)整数除整数,得整数整数除整数,得整数如:如:1/2 0,9/4 2 思考:思考:5*(fahr-32)/9 和和 5/9*(fahr-32)等价吗等价吗(2)%模运算,针对整型数据模运算,针对整型数据如:如:565,-94-1,10040模运算的结果与第一个操作数相同。模运算的结果与第一个操作数相同。(3)“*”乘号不能省略乘号不能省略 5*a不能不能5a(4)双目运算符两侧操作数的类型要相同双目运算符两侧操作数的类型要相同48课堂练习:求各位数字和课堂练习:求各位数字和由键盘输入一个整数由键

32、盘输入一个整数n(小于(小于1000),计算),计算n的各的各位数字和位数字和#includeintmain()intn,d0,d1,d2;scanf(%d,&n);d0=n%10;/将个位存入d0;d1=(n/10)%10;/将十位存入d1d2=(n/100)%10;/因为n最多是三位数,也可写为d2=(n/100);printf(%dn,d0+d1+d2);return0;49课堂练习:两个整数的和差积商课堂练习:两个整数的和差积商输入两个整数,求两个数的和、差、积、商输入两个整数,求两个数的和、差、积、商,要求商要求商保留保留2位小数位小数/整数运算#includeintmain()in

33、ta,b,c;scanf(%d%d,&a,&b);printf(%d,a+b);printf(%d,a-b);printf(%d,a*b);printf(%.2fn,1.0*a/b);return0;50常见错误常见错误1:/两个整数的运算#includeintmain()inta,b,c;scanf(%d%d,&a,&b);printf(%d,a+b);printf(%d,a-b);printf(%d,a*b);printf(%.2fn,a/b);return0;输入:85商的结果是0.00,分析原因原因是输出格式控制%0.2f与对应输出项类型不匹配。a/b的结果是整型数据,%.2f用来输出

34、浮点型数据整数除法的运算结果是整数商,直接扔掉余数分析如下程序错误的原因分析如下程序错误的原因51常见错误常见错误2:/两个整数的运算#includeintmain()inta,b;doublec;c=a/b;scanf(%d%d,&a,&b);printf(%d,a+b);printf(%d,a-b);printf(%d,a*b);printf(%.2fn,c);return0;输入85运行结果是1.00,分析原因依然是整数除法带来的问题:整数除法的运算结果是整数,5/3的结果是1,把1赋给实型变量c,c的值是1.0,而不是你期望的1.6分析如下程序错误的原因分析如下程序错误的原因522.4

35、.2类型转换类型转换v1、不同级别的操作数运算时,精度低的自动向精、不同级别的操作数运算时,精度低的自动向精度高的转换度高的转换如:如:double a=1/2;a的值是的值是0.0 double a=1.0/2;a的值是的值是0.5 2、赋值时类型转换、赋值时类型转换如:如:double a=1;/会把会把1.0赋给赋给a int i=1.5;/会把会把1.5转换为整型得转换为整型得1,赋给,赋给i53类型转换类型转换v3、强制类型转换强制类型转换 (类型名类型名)操作数操作数如:如:double a=2.5;int n;n=(int)a;/将将a的值转换为整型的值转换为整型2,赋给,赋给n

36、又如:又如:求两整数的商,商为实数求两整数的商,商为实数 int a=2,b=3;double c;c=(double)a/b;/强制类型转换强制类型转换或或 c=1.0*a/b;/不同类型运算时向精度高的转换不同类型运算时向精度高的转换 先将a转换为实数,再除以b!强制转换优先级最高542.5 两个数的最大值两个数的最大值例例2.5 输入两个数,输出其中较大的数输入两个数,输出其中较大的数#includeintmain()inta,b,max;scanf(%d%d,&a,&b);max=a;if(bmax)max=b;printf(%dn,max);return0;(1)读入a,b(2)把a

37、赋给max;(3)如果bmax(或ba),把b存入max(4)输出max552.5.1 关系运算关系运算n关系运算符n种类:=!=n结合方向:自左向右n优先级别:=!=优先级6(高)优先级7(低)关系预算的结果是整型:若关系成立,结果为1;若关系不成立,结果为0;inta=3,b=5;ab结果为0;A*2b结果为123=37结果为156n关系运算注意:例若inta=0,b=5,x=100;则a=x270结果为A100结果为10572.5.2 基本基本if 语句语句if(表达式)语句如果括号内表达式的值为真,则执行if后的语句,否则什么也不做语句语句表达式表达式真真假假语句1可以是单个语句,也可

38、以是用括起来的复合语句。58模仿练习模仿练习改写上例,实现:输入三个数,输出其中最大的数改写上例,实现:输入三个数,输出其中最大的数(1)读入a,b,c(2)把a赋给max;(3)如果bmax,把b存入max(4)如果cmax,把c存入max(5)输出max#includeintmain()inta,b,c,max;scanf(%d%d%d,&a,&b,&c);max=a;if(bmax)max=b;if(cmax)max=c;printf(%dn,max);return0;“比武招亲”、擂台赛的思想592.5.3 条件表达式条件表达式本题可以用如下条件运算符来处理:max=(ab)?a:b#

39、includeintmain()inta,b,max;scanf(%d%d,&a,&b);max=(ab)?a:bprintf(%dn,max);return0;其中,其中,“(ab)?a:b”是一个条件表达式,若条件是一个条件表达式,若条件(ab)成立,则条件表达式取值)成立,则条件表达式取值a;否则,取值;否则,取值b。相当于相当于if(ab)max=a;else max=b;60条件表达式的一般形式:条件表达式的一般形式:v表达式1?表达式2:表达式3条件表达式的求解过程条件表达式的求解过程先求解表达式先求解表达式1的值的值若表达式若表达式1的值为真的值为真(非非0);则求解表达式;则求

40、解表达式2的的值,将其作为条件表达式的值。表达式值,将其作为条件表达式的值。表达式3不计算。不计算。若表达式若表达式1的值为假的值为假(0);则求解表达式;则求解表达式3的值,的值,将其作为条件表达式的值。表达式将其作为条件表达式的值。表达式2不计算。不计算。61模仿练习模仿练习用条件表达式实现:输入三个数,输出其中最大的数用条件表达式实现:输入三个数,输出其中最大的数(1)读入a,b,c(2)把a和b中较大者赋给max;(3)把c和max中较大者赋给max;(4)输出max#includeintmain()inta,b,c,max;scanf(%d%d%d,&a,&b,&c);max=(ab

41、)?a:b;max=(cmax)?c:maxprintf(%dn,max);return0;62课课堂堂练习练习v时间间隔时间间隔v从键盘输入两个时间点从键盘输入两个时间点(24小时制),小时制),输出两个时间点之间的时间间隔,时间输出两个时间点之间的时间间隔,时间间隔用间隔用“小时小时:分钟分钟:秒秒”表示。表示。vInput v输入包括两行。入包括两行。第一行第一行为时间点点1,第二行,第二行为时间点点2。都以都以“小小时:分分钟:秒秒”的格式的格式输入。入。vOutput v以以“小小时:分分钟:秒秒”的格式的格式输出出时间间隔。隔。格式参看格式参看样例。例。vHint v注意:要注意:

42、要输出出01:08:31中的占位符中的占位符0Sample Input 12:01:12 13:09:43 Sample Output 01:08:31Sample Input 12:40:12 13:09:43 Sample Output 00:28:3163思路分析思路分析方法方法1:两个:两个时间点都点都转换成秒,然后相减,再把成秒,然后相减,再把结果果转换为时分秒分秒方法方法2:时分秒分秒对应相减,不相减,不够减向上借位。减向上借位。642.6 计算两点间距离计算两点间距离例例2.6 编程编程:输入输入4个实数个实数x1,y1,x2,y2,数据之数据之间用空格隔开。表示两点坐标间用空格

43、隔开。表示两点坐标A(x1,y1),B(x2,y2),计算并输出两点间的距离。结果保留计算并输出两点间的距离。结果保留两位小数。两位小数。(1)定义x1、y1、x2、y2、dist为double类型(2)读入x1、y1、x2、y2(3)利用两点间距离公式求距离,存入dist(4)输出dist如何求平方根呢?用C语言的标准库函数sqrt()65例例2.6的源程序的源程序/求两点之间的距离#include#includeintmain()doublex1,y1,x2,y2,dist;scanf(%lf%lf%lf%lf,&x1,&y1,&x2,&y2);dist=sqrt(x1-x2)*(x1-x

44、2)+(y1-y2)*(y1-y2);printf(%.2fn,dist);return0;也可以写成两个语句:也可以写成两个语句:dist=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);dist=sqrt(dist);662.6.1 常用数学函数常用数学函数要包含头文件要包含头文件:#include1、求绝对值、求绝对值求整数的绝对值求整数的绝对值,用用abs:int i=-3,j;j=abs(i);求实数的绝对值求实数的绝对值,用用fabs:double a=-12.3,b;b=fabs(a);67数学函数数学函数2、求开方,用、求开方,用sqrtdouble a=2.3

45、,b;b=sqrt(a);3、求幂、求幂xy,用,用powdouble x=2,y=3,z;z=pow(x,y)4、求、求ex,用用expdouble x=2.3,b;y=exp(x);68数学函数数学函数5、求自然对数,用、求自然对数,用logdouble x=13,y;y=log(x);6、求以、求以10为底的对数,用为底的对数,用log10double x=13,y;y=log10(x);69数学函数的使用数学函数的使用7、三角函数、三角函数double x=1.5,y;y=sin(x);y=cos(x);y=tan(x);70例例2.7 求整数的位数求整数的位数v输入一个整数,输出该整

46、数的位数。输入一个整数,输出该整数的位数。v提示:提示:v(1)求)求n的对数函数为:的对数函数为:log10(n);v(2)考虑一个整数的对数和位数的关系:对数取)考虑一个整数的对数和位数的关系:对数取整加整加1即该数的位数即该数的位数v(3)可用强制类型转换扔掉小数部分)可用强制类型转换扔掉小数部分由以上由以上3点可知,整数点可知,整数n的位数是:的位数是:(int)log10(n)+1;71例例2.7的程序的程序#include#includeint main()int n,len;scanf(%d,&n);len=(int)log10(n)+1;/*因为因为len是整型,写成是整型,写

47、成len=log10(n)+1;也行也行,利用自动类型转换利用自动类型转换*/printf(%d是是%d位数位数n,n,len);return 0;72上机作业(上机作业(1)1、输入两个整数,输出他们的和。、输入两个整数,输出他们的和。2、输入两个实数,输出它们的平均值,结果保留、输入两个实数,输出它们的平均值,结果保留2位小数。位小数。3、输入圆的半径,求圆的周长和面积。要求定义如下宏常量、输入圆的半径,求圆的周长和面积。要求定义如下宏常量#define PI 3.141594、和差积商:从键盘读入两个整数数求他们的和差积商,要求商、和差积商:从键盘读入两个整数数求他们的和差积商,要求商保

48、留保留2位小数。位小数。5、输入三个整数,请你设计一个程序,求出这三个数的和、乘积、输入三个整数,请你设计一个程序,求出这三个数的和、乘积和平均数,平均数保留和平均数,平均数保留2位小数。位小数。6、温度转换:从键盘读入华氏温度,输出摄氏温度、温度转换:从键盘读入华氏温度,输出摄氏温度7、输入一个小于、输入一个小于1000的整数的整数n,逆序输出该整数的各位数字。,逆序输出该整数的各位数字。要求能默写或熟练输入以上程序要求能默写或熟练输入以上程序73上机作业(上机作业(2)v1、输入三个整数,输出最大值v2、实数的绝对值:输入一个实数,输出它的绝对值,结果保留两位小数。v3、两点间距离:输入4

49、个实数x1,y1,x2,y2,数据之间用空格隔开。表示两点坐标(x1,y1),(x2,y2),计算并输出两点间的距离。结果保留两位小数。v4、编程,输入三角形的三边长(实数),输出三角形的面积,结果保留两位小数。(提示:用海伦公式)。v5、编程,输入一元二次方程ax2+bx+c=0的系数a,b,c,假定满足b2-4ac0,输出方程的两个根。结果保留两位小数。74v6、输入存款金额 money、存期 year 和年利率 rate,根据公式计算存款到期时的本息合计sum(税前),输出时保留2位小数。sum=money(1+rate)year 提示:sum=money*pow(1+rate),year)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com