第2章 C语言简单程序设计_第1页
第2章 C语言简单程序设计_第2页
第2章 C语言简单程序设计_第3页
第2章 C语言简单程序设计_第4页
第2章 C语言简单程序设计_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第2章章 C语言简单程序设计语言简单程序设计 l2.1 C程序概述程序概述 l2.2 数据数据常量和变量常量和变量 l2.3 运算运算表达式表达式和语句和语句 l2.4 控制台控制台输入输出输入输出 l程序有五个基本要素数据、运算、 控制结构、过程和数据结构。数据是计算 机加工的对象,程序中称为“操作数”, 有常量和变量之分;简单的运算由运算符 施加到操作数上实现;控制结构改变程序 的运行流程,从而实现更加复杂的运算; 过程(函数)实现程序的模块化;数据 结构对数据之间的关系进行表达,其目的 是将多个数据组织成为一个有机的整体。 l2.2.1 C语言的常量语言的常量 l2.2.2 变量和有名

2、常量变量和有名常量 l什么是常量什么是常量 l逻辑型常量逻辑型常量 l整型常量整型常量 l浮点常量浮点常量 l字符常量字符常量 l字符串常量字符串常量 l常量是程序运行过程中始终不变的数据, 常量一般由一定格式的数字和符号表示, 称为“文字常量”,也可以用一个标识符 代替,称为“有名常量”。这里首先阐述 语言的文字常量,有名常量将作为数据 对象之一,与变量一同阐述。 l对于不同的数据类型来说,其文字常量的 表示方法也不同。除了几种基本数据类型 外,语言还多了一种“字符串常量”。 l逻辑型常量只有“真”和“假”两个,旧 的C语言标准(如ANSI C)没有专门的逻辑 型常量,它用 1 表示真、0

3、表示假。C99 标准和 C+ 语言增加了逻辑数据类型bool 和逻辑型常量 true 和 false,true表示真、 false表示假,例如: bool flag = true; printf(%d, flag);/ 输出1 flag = false; printf(%d, flag);/ 输出0 l整型常量可用不同的进制表示,并可加后 缀“L”特指其代表长整型。 l十进制整常量的例子: -128,32767 / 十进制整型常量 2147483647L / 后缀L表示该数为长整型常量 l十六进制整常量的例子: 0 x5e / 前缀0 x代表其后的数为十六进制数 0 xffffffffL /

4、代表int型整常量-1 l如果前缀不是0 x而是0,则其后为八进制数 l浮点常量用习惯法和“科学法”两种方法 之一表示,可以加后缀“F”(前面的数必须 带小数点)特指其代表float型常量。 l习惯法浮点常量的例子: 3.14159 / double型常量 -123.0F / float型常量 l科学法浮点常量的例子: 0.31415926e1 / = 0.3141926101 (double型) -12345.6e-4F / = -12345.610-4(float型) l字符常量用一对单引号引起的一个字符来 表示。该字符可以是ASCII编码表中的字符 之一,也可以是反斜杠后加一个特殊字符

5、构成的“转义字符”,或反斜杠后加一个 代表其 ASCII码 的八进制或十六进制数。 l字符型常量的例子: A、1 、, / ASCII表中的字符 n(换行)、 t(跳格)/ 转义字符 101(八进制) 、x41(十六进制) / 字符“A” l语言中没有字符串类型,即不能将一个 字符串存入一个变量,但可以文字的形式 (将一串字符置于一对双引号中)表示出 该字符串,例如: printf(Hello world!n);/ 双引号中为字符串 l这种方式表示出的字符串可认为是字符串 常量。与其它文字常量(不占内存)不同, 该常量在内存中建立了以字符(即ASCII 码为0的字符)结尾的字符串映像。 l变量

6、和有名常量统称为数据对象,必须用 代表数据类型的关键字声明后才能使用。 一旦声明后,系统便会在内存中为其分配 一个单元(长度由数据类型决定),并以 该数据类型的二进制编码存放数据。 l声明变量和有名常量的语法分别为: 类型关键字 变量名 = 初值, 变量名 = 初值; const 类型关键字 常量名=初值,常量名=初值,; l例如: int x = 3, y = 4, z;const double PI = 3.1416; l2.3.1 表达式概述表达式概述 l2.3.2 算术表达式算术表达式 l2.3.3 逻辑表达式逻辑表达式 l2.3.4 位表达式位表达式 l2.3.5 赋值表达式和复合表

7、达式赋值表达式和复合表达式 l2.3.6 条件表达式条件表达式 l2.3.7 类型转换类型转换 l2.3.8 语句语句 l表达式的概念表达式的概念 l优先级与结合性的概念优先级与结合性的概念 l表达式是由操作数与运算符的有效组合构 成的有意义的算式(其中可以用括号改变 运算顺序),运算的结果产生一个值运算的结果产生一个值。 l根据运算的方式和产生值的类型,表达式 可分为算术表达式、逻辑表达式、赋值和 复合表达式、条件表达式和位表达式,再 根据运算符进一步分类。根据一个运算符 有关的操作数的数目,运算符可分为单目 运算符、双目运算符和三目运算符。 l表达式求值,是以运算符的“优先级”为 次序进行

