




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C,基础知识,专题一:,热身练习:,1.已知各变量的类型说明如下,则以下不符合C语言语法的表达式是。 int k,a,b; unsigned long w=5; double x=1.42; A) x%(-3) B) w+=-2 C) k=(a=2,b=3,a+b) D) a+=a-=(b=4)*(a=3),热身练习:,2.设x、y、t均为int型变量,则执行语句:x=y=3;t=+x|+y;后,x 的值为 ,y的值为 。 A)不定值 B) 4 C) 3 D) 8,热身练习:,3.有如下定义,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式
2、是。 int a1,a2; char c1,c2; scanf(“%d%d”, A) 1020AB B) 10 20 AB C) 10 20AB D) 10 20 AB,一、语言的特点,、语言简洁、紧凑,使用方便、灵活;一共有32个关键字,9种控制语句,主要用小写字母表示。,一、语言的特点,九种控制语句:,一、语言的特点,2、运算符丰富:共有34种运算符。 算术运算符、关系运算符、逻辑运算符、位操作运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符、特殊运算符等。 3、数据结构丰富: 的数据类型有:整型、实型、字符型、数组类型、结构体类型、共用体类型、指针类型、空类型等。,
3、一、语言的特点,4、具有结构化的控制语句; 5、语法限制不太严格,程序设计自由度大; 6、C语言能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作; 7、生成目标代码质量高,程序执行效率高; 8、用C语言编写的程序可移植性好。,二、语言的词汇,在语言中使用的词汇分为六类: 标识符:变量名、函数名、标号等统称为标识符 标识符只能是字母、数字、下划线组成的字符串,并且第一个字符必须是字母或下划线,用户定义的标识符不应与关键字相同。 关键字:由语言规定的具有特定意义的字符串 运算符:与变量、函数一起组成表达式,实现运算功能 分隔符:逗号和空格 常量:数字常量、字符常量、字符串常量、符号
4、常量、转义字符 注释符:“/*”开头并以“*/”结尾的串,三、数据类型,(一)基本类型的分类及特点,【注】带*号表示的数据类型与机器硬件有关,(二)变量在内存中的存放形式,1、整型数据在内存中以补码形式存放 正数:原码即为补码(该数的二进制数) 负数:(1)取绝对值 (2)求绝对值的二进制形式 (3)将二进制按位取反 (4)再加上1,可得补码 注意:若给出一个数在内存中的存放形式,先看最高位来判断是正负数。,-10在机器内存中的存放形式,(二)变量在内存中的存放形式,求-10的补码过程: 10的原码: 0000000000001010 按位取反: 1111111111110101 再加1,得-
5、10的补码: 1111111111110110,(二)变量在内存中的存放形式,有符号整型变量:最大表示32767 无符号整型变量:最大表示65535,(二)变量在内存中的存放形式,解决整型数据的溢出问题 如:int a=32767,b; b=a+1;printf(“%d”,b);,b= -32768,(二)变量在内存中的存放形式,2、实型数据在内存中的存放形式 实型数据一般占4个字节(32位)内存空间。按指数形式存储。实数3.14159在内存中的存放形式如下:,三、数据类型变量,main() float a; double b; a=33333.33333; b=33333.333333333
6、33333; printf(%fn%fn,a,b); 由于a 是单精度浮点型,有效位数只有七位。而整数已占五位,故小数二位后之后均为无效数字。 b 是双精度型,有效位为十六位。但Turbo C 规定小数后最多保留六位,其余部分四舍五入。 double d=12.3456789;printf(“%lf”,d);,三、数据类型常量,1、整数常量 十进制整数:带符号,09组成,第一位数字为非零(除零外) -456 八进制整数:07组成,最高位用0引导 0123=(123)8=(83)10 十六进制整数:09及af 或 AF组成,最高位用0 x或0X引导, 0 x123=(123)16=(291)10
7、 整数常量后加字母u或U表示该数为无符号型,加字母l或L表示该数为长整型 12345u 123L,三、数据类型常量,2、实型常量 在C中有两种表示方法: 十进制小数形式:0.0、25.0、300.、-267.8230等。 注意,必须有小数点。 指数形式:men(或mEn)表示 m*10n (这里m为非0实数,n为整数)。如:12.3E-2表示12.3*10-2 在C编译系统中,将浮点型常量 作为双精度来处理,以下不是合法的实数,请说明理由: 345 E7 -5 53.-E3 2.7E,三、数据类型常量,3、字符常量-转义字符,三、数据类型常量,3、字符常量-转义字符 ddd 输出一到三位八进制
8、数所对应的字符 xhh 输出一到两位16进制数所对应的字符 例如: char a=101, b=x41; putchar(a); putchar(b);,答案:A A,三、数据类型常量,字符常量就是一个普通整数,也可参与各种数学运算 每个字符具有一个0255之间的数值,可从ASCII表查出 注意:5和整数5的区别 5的ASCII码值是53 思考: 6 2的值是多少?,例题:小写字母转换为大写字母,#include main() char ch = b; printf(%c, %dn, ch, ch); ch = b - 32; printf(%c, %dn, ch, ch); ,#includ
9、e main() char ch = b; printf(%c, %dn, ch, ch); ch = b - (a - A) ; printf(%c, %dn, ch, ch); ,b, 98 B, 66,b, 98 B, 66,相当于97-65,三、数据类型常量,4、字符串常量 用双引号括住的由0个或多个字符组成的字符序列 I am a string 表示空字符串 除注释外,是唯一可以出现中文的地方 C语言内部用0表示字符串的结束 x和x是不同的 里定义了一系列专门的字符串处理函数 转义字符也可在字符串中使用,实践挑战:,1、设:char *s=“ta017bc”; 则strlen(s)的
10、值为( )。 (04南师大) 2、在一个32位系统中(如Windows XP),若定义char *s=010010010n;则sizeof(s)的值为( ),strlen(s)的值为( ),答案:1、52、29,sizeof 到底是什么?,C语言的关键字,并非函数 计算类型占用的字节数 两种语法形式 sizeof(类型) 结果为类型占用的字节数 sizeof(表达式) 结果为表达式值所属类型占用的字节数 一般都使用sizeof(变量名),strlen( )到底是什么?,strlen( )是函数,返回字符串中所包含的字符个数。 注:统计时不包括0 两种语法形式 strlen(字符串) 如:str
11、len(“abcd”); strlen(字符指针变量); char *s=“abc; stelen(s);,三、数据类型常量,宏常量 也称符号常量 一般采用全大写字母表示 宏定义不是语句,而是一种编译预处理命令 格式如下: #define 标识符 字符串 使用时,将标识符用字符串完全替换,正确的实例:计算圆的周长和面积,#include #define PI 3.14159 #define R 5.3 main() printf(area = %fn, PI * R * R); printf(circumference = %fn, 2 * PI * R); ,area = 88.247263
12、 circumference = 33.300854,相当于执行 #include main() printf(area = %fn, 3.14159 * 5.3 * 5.3); printf(circumference = %fn, 2 * 3.14159 * 5.3); ,宏替换,错误实例 :计算圆的周长和面积,#include #define PI 3.14159; #define R 5.3; main() printf(area = %fn, PI * R * R); printf(circumference = %fn, 2 * PI * R); ,相当于执行 #include m
13、ain() printf(area = %fn, 3.14159;*5.3;*5.3;); printf(circumference = %fn, 2*3.14159;*5.3;); ,语法错误,实践挑战:,3、在C语言中,宏定义 #define PI 3.14159 中,用宏名PI代替了一个()(南师大06) A.单精度数 B.双精度数 C.字符序列 D.常量,答案:C,枚举(Enumeration)常量,enum weeks SUN, MON, TUE, WED, THU, FRI, SAT;/*声明了一个枚举类型*/ enum weeks today; /*用上面类型定义变量*/ tod
14、ay = TUE; /*变量today只能在上面定义的范围内取值*/ enum response no, yes, none; enum response answer; answer = yes; enum response no = -1, yes = 1, none = 0;,其值为2,其值为1,四、运算符,常见的运算符 算术运算符 赋值运算符 类型强转(强制类型转换) 关系运算符 逻辑运算符 增和减 位运算符,四、运算符,运算符有三个属性: 运算元数:最少1个,最多3个 -1; 32?3:2 优先级: 结合性:即指运算符与运算元的结合方向,用于指导同级的运算 表达式:运算元与运算符的组
15、合式 a*b/c-2.2+A,简化后的优先级: 1一级运算符 2单变量运算符 3算术运算符 4位运算符 5关系运算符 6位逻辑运算符 7逻辑运算符 8条件运算符 9赋值运算符 10逗号运算符,四、运算符基本的算术运算符,当两个整数相除时,其结果为整数,即舍去小数部分。如:10/3=3;,四、运算符,赋值运算符及赋值表达式 简单的赋值运算符用“=”表示 属于双目运算符 优先级较低,仅高于逗号 具有右结合性 由“= ”连接的式子称为赋值表达式 功能是计算表达式的值再赋予左边的变量 a=b=c=5可理解为 a=(b=(c=5) 赋值表达式的值就是“=”号右侧的值 x=(a=5)+(b=8),四、运算
16、符,复合的赋值运算符 在赋值符“=”之前加上其它二目运算符可构成复合赋值符。如+=,-=,*=,=,%=,=, float f=1.5; d=f; 反之是不安全的 若大类型的值在小类型能容纳的范围之内,则平安无事 double d=1.5; float f; f=d; 若浮点数转为整数,会丢失小数部分,非四舍五入 int i; float f=1.64; i=f;(i的值为1) 反之,转换后的结果必然是错误的,具体结果与机器和实现方式有关 double d=123.456789e100; float f; f=d;,Example: int x = 10; float y; y = (floa
17、t)x;,(float)10,10.000000,消除从大到小的警告 x = (int)y; 通过下面方式把表达式的值转为任意类型 (类型)表达式,不改变x,强制类型转换,Example: int total, number; float average; average = total / number;,15 / 2,7,两个整数运算的结果 还是整数,不是浮点数,强制类型转换,Example: int total, number; float average; average = (float)total / number;,15.000000 / 2,7.500000,强制类型转换,增一
18、和减一运算符,n+,n-,+n,-n +让参与运算的变量加1,-让参与运算的变量减1 作为后缀(postfix)运算符时,先取n的值,然后加/减1,n+,n-,+n,-n +让参与运算的变量加1,-让参与运算的变量减1 作为后缀(postfix)运算符时,先取n的值,然后加/减1 作为前缀(prefix)运算符时,先加/减1,然后取n的值,增一和减一运算符,例如: j = +i - 2,等价于: i = i + 1; j = i 2;,4,6,增一和减一运算符,例如: j = i+ - 2,等价于: j = i 2; i = i + 1;,3,6,增一和减一运算符,例:输出结果和变量a的值?
19、int a=3; printf(%d,-a+);,等价于: printf(%d,-a); a = a + 1;,4,增一和减一运算符,例题:,main() int i=5,j=5,p,q; p=(i+)+(i+)+(i+); q=(+j)+(+j)+(+j); printf(%d,%d,%d,%d,p,q,i,j); ,解析: 对p=(i+)+(i+)+(i+)应理解为三个i相加,故P值为15。然后i再自增1三次相当于加3故i的最后值为8。 而对于q的值则不然,q=(+j)+(+j)+(+j)应理解为q先自增1,再参与运算,由于q自增1三次后值为8,三个8相加的和为24,j的最后值仍为8。,四、运算符,逗号运算符和逗号表达式 功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式。 其一般形式为: 表达式1,表达式2 分别求两个表达式的值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 婚纱摄影行业线上线下融合发展方案
- 液压升降平台生产制造项目可行性研究报告
- 医院下乡宣传课件
- 健康理念课件
- 健康照护实操课件下载
- 蚌埠充电桩管理办法规定
- 行政学院培训费管理办法
- 西安市出入商场管理办法
- 衢州市文物保护管理办法
- 襄阳五中精细化管理办法
- DNF装备代码大全
- 基于Qt的俄罗斯方块的设计(共25页)
- 西门子顺序功能图语言S7-Graph的应用
- 中医治疗室工作制度管理办法
- 提花装造工艺技术培训课程
- 食堂投诉处理方案
- 北京市昌平区2021-2022学年八年级上学期期末考试语文试卷(word版含答案)
- 直播传媒公司简介PPT课件(参考)
- 水电工程分包劳务合同
- 五谷杂粮食品安全调查
- 固体废物处理中心项目建议书范文
评论
0/150
提交评论