




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章 顺序程序设计 3.1 顺序程序设计举例(略),3.2 数据的表现形式及其运算 3.2.1 常量与变量 常量与符号常量 常量 在程序运行过程中其值保持不变的量。 符号常量 用来代表一个常量的标识符。 #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.2.2 数据类型,在程序设计中需要根据需要选择合适的“类型”来定义变量。 可选择的数据类型见图3.4 基本类型整型浮点型字符型 枚举类型 空类型 派生类型,3.2.3 整型数据 整型常量 即整常数,c的整常数有三种形式: 十进制整数 与数学中的整数一致,如:100,123,15等。 八进制整数 以0开头的整数,如:010,07,020等。 十六进制整数 以0x开头的整数,如:0x10,0xff,0x2a等。,整型变量 用于存放整数的变量。 分4种类型: 基本型:int a 16位,可表示的数值范围:-3276832767 32位,数值范围:-21474836482147483647 短整型:short int b 16位,可表示的数值范围:-3276832767 长整型:long int c 32位,数值范围:-21474836482147483647,无符号型:加上 unsigned 只存放正数。 如:unsigned short int x 变量x为无符号整数,16位全表示数码, 数值范围:065535 在程序设计中,如果要使用整型变量,必须首先选择以上类型符来定义变量,然后才能使用;,例: main() 定义 int a,b,c; a=100; b=50; 使用 c=a+b; printf(“%d”,c); 一般根据什么原则选择变量的类型?,3.2.4 字符型数据 字符常量 用单引号括起来的一个字符。 a,x,*,1等 除此外,以开头的字符如n,t等 称为转义字符,祥见书表3.1,字符型变量 用于存放字符的变量。 char c1,c2 定义c1和c2为字符型变量 c1=a; c2=b; 字符赋值 字符型变量存放一个字符,占据一个字节,字符型数据的存储形式 存放ASCII码 不是 而是 如字符a在内存中存放97,b 存放98。 与整数的存储形式一致,它们之间可以通用 一个字符数据既可以作字符用,也可以作整数用(取其ASCII代码)。 如:32+a相当于 32+97 若 int x; char c; 则 x=a; c=97; x=97; c=a; 都允许,字符串常量 用双引号括起来的字符序列。 如:”abcde”,”china” ”a”也属字符串。 注意”a”与a的区别。 对于: char c; c=”a”; 用法错误,字符串中每个字符各占一个字节,并且在字符串结尾加上一个结束标记0 如:”china” 在内存中占6个字节。 c h i n a 0 C语言中专门的字符串变量,可用字符数组存放(以后介绍)。,3.2.5 实型数据 实型常量 可使用两种形式表示: 小数形式:如 1.23, 3.1415926 15.48 指数形式:如 1e-20 1.23e5,实型变量 用于存放实数的变量 分单精度和双精度两种: float a,b 定义a和b为单精度型变量 32位,7位有效数字,10-381038 double x,y 定义x和y为双精度型变量 64位,15位有效数字,10-30810308,例: main() float r,c; double r,c; r=5; c=2*3.1415926*r; printf(“%f”,c); ,3.2.6 各数值型数据间的混合运算 整型、实型、字符型数据间可以进行混合运算,如: 10-a*1.5 运算时,参加运算的两个数据如果类型不同,则首先将其类型转换成一致再运算,转换规则是: 将优先级低的类型转换到优先级高的类型,数据类型的优先级: 高 double float long unsignde 低 int char,3.2.7 算术运算符与算术表达式 基本的算术运算符 + - * / % 算术表达式 用算术运算符将运算对象连接起来的式子 用于表达数学公式的式子 如:2*x+y-1/a 表达式经过运算最终得到一个值: 算术表达式的值,运算符的优先级与结合性 优先级: 在对表达式求值时,如果存在多个运算符,则运算的先后次序按运算符的优先级别从高到底进行。 运算符的优先级关系为: 高:* / % 低:+ - 如:a-2*x 先算 * 2*(a+2) 有括号的情况?,结合性: 如果在一个运算对象两边的运算符的优先级相同,则按规定的“结合方向”处理。 如:a-b+c b与-结合是从左到右,称“左结合性”。 b与+结合是从右到左,称“右结合性”。 每个运算符都有相应的优先级和结合性。 基本算术运算符都是左结合性。,计算表达式例: 2+A-1/2.0 1+3/2-1 构造表达式例 2x2+3x-1,a+b a-b,a+b a-b x+y x-y,a+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) (float)(7%3),应用举例: 若在Turbo C下运行: int a=200,b=300,c; c=a*b/100; ? 可知,有自动转换和强制转换, 当自动转换达不到目的时,可用强制转换。,c=(long)a*b/100;,c=(long)(a*b)/100;,自增、自减运算符 自增运算符:+ 使变量值加1 自减运算符:- 使变量值减1 两种用法: +i, -i 先加(减)后用 i+, i- 先用后加(减) 两种用法对i效果一样,但表达式的值不同。 例:假设i的原值为5: 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-;,5,5,6,5,0,6,7,-2,6,-1,两种特殊情况: k=(i+)+(i+)+(i+) i+j 是 i+(+j) 还是 (i+)+j ? i+虽然与i=i+1等效,但使用自增自减运算符的代码优化程度好,因而经常使用;但用时需特别小心。,3.2.8 赋值运算符和赋值表达式 赋值运算符 “=”称赋值运算符,其作用是将一个数据赋给一个变量。 如: a=5 不要理解为“等号”。 执行赋值运算的结果,是将右边的数据存入左边变量所对应的内存单元中。,赋值规则 如果赋值运算符两侧的类型不一致,则在赋值时要进行类型转换,转换规则为: 实型整变量 舍去小数部分。 int a=5.5; a中为5。 整型实变量 数值不变,以浮点形式存储。 字符型整变量 放在整形变量低8位。保持原值不变原则。 int a=A;,复合赋值运算符 在赋值运算符前加上其它运算符,可以构成复合赋值运算符。 a+=3 a=a+3 b-=x+5 b=b-(x+5) x*=c-6 x=x*(c-6) y/=a*4 y=y/(a*4) k%=b-2 k=k%(b-2) 属于高效率运算符。,赋值表达式 主要实现赋值运算的表达式。 一般形式: = 如: a=5 y=2*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.2.9 逗号表达式 逗号也是一种运算符,用它对两个表达式实现连接运算。 3+5,6+8 称逗号表达式。 逗号表达式的一般形式: 表达式1,表达式2 取表达式2的值作为整个逗号表达式的值。 如: a=3*5,a*4 逗号表达式的值为:60,一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如: (a=3*5,a*4),a+5 因此,逗号表达式的一般形式可以扩展为: 表达式1,表达式2,表达式3,, 表达式n 取表达式n的值作为整个逗号表达式的值。 逗号运算符的优先级最低,且是左结合性。 逗号运算符只起到连接作用,没有实际操作。,3.3 最简单的C程序设计,C 程序最基本的成分是语句 目前我们已掌握的语句: 变量说明语句: int a,b,c; 表达式语句: x+y; 特别地: a=5; 赋值语句,可以编写简单程序如: main() int x,y; x=5; y=2*x*x+3*x-1; 该程序语法上完整,但还缺少输出。,数据的输出 用输出函数实现,其中的两种输出函数: 1.putchar 函数 (字符输出函数) 用于输出一个字符。 如: putchar (a); putchar (100); 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函数(格式输出函数) 任意类型、任意格式、任意个数。 例如: int a=100,b=56; printf(“a=%d,b=%d”,a,b); 普通字符 格式说明 格式控制 输出表列 输出结果:a=100,b=56 “%” 后的字符称格式字符,不同格式字符对应不同的数据类型。,d格式符:按整数格式输出 几种用法: %d 不指定宽度,按实际宽度输出 %md 按指定宽度输出,m为宽度 %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格式符:用于输出字符 char c=A; printf(“c=%c,%c”,c,B); 输出结果:c=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 不指定宽度 %-ms 指定宽度,左靠齐 %ms 指定宽度,右靠齐 %m.ns 指定宽度m,只取左端n个字符, 右靠齐 %-m.ns 指定宽度m,只取左端n个字符, 左靠齐,例: printf(“1:%s”,”abcd”); printf(“2:%8s”,”abcd”); printf(“3:%-8s”,”abcd”); printf(“4:%8.3s”,”abcd”); printf(“5:%-8.3s”,”abcd”); 1:abcd2: abcd3:abcd 4: abc5:abc,f格式符:按小数形式输出实数 %f 由系统指定宽度(6位小数) %m.nf 指定宽度m,小数位数n,右靠齐 %-m.nf 指定宽度m,小数位数n,左靠齐 注意:宽度包括符号和小数点。,例: float a=3.141592654,b=14.326795, c=-125.2468; printf(“na=%f,b=%8.3f,c=%-10.2f”,a,b,c); 输出结果: a=3.141592,b= 14.326,c=-125.24,完整前面的程序:,main() int x,y; x=5; y=2*x*x+3*x-1; printf(“n y=%d”,y); ,程序设计例:,编写程序计算如图中的电流I. 假设 U=220,R1=30,R2=60,R3=45,U,I,R1,R2,R3,算法设计: I=U/R1+U/R2+U/R3 程序设计: main() ,I=U/R1+U/R2+U/R3;,int U=220,R1=30,R2=60,R3=45; float I;,printf(“n 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)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度化妆品原产地直供代理合作协议书
- 2025版财务顾问服务协议及企业财务信息化建设
- 二零二五版甲级办公场地租赁管理协议
- 2025版高新技术产业财政借款合同范本
- 二零二五年度保密协议培训与信息安全培训合同
- 健康膳食产品企业运营体系
- 儿童腹泻护理个案模板
- 周口市郸城县招聘乡镇专职消防员笔试真题2024
- 儿科护理工作简历
- 危险我不碰-中班健康活动
- 2024年安徽省合肥市北城片区七年级数学第一学期期末学业水平测试试题含解析
- 2025至2030中国铜冶炼行业发展现状及应用需求现状分析报告
- 农业保险培训课件
- 茶园租赁合同(含茶叶加工销售)
- 2025至2030全球及中国浮式液化天然气行业产业运行态势及投资规划深度研究报告
- 药品连锁总部管理制度
- 2025至2030中国家用清洁工具行业发展趋势分析与未来投资战略咨询研究报告
- 20250617国金证券机器人行业研究垂直领域具身智能机器人的野望416mb
- 数字时代亲属关系重构-洞察及研究
- 管理类本科论文
- 招商人员笔试题目及答案
评论
0/150
提交评论