8、运算的。算术运算符的优先级与 数学一致,即先乘除后加减。其它运算符 及它们与算术运算符的优先级详见后述。 括号可以改变默认的优先次序。 l如果操作数两侧的运算符的优先级相同, 则运算按照默认的“结合性”进行处理。 规定算术运算符的结合性为自左向右, 而赋值运算符的结合性为自右向左。 l数学表达式数学表达式 l数学表达式示例数学表达式示例 l增量表达式增量表达式 l增量表达式示例增量表达式示例 l数学表达式是对数据进行数学运算的表达 式。C语言的数学运算符有5个: 算符:+ - * / % 运算:加减乘除 取余数 (单、双目) |_(双目)_| l同一数学运算符对于不同的数据类型有不 同的定义,

9、例如 3/4 = 0,而 3./4. = 0.75。 l数学运算符的优先级与结合性: 优先级:先乘除(优先级高)、后加减(优先级低) 结合性:同优先级的运算自左向右进行。 / 例2.1 将一个0255的十进制数转换为二进制数后自低到高位逐行输出 #include int main() short x, r; printf(x = ); scanf(%d, r = x % 2; x = x / 2; printf(%dn, r); r = x % 2; x = x / 2; printf(%dn, r); r = x % 2; x = x / 2; printf(%dn, r); r = x %

10、 2; x = x / 2; printf(%dn, r); r = x % 2; x = x / 2; printf(%dn, r); r = x % 2; x = x / 2; printf(%dn, r); r = x % 2; x = x / 2; printf(%dn, r); r = x % 2; x = x / 2; printf(%dn, r); return 0; lC+的增量运算符有2个: 算符: + - 运算:自增1自减1 l即增量表达式是将变量变量自身的值增 1 或 -1 (减1)的运算,例如: int i = 3, j = 4;/ i 的初值为3,j 的初值为4 i

11、+;/ i 的值变为4 j -;/ j 的值变为3 printf(%dn, i - j); / 输出1 / 例2.2 将一个0255的十进制数转换为二进制数后自低到高位逐行输出 #include int main() short x, r, i = 0; printf(x = ); scanf(%d, r = x % 2; x = x / 2; i +; printf(第%d位:%dn, i, r); r = x % 2; x = x / 2; i +; printf(第%d位:%dn, i, r); r = x % 2; x = x / 2; i +; printf(第%d位:%dn, i,

12、 r); r = x % 2; x = x / 2; i +; printf(第%d位:%dn, i, r); r = x % 2; x = x / 2; i +; printf(第%d位:%dn, i, r); r = x % 2; x = x / 2; i +; printf(第%d位:%dn, i, r); r = x % 2; x = x / 2; i +; printf(第%d位:%dn, i, r); r = x % 2; x = x / 2; i +; printf(第%d位:%dn, i, r); return 0; l关系运算符关系运算符 l逻辑运算符逻辑运算符 l逻辑运算示

