C语言入门教程基础ppt课件

上传人:仙*** 文档编号:190223930 上传时间:2023-02-26 格式:PPT 页数:434 大小:2.12MB
返回 下载 相关 举报
C语言入门教程基础ppt课件_第1页
第1页 / 共434页
C语言入门教程基础ppt课件_第2页
第2页 / 共434页
C语言入门教程基础ppt课件_第3页
第3页 / 共434页
点击查看更多>>
资源描述
C语言程序设计Copyer:Vigiking 第一章第一章 计算机语言与计算机语言与C C语言概述语言概述 1.1 1.1 计算机语言概念计算机语言概念 计算机语言定义计算机语言定义 计算机能够识别和接受的语言。计算机能够识别和接受的语言。要使计算机按自己的意图工作,要使计算机按自己的意图工作,必须使用计算机所能接受、理解和必须使用计算机所能接受、理解和执行的指令指挥计算机工作。执行的指令指挥计算机工作。计算机语言的种类 机器语言 低级语言 汇编语言 (面向计算机)BASIC 入门语言 F77 科学计算 高级语言 Foxpro 数据库管理 (面向问题)C 多用途 计算机语言 机器语言机器语言 最早问世,用二进制代码构成指令。最早问世,用二进制代码构成指令。如:如:100000 100000 (+)110000 110000(-)用机器语言编程的缺点:用机器语言编程的缺点:繁琐、不直观、不易调试。繁琐、不直观、不易调试。如计算如计算y=2x2+3x-1y=2x2+3x-1需要七八条指令。需要七八条指令。移植性差。移植性差。依赖于计算机。依赖于计算机。汇编语言汇编语言 用符号构成指令,如:用符号构成指令,如:MOVMOV、ADDADD 用汇编语言编程:用汇编语言编程:相对直观,但仍繁琐,仍是面向计算相对直观,但仍繁琐,仍是面向计算机的语言。机的语言。汇编语言是计算机间接接受的语言汇编语言是计算机间接接受的语言 高级语言高级语言与低级语言相比,有根本性的区别:与低级语言相比,有根本性的区别:是面向问题的语言。是面向问题的语言。高级语言的一条指令语句):高级语言的一条指令语句):y=2y=2*x x*x+3x+3*x-1;x-1;对应于:对应于:y=2x2+3x-1y=2x2+3x-1 y=sin(x);y=sin(x);对应于:对应于:y=sinxy=sinx用高级语言编程:用高级语言编程:直观、易懂、移植性好不依赖于具体计直观、易懂、移植性好不依赖于具体计算机)算机)上机运行高级语言程序需经过编译:编译 执行 要上机完成一个计算问题,主要的任务就是用高级语言编写出相应的源程序。即至少要学会一种计算机语言。高级语言源程序 机器指令目的程序结果编译程序1.2 C1.2 C语言的特点语言的特点 集高级语言和低级语言的优集高级语言和低级语言的优点于一身:点于一身:能实现低级语言的大部分功能能实现低级语言的大部分功能如直接访问内存物理地址、进如直接访问内存物理地址、进行位操作等)。行位操作等)。图形功能强。图形功能强。运算符和数据结构丰富。运算符和数据结构丰富。语法限制不太严格,程序设计语法限制不太严格,程序设计自由度大。自由度大。生成目标代码质量高,程序执生成目标代码质量高,程序执行效率高。行效率高。1.3 1.3 简单的简单的C C程序介绍程序介绍 例例1 1:main()main()主函数说明主函数说明 程序框架程序框架 printf(“abcdef”);printf(“abcdef”);函函数体数体 语句语句 程序的功能是输出字符串:程序的功能是输出字符串:abcdef abcdef 例2:求两数之和。main()int a,b,c;a a=100;b=50;b c=a+b;c printf(“n c=%d”,c);程序运行结果:c=150 例例3 3:求两数中的最大值。:求两数中的最大值。函数类型函数类型 函数函数名名 形参形参main()main()int max (int x,int y)int max (int x,int y)int a,b,c;int a,b,c;int z;int z;scanf(“%d,%d”,&a,&b);if(xy)scanf(“%d,%d”,&a,&b);if(xy)z=x;z=x;c=max(a,b);c=max(a,b);else z=y;else z=y;p r i n t f(“n m a x i s:%d”,c);p r i n t f(“n m a x i s:%d”,c);return(z);return(z);a a x x b b y y c c z z (两个函数组成)(两个函数组成)353555 总结上例可知:(1)C程序由函数构成。(2)函数由两部分组成:函数说明部分:函数名、函数类型、形参名、形参类型。函数体:实现函数的具体操作;由语句构成。(3)程序总是从main函数开始执行。(4)书写格式自由。(5语句必须有分号。:第二章第二章 算法算法 2.1 算法的概念算法的概念 要利用计算机处理问题,光要利用计算机处理问题,光学习语言的语法规则还不够,学习语言的语法规则还不够,最重要的是要学会针对各类最重要的是要学会针对各类型的问题,拟定出有效的解型的问题,拟定出有效的解题方法和步骤。解题方法和题方法和步骤。解题方法和步骤就是算法。步骤就是算法。算法:算法:为了解决一个问题而采取的有限步骤。为了解决一个问题而采取的有限步骤。计算机算法:计算机算法:如何使计算机一步一步地工作的具体过程。如何使计算机一步一步地工作的具体过程。利用计算机处理问题的步骤:1设计好算法算法设计;2用计算机语言实现算法程序设计。算法必须是“有效的。算法设计还要充分考虑算法的好坏。衡量算法好坏的主要标准:程序简练。执行速度快。占空间少。例:思索 的算法。算法:直接表达。直接用语句 s=1+2+3+4+5+6+7+8+9+10当项数较多时该算法不适用s=i110算法:迭代法累加求和法)s=1+2+3+4+5+6+7+8+9+10 算法步骤:s i 使s=0 +使i=1 累加器 记数器 s+is i+1i 若i10转,否则转 输出s01123364105该算法通用,是好算法2.2 算法的表示 算法需要有统一的表示方法 常用的表示方法有:自然语言 流程图 结构化流程图 N-S流程图.1、自然语言 对于计算 s=1+2+3+4+5+6+7+8+9+10 用自然语言表示为:使s=0 (s为累加器)使i=1 (i为计数器)s+is (累加求和公式)i+1i (计数器加1)若i10转,否则转 输出s的值 特点:通俗易懂、文字冗长、含义不大严格。2、流程图 用流程图符号表示算法。常用的流程图符号 起止框 输入输出框 处理框 流程线 判断框 对于计算 s=1+2+3+4+5+6+7+8+9+10 用流程图表示为:s+i s i+1 i S+i s S+i s i10 输出s 0 s 1 i 直观形象,易于理解,次序清楚YN3、结构化流程图 传统的流程图有一个弊端:对流程线没有严格的限制,对于较复杂的算法可能会变成乱麻一般BS型算法)。为克服这一弊端,提出了由三个基本结构组成算法流程图的思想:结构化流程图 三个基本结构:顺序结构 按固定顺序从上到下或从左到右执行的结构。ABab 选择结构 根据条件P选择执行哪一个分支。成立 不成立 pABab成立不成立例:计算 y=1/x 当x0时 y=10000 当x=0时 的算法流程图图:选择结构 输入x X=0?10000y 1/xy 输出y YN 循环结构 重复执行某些操作的结构。分为两种:当型循环和直到型循环。当型循环 直到型循环 P1AAP2aabbYYNN 可以看出,每个基本结构都只有一个入口和一个出口,因此,用三个基本结构构成的流程图不会象乱麻一般,用三个基本结构构成的流程图就成为结构化流程图,用结构化流程图描述的算法称为结构化算法,相应的程序设计就称为结构化程序设计。观察前例:0 s 1 i S+i s i+1 i i10 输出s 顺序结构循环结构yn4 N-S流程图N-S流程图的三个基本结构:ABP成立不成立ABAB当P1直到P2顺序结构选择结构循环结构例:计算 y=1/x 当x0时 y=10000 当x=0时 的N-S流程图:输入x X=0?是否10000y 1/xy 输出y 例:计算 s=1+2+3+4+5+6+7+8+9+10 的N-S流程图:i10 直到i10 直到型 当型 0 s 1 i 输出s 1 i 0 s s+i s i+1 i s+i s i+1 i 输出s 第三章第三章 数据类型、运算符数据类型、运算符 与与 表达式表达式 3.1 C 的数据类型的数据类型基本类型基本类型(整型、实型、字符(整型、实型、字符型、枚举型)型、枚举型)构造类型构造类型(略)(略)指针类型指针类型(略)(略)空类型空类型 各类型包含常各类型包含常量与变量量与变量 3.2 3.2 常量与变量常量与变量 常量与符号常量常量与符号常量 常量常量 在程序运行过程中其值保持不变的量。在程序运行过程中其值保持不变的量。符号常量符号常量 用来代表一个常量的标识符。用来代表一个常量的标识符。#define PI 3.1415926#define PI 3.1415926 例:#define PI 3.1415926 main()float r=2,c;c=2*PI*r;printf(“%f”,c);变量变量 其值可以改变的量。其值可以改变的量。变量的三要素变量的三要素:变量名变量名每个变量有一个名字,作为识别该变量的每个变量有一个名字,作为识别该变量的标识符。标识符。变量的值变量的值 每个变量有一个值,变量的值是随时每个变量有一个值,变量的值是随时可以改变的。可以改变的。变量的存储单元 每个变量占据一个内存单元,用于存放变量的值。变量名 a 变量值 存储单元3 变量的命名规则:由字母、数字和下划线组成 以字母或下划线开头 a、x1、y_2、_b1、_1c 合法 1x、a+2、不合法 变量必须先定义后使用。程序中何时使用常量?何时使用变量?3.3 3.3 整型数据整型数据 整型常量整型常量 即整常数,即整常数,c c的整常数有三种形式:的整常数有三种形式:十进制整数十进制整数 与数学中的整数一致,如:与数学中的整数一致,如:100100,123123,1515等。等。八进制整数八进制整数 以以0 0开头的整数,如:开头的整数,如:010,07,020010,07,020等。等。十六进制整数十六进制整数 以以0 x0 x开头的整数,如:开头的整数,如:0 x10,0 xff,0 x2a0 x10,0 xff,0 x2a等。等。整型变量整型变量 用于存放整数的变量。用于存放整数的变量。分分4 4种类型:种类型:基本型:基本型:int aint a 16 16位,可表示的数值范围:位,可表示的数值范围:-3276832767-3276832767 短整型:短整型:short int bshort int b 16 16位,可表示的数值范围:位,可表示的数值范围:-3276832767-3276832767 长整型:长整型:long int clong int c 32 32位,数值范围:位,数值范围:-21474836482147483647-21474836482147483647 无符号型:加上 unsigned 只存放正数。如:unsigned int x 变量x为无符号整数,16位全表示数码,数值范围:065535 在程序设计中,如果要使用整型变量,必须首先选择以上类型符来定义变量,然后才能使用;例:main()定义 int a,b,c;a=100;b=50;运用 c=a+b;printf(“%d”,c);一般根据什么原则选择变量的类型?3.4 3.4 实型数据实型数据 实型常量实型常量 可使用两种形式表示:可使用两种形式表示:小数形式:如小数形式:如 1.23,3.1415926 15.481.23,3.1415926 15.48 指数形式:如指数形式:如 1e-20 1.23e5 1e-20 1.23e5 实型变量实型变量 用于存放实数的变量用于存放实数的变量 分单精度和双精度两种:分单精度和双精度两种:float a,b float a,b 定义定义a a和和b b为单精度型变量为单精度型变量 3232位,位,7 7位有效数字,位有效数字,10-38103810-381038 double x,y double x,y 定义定义x x和和y y为双精度型变量为双精度型变量 6464位,位,1515位有效数字,位有效数字,10-3081030810-30810308 例:main()float r,c;double r,c;r=5;c=2*3.1415926*r;printf(“%f”,c);3.5 字符型数据 字符常量 用单引号括起来的一个字符。a,x,*,1等 除 此 外,以 开 头 的 字 符如n,t等 称为转义字符,祥见书表3.3 字符型变量字符型变量 用于存放字符的变量。用于存放字符的变量。char c1,c2 char c1,c2 定义定义c1c1和和c2c2为字符型变量为字符型变量 c1=a;c2=b;c1=a;c2=b;字符赋值字符赋值 字符型变量存放一个字符,占据一个字节字符型变量存放一个字符,占据一个字节 字符型数据的存储形式字符型数据的存储形式 存放存放ASCIIASCII码码 不是不是 而是而是 如字符如字符aa在内存中存放在内存中存放9797,b b 存放存放9898。与整数的存储形式一致,它们之间可以通与整数的存储形式一致,它们之间可以通用用 一个字符数据既可以作字符用,也可以作一个字符数据既可以作字符用,也可以作整数用取其整数用取其ASCIIASCII代码)。代码)。如:如:32+a32+a相当于相当于 32+9732+97 假设假设 int x;char c;int x;char c;那么那么 x=a;c=97;x=97;c=a;x=a;c=97;x=97;c=a;都都允许允许 a97 字符串常量 用双引号括起来的字符序列。如:”abcde”,”china”a也属字符串。留意a与a的区别。对于:char c;c=”a”;用法错误 字符串中每个字符各占一个字节,并且在字符串结尾加上一个结束标记0 如:”china”在内存中占6个字节。c h i n a 0 C语言中专门的字符串变量,可用字符数组存放以后介绍)。3.6 3.6 变量赋初值变量赋初值 在定义变量的同时给相应的变量赋初值。在定义变量的同时给相应的变量赋初值。如:如:int a=3;a int a=3;a float b=5.2;float b=5.2;char c=a;char c=a;int x=y=z=6;int x=y=z=6;效果:效果:在给变量分配内存单元的同时在相应的单在给变量分配内存单元的同时在相应的单 元中存放初值。元中存放初值。3 3.7 3.7 各数值型数据间的混合运算各数值型数据间的混合运算 整型、实型、字符型数据间可以进行混合运整型、实型、字符型数据间可以进行混合运算,如:算,如:10-a10-a*1.51.5 运算时,参加运算的两个数据如果类型不同,运算时,参加运算的两个数据如果类型不同,则首先将其类型转换成一致再运算,转换规则则首先将其类型转换成一致再运算,转换规则是:是:将优先级低的类型转换到优先级高的类型将优先级低的类型转换到优先级高的类型 数据类型的优先级:数据类型的优先级:高高 double floatdouble float long long unsignde unsignde 低低 int charint char 3.8 3.8 算术运算符与算术表达式算术运算符与算术表达式 基本的算术运算符基本的算术运算符 +-+-*/%/%算术表达式算术表达式 用算术运算符将运算对象连接起来的式子用算术运算符将运算对象连接起来的式子 用于表达数学公式的式子用于表达数学公式的式子 如:如:2 2*x+y-1/ax+y-1/a 表达式经过运算最终得到一个值:表达式经过运算最终得到一个值:算术表达式的值算术表达式的值 运算符的优先级与结合性运算符的优先级与结合性 优先级:优先级:在对表达式求值时,如果存在多个运算符,则在对表达式求值时,如果存在多个运算符,则运算的先后次序按运算符的优先级别从高到底进运算的先后次序按运算符的优先级别从高到底进行。行。运算符的优先级关系为:运算符的优先级关系为:高:高:*/%/%低:低:+-+-如:如:a-2a-2*x x 先算先算 *2 2*(a+2)(a+2)有括号的情况?有括号的情况?结合性:如果在一个运算对象两边的运算符的优先级相同,则按规定的“结合方向处置。如:a-b+c b与-结合是从左到右,称“左结合性”。b与+结合是从右到左,称“右结合性”。每个运算符都有相应的优先级和结合性。基本算术运算符都是左结合性。计算表达式例:计算表达式例:2+A-1/2.0 1+3/2-12+A-1/2.0 1+3/2-1构造表达式例构造表达式例 2x2+3x-1 2x2+3x-1 a+b a-b a+b a-b x+y x-ya+b/a-b?(a+b)/(a-b)2*x*x+3*x-1 (*不能省)(a+b)/(a-b)/(x+y)/(x-y)(a+b)/(a-b)/(x+y)/(x-y)(a+b)/(a-b)/(x+y)*(x-y)强制类型转换强制类型转换可以用强制类型转换运算符将一个表达式可以用强制类型转换运算符将一个表达式的值转换成所需类型:的值转换成所需类型:如:如:(int)(x+y)(int)(x+y)(float)(7%3)(float)(7%3)应用举例:int a=200,b=300,c;c=a*b/100;?可知,有自动转换和强制转换,当自动转换达不到目的时,可用强制转换。c=(long)a*b/100;c=(long)(a*b)/100;自增、自减运算符自增、自减运算符 自增运算符:自增运算符:+使变量值加使变量值加1 1 自减运算符:自减运算符:-使变量值减使变量值减1 1 两种用法:两种用法:+i,-i +i,-i 先加减后用先加减后用 i+,i-i+,i-先用后加减)先用后加减)两种用法对两种用法对i i效果一样,但表达式的值不同。效果一样,但表达式的值不同。例:假设例:假设i i的原值为的原值为5 5:j=+i;j=?j=i+;j=?j=+i;j=?j=i+;j=?留意:+和-只能用于变量。如:3+和a+1)+不合法+和-为右结合性。(-i)+-i+-(i+)若i的原值是5,则该表达式的值是多少?例:分析执行下列语句后的结果:a=5;a b c d b=a+;c=-a-b+;d=(a+)-(+b)+c-;556 506 7-26-1 两种特殊情况:k=(i+)+(i+)+(i+)i+j 是 i+(+j)还是(i+)+j?i+虽然与i=i+1等效,但使用自增自减运算符的代码优化程度好,因而经常使用;但用时需特别小心。3.9 3.9 赋值运算符和赋值表达式赋值运算符和赋值表达式 赋值运算符赋值运算符 “=”=”称赋值运算符,其作用是将一个数据称赋值运算符,其作用是将一个数据赋给一个变量。赋给一个变量。如:如:a=5a=5 不要理解为不要理解为“等号等号”。执行赋值运算的结果,是将右边的数据存执行赋值运算的结果,是将右边的数据存入左边变量所对应的内存单元中。入左边变量所对应的内存单元中。赋值规则赋值规则 如果赋值运算符两侧的类型不一致,则在赋如果赋值运算符两侧的类型不一致,则在赋值时要进行类型转换,转换规则为:值时要进行类型转换,转换规则为:实型实型整变量整变量 舍去小数部分。舍去小数部分。int a=5.5;aint a=5.5;a中为中为5 5。整型整型实变量实变量 数值不变,以浮点形式存储。数值不变,以浮点形式存储。字符型字符型整变量整变量 放在整形变量低放在整形变量低8 8位。保持原值不变原则。位。保持原值不变原则。int a=A;int a=A;复合赋值运算符复合赋值运算符 在赋值运算符前加上其它运算符,可以构成在赋值运算符前加上其它运算符,可以构成复合赋值运算符。复合赋值运算符。a+=3 a=a+3a+=3 a=a+3 b-=x+5 b=b-(x+5)b-=x+5 b=b-(x+5)x x*=c-6 x=x=c-6 x=x*(c-6)(c-6)y/=a y/=a*4 y=y/(a4 y=y/(a*4)4)k%=b-2 k=k%(b-2)k%=b-2 k=k%(b-2)属于高效率运算符。属于高效率运算符。赋值表达式赋值表达式 主要实现赋值运算的表达式。主要实现赋值运算的表达式。一般形式:一般形式:=如:如:a=5 y=2a=5 y=2*x+3 a=a+1 x+3 a=a+1 不是衡等不是衡等作用:将右边表达式的值赋给左边的变量。作用:将右边表达式的值赋给左边的变量。赋值表达式的值取左边变量的值。赋值表达式的值取左边变量的值。赋值表达式右边的可以是任何表达式,如:a=(b=5)赋值表达式中包含赋值表达式 赋值运算符的优先级低于所有算术运算符,且是右结合性。a=(b=5)与 a=b=5 等效。例:计算以下表达式的值:a=b=c=5 a=5+(c=6)a=(b=4)+(c=6)a=(b=4.5)+(c=6.5)(a、b、c为整型变量)a+=a-=a*a (设a的原值为3)赋值表达式是C语言中的一个重要成分,在赋值表达式后加一分号就成为常用的赋值语句。如 y=2*x+1;赋值表达式作为表达式的一种,可以出现在任何表达式中,如:x+2-(b/3-(a=k-5)+b 3.10 3.10 逗号表达式逗号表达式 逗号也是一种运算符,用它对两个表达式逗号也是一种运算符,用它对两个表达式实现连接运算。实现连接运算。3+5,6+8 3+5,6+8 称逗号表达式。称逗号表达式。逗号表达式的一般形式:逗号表达式的一般形式:表达式表达式1 1,表达式,表达式2 2 取表达式取表达式2 2的值作为整个逗号表达式的值。的值作为整个逗号表达式的值。如:如:a=3a=3*5,a5,a*4 4 逗号表达式的值为:逗号表达式的值为:6060 一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如:(a=3*5,a*4),a+5 因此,逗号表达式的一般形式可以扩展为:表达式1,表达式2,表达式3,,表达式n 取表达式n的值作为整个逗号表达式的值。逗号运算符的优先级最低,且是左结合性。逗号运算符只起到连接作用,没有实际操作。第四章 最简单的C程序设计 C 程序最基本的成分是语句 目前我们已掌握的语句:变量说明语句:int a,b,c;表达式语句:x+y;特别地:a=5;赋值语句 可以编写简单程序如:可以编写简单程序如:main()main()int x,y;int x,y;x=5;x=5;y=2 y=2*x x*x+3x+3*x-1;x-1;该程序语法上完整,但还缺少输出。该程序语法上完整,但还缺少输出。数据的输出数据的输出 用输出函数实现用输出函数实现,其中的两种输出函数:其中的两种输出函数:1.putchar 1.putchar 函数函数 (字符输出函数)(字符输出函数)用于输出一个字符。用于输出一个字符。如如:putchar(a);putchar(a);putchar(100);putchar(100);char c=b;putchar(c);char c=b;putchar(c);例:输出单词Boy的完整程序:#include“stdio.h”注意该语句的作用 main()char a,b,c;a=B;b=o;c=y;putchar(a);putchar(b);putchar(c);2.printf 2.printf函数格式输出函数)函数格式输出函数)任意类型、任意格式、任意个数。任意类型、任意格式、任意个数。例如:例如:int a=100,b=56;int a=100,b=56;printf(“a=%d,b=%d”,a,b);printf(“a=%d,b=%d”,a,b);普通字符普通字符 格式说明格式说明 格式控制格式控制 输出表输出表列列 输出结果:输出结果:a=100,b=56a=100,b=56“%”“%”后的字符称格式字符,不同格式字后的字符称格式字符,不同格式字符对应不同的数据类型。符对应不同的数据类型。d d格式符:按整数格式输出格式符:按整数格式输出 几种用法:几种用法:%d%d 不指定宽度,按实际宽度输出不指定宽度,按实际宽度输出%md%md 按指定宽度输出,按指定宽度输出,m m为宽度为宽度%ld%ld 用于输出长整型数用于输出长整型数 例:int a=125,b=453;long c=65535;printf(“a=%d,b=%5d,c=%ld”,a,b,c);输出结果:a=125,b=453,c=65535%ld也可以按指定宽度输出:printf(“c=%8ld”,c);输出结果:c=65535留意:格式字符的类型要与对应的输出对象的类型一致。c c格式符:用于输出字符格式符:用于输出字符 char c=A;char c=A;printf(“c=%c,%c”,c,B);printf(“c=%c,%c”,c,B);输出结果:输出结果:c=A,Bc=A,B 输出对象既可以是字符变量、字符常量,还输出对象既可以是字符变量、字符常量,还可以是整型表达式。可以是整型表达式。如:int a=100;char b=A;printf(“n%d,%c”,a,a);printf(“n%c,%d”,b,b);输出结果:100,d A,65 s s格式符:用于输出字符串格式符:用于输出字符串%s%s 不指定宽度不指定宽度%-ms%-ms 指定宽度,左靠齐指定宽度,左靠齐%ms%ms 指定宽度,右靠齐指定宽度,右靠齐%m.ns%m.ns 指定宽度指定宽度m m,只取左端,只取左端n n个字符,个字符,右靠齐右靠齐%-m.ns%-m.ns 指定宽度指定宽度m m,只取左端,只取左端n n个字符,个字符,左靠齐左靠齐例:例:printf(“1:%s”,”abcd”);printf(“1:%s”,”abcd”);printf(“2:%8s”,”abcd”);printf(“2:%8s”,”abcd”);printf(“3:%-8s”,”abcd”);printf(“3:%-8s”,”abcd”);printf(“4:%8.3s”,”abcd”);printf(“4:%8.3s”,”abcd”);printf(“5:%-8.3s”,”abcd”);printf(“5:%-8.3s”,”abcd”);1:abcd2:abcd3:abcd 4:abc5:abc 1:abcd2:abcd3:abcd 4:abc5:abc f f格式符:按小数形式输出实数格式符:按小数形式输出实数%f%f 由系统指定宽度由系统指定宽度6 6位小数)位小数)%m.nf%m.nf 指定宽度指定宽度m m,小数位数,小数位数n n,右靠齐,右靠齐%-m.nf%-m.nf 指定宽度指定宽度m m,小数位数,小数位数n n,左靠齐,左靠齐 留意:宽度包括符号和小数点。留意:宽度包括符号和小数点。例:例:float a=3.141592654,b=14.326795,float a=3.141592654,b=14.326795,c=-125.2468;c=-125.2468;p r i n t f(“n a=%f,b=%8.3 f,c=%-p r i n t f(“n a=%f,b=%8.3 f,c=%-10.2f”,a,b,c);10.2f”,a,b,c);输出结果:输出结果:a=3.141592,b=14.326,c=-125.24 a=3.141592,b=14.326,c=-125.24 完整前面的程序:完整前面的程序:main()main()int x,y;int x,y;x=5;x=5;y=2 y=2*x x*x+3x+3*x-1;x-1;printf(“n y=%d”,y);printf(“n y=%d”,y);程序设计例:程序设计例:编写程序计算如图中的电流编写程序计算如图中的电流I.I.假设假设 U=220,R1=30,R2=60,R3=45U=220,R1=30,R2=60,R3=45UIR1R2R3算法设计:算法设计:I=U/R1+U/R2+U/R3I=U/R1+U/R2+U/R3程序设计:程序设计:main()main()I=U/R1+U/R2+U/R3;I=U/R1+U/R2+U/R3;int U=220,R1=30,R2=60,R3=45;int U=220,R1=30,R2=60,R3=45;float I;float I;printf(“n printf(“n I=%f”,I);I=%f”,I);正确的程序:main()int U=220,R1=30,R2=60,R3=45;float I;I=(float)U/R1+(float)U/R2+(float)U/R3;printf(“n I=%f”,I);考虑通用:main()int U,R1,R2,R3;float I;输入 U,R1,R2,R3 I=(float)U/R1+(float)U/R2+(float)U/R3;printf(“n I=%f”,I);数据的输入数据的输入 getchargetchar函数字符输入)函数字符输入)#include“stdio.h”#include“stdio.h”main()main()char c;char c;c=getchar();c=getchar();等待键盘输入等待键盘输入 putchar(c);putchar(c);scanf scanf 函数格式输入)函数格式输入)与与printfprintf函数相反。函数相反。用于输入若干任意类型的数据。用于输入若干任意类型的数据。scanf(“%d%d%d”,&a,&b,&c);scanf(“%d%d%d”,&a,&b,&c);格式控制格式控制 地址列表地址列表 scanf(“%d%d%d”,&a,&b,&c);scanf(“%d%d%d”,&a,&b,&c);执行此函数时,等待从键盘执行此函数时,等待从键盘输入三个整数给输入三个整数给a,b,ca,b,c 若从键盘输入若从键盘输入 3 5 83 5 8 则系统即从键盘缓冲区取出则系统即从键盘缓冲区取出这三个数分别赋给这三个数分别赋给a,b,ca,b,c 注意与注意与printfprintf的区别,注意的区别,注意格式的匹配格式的匹配如:如:scanf(“%3d%2d%4d”,&a,&b,&c);scanf(“%3d%2d%4d”,&a,&b,&c);若从键盘输入若从键盘输入123456789123456789 a=123,b=45,c=6789 a=123,b=45,c=6789 若想使若想使a=12,b=5,c=100a=12,b=5,c=100 则键盘输入应为:则键盘输入应为:12 5 10012 5 100 方便的输入格式一般不方便的输入格式一般不 指定宽度,指定宽度,如:如:scanf(“%d%d%d”,&a,&b,&c);scanf(“%d%d%d”,&a,&b,&c);在键盘输入时,用分隔符把每个数据隔开,标准的分隔符是空格。如:123 150 23 若想用逗号作分隔符,那么:scanf(“%d,%d,%d”,&a,&b,&c);不要随便使用普通字符,如使用:scanf(“a=%d,b=%d c=%d”,&a,&b,&c)对应数据输入:a=123,b=150,c=23 前面的欧姆定律:main()int U,R1,R2,R3;float I;scanf(“%d%d%d%d”,&U,&R1,&R2,&R3);I=(float)U/R1+(float)U/R2+(float)U/R3;printf(“n I=%f”,I);求三角形面积求三角形面积#include “math.h”main()float a,b,c,area,s;scanf(“%f,%f,%f”,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“n area=%f”,area);使用数学函数使用数学函数使用三角函数使用三角函数#include “math.h”main()float x,y;scanf(“%f”,&x);y=sin(x*3.1415926/180);以弧度为单位以弧度为单位 printf(“n y=%f”,y);第五章第五章 选择结构程序设计选择结构程序设计 对于如下的函数计算,算法上属于一个选择结构。y=用于实现选择结构的主要是if语句。1/x 1/x 当当x0 x0时时 10000 10000 当当x=0 x=0时时ifif语句的最常见形式为:语句的最常见形式为:if(if(关系表达式关系表达式)语句语句1 1;else else 语句语句2 2;如:如:if(x!=0)y=1/x;if(x!=0)y=1/x;else y=10000;else y=10000;其中其中 x!=0 x!=0 就是一个关系表达式就是一个关系表达式 !=!=就是一个关系运算符就是一个关系运算符5 51 1 关系运算符和关系表达式关系运算符和关系表达式1 1、关系运算符、关系运算符用于进行比较运算的运算符。共有六种:用于进行比较运算的运算符。共有六种:=!=!=优先级与结合性:优先级与结合性:前前4 4种大于后两种。种大于后两种。低于算术运算符而高于赋值运算符。低于算术运算符而高于赋值运算符。左结合性。左结合性。2 2、关系表达式、关系表达式一般形式:一般形式:表达式关系运算符表达式表达式关系运算符表达式 如:如:ab a+bb+cab a+bb+c 经过关系运算后最终有一个值经过关系运算后最终有一个值-关系表达关系表达式的值。式的值。关系表达式的值只有关系表达式的值只有 0(0(假或假或1 1真)真)例:设例:设 a=2,b=4,c=1 a=2,b=4,c=1 计算以下关系表达计算以下关系表达式的值:式的值:ab ab a+bb+ca+bb+cab ab 可以是字符表达可以是字符表达式式(x=2x=2)(y=5)(y=5)可以是赋值表达式可以是赋值表达式(a(bc)(a(bc)甚至可以是关系表达式甚至可以是关系表达式ab=bcab=byx+zyxy=yzxy=yz=xzyz=xzyxz yxz (x=y-2)z+1=x+y(x=y-2)z+1=x+ya=x+y=x+zx+1a=x+y=x+zx+15 52 2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式有时,只用一个简单的关系表达式无法完整有时,只用一个简单的关系表达式无法完整地表达一个条件,如:地表达一个条件,如:y=y=其中的条件需要用逻辑表达式来表达:其中的条件需要用逻辑表达式来表达:x!=0&a!=0 x!=0&a!=0&就是一种逻辑运算符。就是一种逻辑运算符。1/x+1/a 1/x+1/a 当当x0,a0 x0,a0时时 10000 10000 其它其它1 1、逻辑运算符、逻辑运算符&逻辑与逻辑与 两个操作数都为真时两个操作数都为真时&运算结果为真。运算结果为真。|逻辑或逻辑或 两个操作数之一为真时即为真。两个操作数之一为真时即为真。!逻辑非逻辑非 (单目运算)(单目运算)操作数为真假时为假真)。操作数为真假时为假真)。如:假设如:假设 a=2,b=3,c=0 a=2,b=3,c=0 那么:那么:ab&bc 0 ab|bc 1 !(ab)0ab&bc 0 ab|bc 1 !(ab)0优先级由高到低):优先级由高到低):!逻辑非逻辑非算术运算符算术运算符关系运算符关系运算符&逻辑与逻辑与|逻辑或逻辑或赋值运算符赋值运算符结合性:左结合性结合性:左结合性2 2、逻辑表达式、逻辑表达式 实际上,前面所举例子即为逻辑表达式:实际上,前面所举例子即为逻辑表达式:ab&bc ab|bc !(ab)ab&bc ab|bc !(ab)逻辑表达式的值同样只有逻辑表达式的值同样只有1 1和和0 0,但参加逻辑,但参加逻辑 运算的操作数可以是任意类型的数据,可以是运算的操作数可以是任意类型的数据,可以是 任意大小。任意大小。例:例:a+b&b+c a+b&b+c 是合法的逻辑表达式。是合法的逻辑表达式。此时以此时以0 0代表假,非代表假,非0 0代表真。代表真。例:设例:设 a=2,b=3,c=0,a=2,b=3,c=0,计算以下表达式计算以下表达式的值:的值:a&b b&c a|ca&b b&c a|c !a+c&b+c !a+c&b+c !c+a=b|ba !c+a=b|bc+10 a+c|a+bc+10对于逻辑表达式的两种基本技能:对于逻辑表达式的两种基本技能:逻辑表达式的计算。逻辑表达式的计算。逻辑表达式的构造。逻辑表达式的构造。逻辑表达式的构造举例:逻辑表达式的构造举例:abcabc a a和和b b之一为之一为0 0,但不同时为,但不同时为0 0a=b=c 5=4=3a=b=c 5=4=3a=b&b=ca=b&b=ca=0&b!=0|a!=0&b=0a*b=0a*b=0&a+b!=0对于对于 a=0&b!=0|a!=0&b=0a=0&b!=0|a!=0&b=0 a=0 a=0可以用可以用!a!a代替代替 a!=0a!=0可以直接用可以直接用a a !a&b|a&!b !a&b|a&!b但必须是运算结果作为逻辑量的情况下。但必须是运算结果作为逻辑量的情况下。y=(a!=0)y=(a!=0)与与 y=a y=a 不等效不等效5 53 if3 if语句语句1 1、ifif语句的三种形式语句的三种形式 if if表达式语句;表达式语句;有一分支为空。有一分支为空。scanf(“%d”,&score);scanf(“%d”,&score);if(score=60)printf(“pass”);if(score=60)printf(“pass”);if表达式语句1;else 语句2;if(x!=0)y=1/x;else y=10000;if表达式1语句1;else if(表达式2)语句2;else if(表达式3)语句3;else 语句n;if(score=100)printf(“A”);else if(score=90)printf(“B”);else if(score=80)printf(“C”);else if(score=70)printf(“D”);else if(score=60)printf(“E”);else printf(“F”);对于:1/x 1/x 当当x0 x0时时10000 10000 当当x=0 x=0时时一般用:一般用:if(x!=0)y=1/x;if(x!=0)y=1/x;else y=10000;else y=10000;也可用:也可用:y=10000;y=10000;if(x!=0)y=1/x;if(x!=0)y=1/x;y=y=?y=1/x;y=1/x;if(x=0)y=10000if(x=0)y=10000 例:(习题5.5):x (x1)2x-1 (1x10)3x-11 (x10)y=y=main()float x,y;scanf(“%f”,&x);if(x1)y=x;else if(x10)y=2*x-1;else y=3*x-11;printf(“n y=%f”,y);阐明:阐明:语句中的表达式可以是任意表达式:语句中的表达式可以是任意表达式:if(x)y=1/x;if(x)y=1/x;else y=10000;else y=10000;一个一个ifif结构不可分割:结构不可分割:if(x)y=1/x;if(x)y=1/x;z=10;z=10;else y=10000;else y=10000;一个分支中包含多个语句时,要用一个分支中包含多个语句时,要用 :if(a0)x=1;y=2;if(amax)max=b;if(bmax)max=b;if(cmax)max=c;if(cmax)max=c;printf(“n max=%d”,max);printf(“n max=%d”,max);例:从键盘输入三个整数到变量例:从键盘输入三个整数到变量a,b,c,a,b,c,要求要求按从大到小的顺序输出。按从大到小的顺序输出。两种典型算法:两种典型算法:枚举法将各种可能的排列枚举出来)。枚举法将各种可能的排列枚举出来)。换位法将换位法将a,b,ca,b,c中的数据换位)。中的数据换位)。换位法换位法main()main()int a,b,c,t;int a,b,c,t;scanf(“%d,%d,%d”,&a,&b,&c);scanf(“%d,%d,%d”,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;if(b=80)if(score=80)if(score=90)printf(“A”);if(score=90)printf(“A”);else printf(“B”);else printf(“B”);else else if(score=60)printf(“C”);if(score=60)printf(“C”);else printf(“D”);else printf(“D”);注意注意elseelse与与ifif的匹配的匹配3 3、条件运算符、条件运算符如果两个分支的内容都是给同一个变量赋值,如果两个分支的内容都是给同一个变量赋值,则可用简单的条件运算符处理:则可用简单的条件运算符处理:if(ab)max=a;if(ab)max=a;else max=b;else max=b;可用:可用:max=ab?a:b;max=ab?a:b;赋值运算符右边为一条件表达式。赋值运算符右边为一条件表达式。条件表达式的一般形式:条件表达式的一般形式:表达式表达式1 1?表达式表达式2 2:表达式表达式3 3条件表达式的执行过程:条件表达式的执行过程:ab?a:b 优先级:低于关系运算符,高于赋值运算符。优先级:低于关系运算符,高于赋值运算符。结合性:右结合性。结合性:右结合性。表达式表达式1 1条件表达式条件表达式取表达式取表达式3 3的值的值条件表达式条件表达式 取表达式取表达式2 2的值的值 非00 例:求a,b,c中的最大值:max=ab?(ac?a:c):(bc?b:c);5 54 switch4 switch语句多分支)语句多分支)适用于根据一个表达式的值就可确定适用于根据一个表达式的值就可确定走哪个分支的情况。走哪个分支的情况。switchswitch表达式)表达式)常量表达式常量表达式1 1:语句语句1 1 常量表达式常量表达式2 2:语句语句2 2 常量表达式常量表达式n n:语句语句n n default default:语句语句n+1n+1 例:成绩分档:例:成绩分档:switch(score/10)switch(score/10)case 10:printf(“A”);case 10:printf(“A”);case 9:printf(“B”);case 9:printf(“B”);case 8:printf(“C”);case 8:printf(“C”);case 7:printf(“E”);case 7:printf(“E”);case 6:printf(“F”);case 6:printf(“F”);default:printf(“G”);default:printf(“G”);注:应使用注:应使用break.break.switch(score/10)switch(score/10)case 10:printf(“A”);break;case 10:printf(“A”);break;case 9:printf(“B”);break;case 9:printf(“B”);break;case 8:printf(“C”);break;case 8:printf(“C”);break;case 7:printf(“E”);break;case 7:printf(“E”);break;case 6:printf(“F”);break;case 6:printf(“F”);break;default:printf(“G”);default:printf(“G”);5 55 5 程序举例程序举例 (习题习题5.10)5.10)有有4 4个圆塔,圆心分别为:(个圆塔,圆心分别为:(2 2,2)2),(-2-2,2 2),(),(-2-2,-2-2),(),(2 2,-2-2),圆),圆半径为半径为1 1。这。这4 4个塔的高度为个塔的高度为10m,10m,塔以外无塔以外无建筑物。今输入任一点的坐标,求该点的建筑物。今输入任一点的坐标,求该点的建筑高度塔外的高度为建筑高度塔外的高度为0 0)。)。算法设计:条件“在某一圆内”:“在圆1内或在圆2内或在圆3内或在圆4内”若设变量c1、c2、c3、c4分别代表是否在相应的圆内,则以上条件为:c1|c2|c3|c4 10 在某一圆内在某一圆内0 在圆外在圆外(x,yx,y)h=h=c1=(x-2)2+(y-2)21c1=(x-2)2+(y-2)21c2=(x+2)2+(y-2)21c2=(x+2)2+(y-2)21c3=(x+2)2+(y+2)21c3=(x+2)2+(y+2)21c4=(x-2)2+(y+2)21c4=(x-2)2+(y+2)21main()main()int h,c1,c2,c3,c4;int h,c1,c2,c3,c4;float x,y;float x,y;scanf(“%f%f”,&x,&y);scanf(“%f%f”,&x,&y);c1=(x-2)c1=(x-2)*(x-2)+(y-2)(x-2)+(y-2)*(y-2)=1;(y-2)=1;c2=(x+2)c2=(x+2)*(x+2)+(y-2)(x+2)+(y-2)*(y-2)=1;(y-2)=1;c3=(x+2)c3=(x+2)*(x+2)+(y+2)(x+2)+(y+2)*(y+2)=1;(y+2)=1;c4=(x-2)c4=(x-2)*(x-2)+(y+2)(x-2)+(y+2)*(y+2)=1;(y+2)=1;if(c1|c2|c3|c4)h=10;if(c1|c2|c3|c4)h=10;else h=0;else h=0;printf(“n h=%d”,h);printf(“n h=%d”,h);第六章 循环控制 61 概述 所谓循环控制,就是如何实现循环结构的控制问题。有4种方法:用goto语句和if构成循环。用while语句。用do-while语句。用for语句。6 62 2 用用gotogoto语句和语句和ifif语句构成循环语句构成循环例例:对于计算对于计算 s=1+2+3+4+5+6+7+8+9+10s=1+2+3+4+5+6+7+8+9+100 s1 is+i s i+1 ii10 输出syn s=0;s=0;i=1;i=1;lable:s+=i;lable:s+=i;i+;i+;if(i=10)goto lable;if(i=10)goto lable;printf(“%d”,s);printf(“%d”,s);语句标号 无条件转向语句 goto goto 语句可以构语句可以构造循环,但不主张用,造循环,但不主张用,因为它容易破坏结构因为它容易破坏结构化程序设计。化程序设计。goto 语句可以构造循环,但不主张用,因为它容易破坏结构化程序设计。6 63 while3 while语句语句 whilewhile语句是专门用于实现循环控制的语语句是专门用于实现循环控制的语 句之一。句之一。其一般形式为:其一般形式为:while(while(表达式表达式)语句语句 含义:当表达式的值为非含义:当表达式的值为非0 0时,执行循环体,时,执行循环体,否则执行后续语句。否则执行后续语句。语句关键 表达循环条件的表达式循环体 语句关键字 执行过程:while(表达式)语句 表达式循环体0非0i10?s=0 i=1s=s+ii=i+1例:用例:用whil
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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