13、例逻辑运算示例 l关系运算是比较两个数学表达式的值的大小 的运算,关系运算符共有6个: 算符: = = = != 运算:小于 小于等于 大于 大于等于 等于 不等于 |_ 优先级相同(高)_| |优先级相同(低)| l关系运算结果的类型为 bool,值为 true 或 false之一。 l例如: int a = 3, b = 4; /则ab的值为false, a=b的值为true l逻辑运算是对逻辑值进行与、或、非运算, 逻辑运算符共有3个: 算符: ! bool xy, yz, and, or; printf(x = ); scanf(%d, printf(y = ); scanf(%d,

14、printf(z = ); scanf(%d, xy = x y; yz = y z; and = xy or = xy | yz; printf(x y xy = x z; and = xy or = xy | yz; printf(x z = %d t x z = %dn, and, or); xy = x y; yz = y y yz = y z; and = xy or = xy | yz; printf(x y return 0; l位运算位运算 l按位与按位与 运算符运算符 / 用11111110将a的最低位置0 取指定位。假设c为char型,a为int型,则 lc = a / 用

15、11111111将a的低字节置1 l规则: 若两个操作数的某对应位相同,则结果该位为0; 若两个操作数的某对应位不同,则结果该位为1. l用途: 使特定位翻转(注意某位与 0 异或保持原值,与 1 异或取反),例如将01111010的低四位翻转: 0 1 1 1 1 0 1 0 () 0 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1 l为单目运算符 l规则: 对一个二进制数按位取反。 l举例:求0 x15 0 x15:0000000000010101 0 x15:1111111111101010 l为双目运算符,对应的表达式为 x k (k为整型数) l规则: 将一个二进制数的所

16、有位左移 k 位,左移后低位 补0,高位舍弃。 l举例: 0 x0fff:0000111111111111 0 x0fff 为双目运算符,对应的表达式为 x k (k为整型数) l运算规则 将一个二进制数的所有位右移 k 位,右移后低位 舍弃,高位: l无符号数:补 0 l有符号数:补“符号位” l举例: 0 xffff:1111111111111111 0 xffff 4: 1111111111111111 l SA-CP3粒度仪测试完一个样品后,从串口输出的 某个字节SW-STATUS代表了仪器开关的状态: 7 6 5 4 3 2 1 0 SAM- PLER EXPR. SUMM ACCE

17、L MODE MODEbit 10 GRAV00 CENT01 MULT10 LIFT11 ACCELbit 32 000 12001 24010 48011 SUMMbit 4 ON1 OFF0 EXPR.bit 5 OVER1 UNDER0 SAMP.bit 6 ON1 OFF0 若从该字节获得MODE、ACCEL等的值,则必须使用位运算。 Description of bit for SW-STATUS l赋值表达式赋值表达式 l复合表达式复合表达式 l赋值和复合表达式示例赋值和复合表达式示例 l赋值表达式的一般形式是: 变量 = 表达式 l其运算是将赋值运算符“=”右边表达式的值 赋给

18、左边的变量变量,表达式的值为左边变量 的值。赋值运算符的结合性自右向左,例 如: a = 5/ 结果:a为5, 表达式的值为5 a = b = c = 5 / 相当于 a = (b = (c = 5), 值为5 a = 5 + (c = 6) / 结果:c为6, a为11, 值为11 a = (b = 4) + (c = 6) / c为6, b为4, a为10, 值为10 l复合运算符是由赋值运算符与算术运算符 或位运算符复合而成。有十种复合运算符: +=, -=, *=, /=, %= (算术运算符与赋值算符复合) =, / 等价于 a = a + 3; x *= y + 8;/ 等价于 x

19、 = x * (y + 8); u %= 2;/ 等价于 u = u % 2; v = 2;/ 等价于 v = v 2; / 例2.2 将一个0255的十进制数转换为二进制数后自低到高位逐行输出 #include int main() short x, r, i = 0; printf(x = ); scanf(%d, r = x % 2; x /= 2; i +; printf(第%d位:%dn, i, r); r = x % 2; x /= 2; i +; printf(第%d位:%dn, i, r); r = x % 2; x /= 2; i +; printf(第%d位:%dn, i,

20、 r); r = x % 2; x /= 2; i +; printf(第%d位:%dn, i, r); r = x % 2; x /= 2; i +; printf(第%d位:%dn, i, r); r = x % 2; x /= 2; i +; printf(第%d位:%dn, i, r); r = x % 2; x /= 2; i +; printf(第%d位:%dn, i, r); r = x % 2; x /= 2; i +; printf(第%d位:%dn, i, r); return 0; l语法和语意语法和语意 l程序实例程序实例 语法和语义语法和语义 l条件运算符“? :”为

21、唯一一个三目运算符, 条件表达式的语法为: (表达式1)?(?(表达式2):( (表达式3) l条件表达式的语义为: 求解表达式1,若值为true,则求解表达式2,并将 表达式2的值作为条件表达式的值,否则,求解表 达式3,并将表达式3的值作为条件表达式的值。 l举例:计算x的绝对值并存入y中。 y = (x = 0) ? x : -x; 程序实例程序实例 / 输入一个考试分数,打印它所对应的成绩段(用条件表达式实现) #include int main() int mark; printf(请输入分数:); scanf(%d, printf(成绩级别为:%sn, mark = 90 ? 优

22、: mark = 80 ? 良 : mark = 70 ? 中 : mark = 60 ? 及格 : 不及格); return 0; l运算符的优先级运算符的优先级 l自动类型转换自动类型转换 l强制类型转换强制类型转换 ( ) +,-,sizeof *, /, % +, - =, != , , = 位运算 ! double x = 3.1416; int b = a * (int)x; l强制类型转换是一种不安全的转换,当类 型关键字所代表的类型较表达式的类型低 时,部分数据(如小数部分)可能会丢失。 l语句(statement)是程序的基本运算单元, 它完成变量 (或对象) 的声明以及具体

23、运算 的执行。简单的语句以分号结尾,例如: int i = 1, sum = 0; / 声明2个整型变量并赋初值 l“复合语句”是由包含于一对花括弧中的 一个或多个语句构成: sum += i; i+; / 由2个语句构成的复合语句 l一个控制结构也称为一个statement, 由一组 关键字和一个语句(包括复合语句)构成: do sum += i; i +; while (i =10); / 控制结构 l2.4.1 关于输入输出关于输入输出 l2.4.2 C的标准输出函数的标准输出函数 l2.4.3 C的标准输入函数的标准输入函数 l要对数据进行运算,人们必须将数据首先 送入内存,运算之后再将结果送到外设。 输入是指将数据从外设送入内存的过程; 输出是指将数据从内存送出到外设的过程: l输入输出由程序控制,不同的语言有不同 的输入输出控制方法, C语言的输入输出是 通过函数实现的。所谓控制台输入输出, 是指针对键盘/显示器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论