已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AUO Proprietary & Confidential,C语言程序课程复习材料,部 门: S16F3 姓 名: 郑宙伟 联系方式: 8695-2838,编译环境介绍(TurboC),中间窗口为编辑区, 接下来是信息窗 口, 最底下一行为参考行,上机步骤复习,1. 清屏、编辑:F10、File-New 2. 保存:F2 3. 编译:Alt+F9 4. 连接:F9 5. 执行:Ctrl+F9 6. 查看结果:Alt+F5 F10:选中菜单 F3:查找 Alt+X:退出,C语言架构说明,1、头文件包含; 2、全局变量申明; 3、功能子函数预定义; 4、主函数; 5、功能子函数;,1、一个说明或一个语句占一行; 2、源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面; 3、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“”之后不能加分号; 2、一个语言源程序可以由一个或多个源文件组成; 3、每个源文件可由一个或多个函数组成; 4、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数; 7、标识符,关键字之间必须至少加一个空格以示间隔。,C语言程序的结构特点,scanf函数说明,scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中 scanf函数的一般形式为: scanf(“格式控制字符串”,地址表列); 其中,格式控制字符串的作用与printf函数相同; 不能显示非格式字符串,也就是不能显示提示字符串; 地址表列中给出各变量的地址; 地址是由地址运算符“&”后跟变量名组成的。 取地址运算符& 取地址运算是单目运算, 操作数只能是变量, 得到变量的地址。,Printf函数说明,printf函数称为格式输出函数 功能是按用户指定的格式,把指定的数据显示到显示器屏幕上 printf函数调用的一般形式为: printf(“格式控制字符串”,输出表列) 格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。 非格式字符串在输出时原样照印,在显示中起提示作用。 格式字符串的一般形式为: 标志输出最小宽度.精度长度类型其中方括号中的项为可选项,C语言数据类型,C语言数据类型,常量及符号常量,在程序执行过程中,其值不发生改变的量称为常量 常量又可以分为直接常量和符号常量。 直接常量可以从字面上直接看出数据的类型和值; 符号常量是用一个标识符来代表一个常量,不能从字面上直接看出数据的类型和值。 符号常量在使用之前必须先定义,其一般形式为: #define 标识符 常量 C语言规定标识符只能由字母、数字和下划线三种字符组成,并且不能以数字开头。 符号常量的值在其作用域(从定义开始,到源程序结束为止)内不能改变 使用符号常量的好处是: 含义清楚; 能做到“一改全改”。,符号常量的使用,例 求半径为3的圆的周长和面积。 define PI 3.1415926 main( ) float perimeter,area; perimeter=2*PI*3; area=PI*3*3; printf(“perimeter=%f,area=%fn”,perimeter,area); ,经过宏替换,宏展开为: perimeter=2*3.1415926*3; area=3.1415926*3*3;,变量,其值在程序执行过程中可以改变的量称为变量。 每个变量都有一个名字,它代表某个存储空间及其所存储的数据; 在程序中取变量的值,实际上是通过变量名找到相应的存储单元,从中读取数据; 要想把内存中的某段存储单元和一个变量名联系起来, 必须首先对变量进行定义或声明。 变量定义的一般形式: 类型说明符 变量名表; 这里,类型说明符(type)必须是C语言的有效数据类型。 变量名表可以是一个或多个标识符名,中间用逗号分隔,最后以分号结束。 变量得到值有三种方法: 定义时赋给初值,在编译时得到;在执行时利用赋值语句得到;在执行时通过调用输入函数得到。 e.g. int a; float a=2,b; int a=1,b=3; char c; 若有定义 int sum; 则执行语句 sum=0; 后, 它的值为0; 可再执行语句 sum=1; 将它的值变为1。,C语言表达式,表达式是由运算符连接常量、变量、函数所组成的式子。 每个表达式都有一个值和类型; 表达式求值按运算符的优先级和结合性所规定的顺序进行。 表达式在书写时应该注意遵循C语言表达式书写的原则: C语言的表达式只能采用线性的形式书写 e.g. 应写成 (a+b)/(c+d)*e+f C语言的表达式只能使用C语言中合法的运算符和操作数, 对有些操作必须调用库函数完成, 而且运算符不能省略 e.g. r2应写成3.14159*r*r 应写成0.5*a*b*sin(a) |xy|应写成fabs(xy) y+2X 应写成y+pow(2, x),C语言表达式,表达式的计算要考虑运算符的优先级和结合性 运算符的优先级规定了运算符执行的先后顺序; 运算符的结合性是指,优先级相同的运算是从左到右进行(左结合性)还是从右至左进行(右结合性),左结合性是人们习惯的计算顺序; C语言中, 只有单目运算(!、 、 +、 -、 -、*、 表达式的计算还要考虑类型转换。,C语言运算符,语言的运算符可分为以下几类: 算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(+)、自减(-)共七种。 关系运算符:用于比较运算。包括大于()、小于(=)、小于等于()六种。 赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,=,=,=)三类共十一种。 条件运算符:这是一个三目运算符,用于条件求值(?:)。 逗号运算符:用于把若干表达式组合成一个表达式(,)。 指针运算符:用于取内容(*)和取地址(&)二种运算。 求字节数运算符:用于计算数据类型所占的字节数(sizeof)。 特殊运算符:有括号(),下标,成员(,.)等几种。,算术运算符和算术表达式,基本的算术运算符(+、-、*、/、%) 说明: (1)双目, *、/、% 优先级高于+、- ,左结合性。 (2)两个整型数据相除时,其运算结果也是整数,余数被截掉。 如1/2的结果0,10/3的结果是3。 (3)求余运算符(%)仅用于整型数据,不能用于实型。 它的作用是取整数除法的余数,结果与被除数同号。 例 main( ) int i=11, j=4; int f=i/j; int m=i %j; printf(f=%d m=%dn, f,m); 运行结果为:?,例 main( ) int a; float f= -3.5; a=(int)f %10; printf(“a=%dn”,a); 运行结果为:?,自增、自减运算符,自增、自减运算符(+、- -) 说明: (1)单目,操作数只能是变量,右结合性。如 -i+等价于-(i+)。 (2)有前置、 后置两种方式: +i 或 - -i :在使用i 之前,先使i 的值增/减1,俗称先加/减后使用。 i+ 或 i- - :先使用i 的值,然后使i 的值增/减1,俗称先使用后加/减。 main( ) int x, y; x=10; y=+x; printf(“%d, %dn”, x, y); 运行结果为:? 若将第四行改为:y=x+; 则运行结果为:?,将程序改为: main( ) int x, y; x=y=10; printf(“%d,%dn”,+x,y+); 运行结果为:? 若将第四行改为:printf( “%d,%dn”,+x,x+); 则运行结果为:? (函数参数的求值顺序是自右而左),赋值运算符和赋值表达式,一般的赋值运算符和复合的赋值运算符 说明: (复合的赋值运算符是由赋值运算符和其它双目运算符组合而成的。如:+ =、- =、* =、/ = 和 % = 。 格式: 如:int x=0, a, b; a=2; b=a; x+=2; /*等价于x=x+2;*/ x*=a+b; /*等价于x=x*(a+b);*/ 说明: (1)赋值运算符的左侧只能为变量。 非法:1 = a; - a=1; a+b=1; (2)双目,优先级别为14(仅比逗号运算符高),右结合性。 例 int a=1, b, c; c=b=a ; a += a - =a*a ; /*等价于 a=a - (a*a) ; a=a+a ;*/ 则变量b、c的值都为1,变量a的值为0。,课堂练习,一. 选择题 1. (B)是C语言的正确赋值语句。 A.a=1,b=2 B.a+; C.a=b=5 D.y=int(x); 2. 要求参加运算的数必须是整数的运算符是(C)。 A./ B.则 y + = y - = m* = y,关系运算符和关系表达式,关系运算符: 六种:、=、= =、! = 双目,左结合性,优先级低于算术运算符、前四个的优先级大于后两个。 关系表达式的值是一个逻辑值。当关系运算符两边的值满足关系时为真,返回1;不满足关系时为假,返回0。 e.g. 1、x=5; printf(“%dn”, x=9); 则输出为0。 2、printf(%dn, 531); 则输出为0。 因为两个是同一优先级,按左结合性处理。 3、printf(%dn, 1= =1135); 则输出为1。,逻辑运算符和逻辑表达式,逻辑运算符 双目:&、|,左结合性 单目:!,右结合性 a&b:a、b皆为真时,方为真。 a | b:a、b中有一为真,即为真。 !a:a为假时,方为真。 逻辑表达式的值为一逻辑值,以1表示真,以0表示假。 操作数真假的判断:0代表假,非0代表真。操作数可以是任何类型的数据。 如:0&2,值为1 - 4 | 0.2,值为1 !- 4,值为1,课堂巩固练习,1. 设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的是(D)。 A.A A.1_2_3 B.0_2_0 C.1_2_0 D.1_0_0,位操作运算符,位运算符: 六种: & 按位与 | 按位或 按位异或 取反 右移,按位与运算符,按位与运算符“&”是双目运算符。 其功能是参与运算的两数各对应的二进位相与。 只有对应的两个二进位均为1时,结果位才为1,否则为0。 参与运算的数以补码方式出现。 例如: 9&5可写算式如下: 00001001 (9的二进制补码) &00000101 (5的二进制补码) 00000001 (1的二进制补码) 结果:9&5=1 按位与运算通常用来对某些位清0或保留某些位。,按位或运算,按位或运算符“|”是双目运算符。 其功能是参与运算的两数各对应的二进位相或。 只要对应的二个二进位有一个为1时,结果位就为1。 参与运算的两个数均以补码出现。 例如: 9|5可写算式如下: 00001001 |00000101 00001101 结果:9|5=13,按位异或运算,按位异或运算符“”是双目运算符。 其功能是参与运算的两数各对应的二进位相异或, 当两对应的二进位相异时,结果为1。 参与运算数仍以补码出现。 95可写成算式如下: 00001001 00000101 00001100 (十进制为12),求反运算,求反运算符为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。 (0000000000001001)结果为:1111111111110110,左移运算,左移运算符“”是双目运算符。 其功能把“ ”左边的运算数的各二进位全部左移若干位,由“”右边的数指定移动的位数,高位丢弃,低位补0。 a4 指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。,右移运算,右移运算符“”是双目运算符。 其功能是把“ ”左边的运算数的各二进位全部右移若干位,“”右边的数指定移动的位数。 设 a=15, a2 表示把000001111右移为00000011(十进制3)。 应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。,实例一,void IIC_send( unsigned char IIC_data) int i; char IIC_data_t; for ( i=0;i8;i+ ) IIC_data_t=IIC_datai; SDA=(IIC_data_t ,流程图说明,一个流程图包括: 表示相应操作的框; 带箭头的流程线; 框内外必要的文字说明。,C语言算法的三种基本结构,三种基本结构的共同特点: 只有一个入口; 只有一个出口; 结构内的每一部分都有机会被执行到; 结构内不存在“死循环”。,1、顺序结构,2、选择结构,3、循环结构,控制语句,控制语句 条件语句: ifelse语句 多分支选择语句: switch语句 当型循环语句: while语句 直到型循环语句: dowhile语句 计数型循环语句: for语句 中止本次循环语句: continue语句 中止整个循环语句: break语句 函数返回语句: return语句 无条件转移语句: goto语句,条件(if)语句,一般形式: 1. 单臂:if(表达式) 语句 2. 双臂:if(表达式) 语句1 else 语句2 if 语句的嵌套形式(多分支): 1. 只在else分支嵌套 if(e1) 语句1 else if(e2) 语句2 else if(e3) 语句3 2. if和else分支均有嵌套 if(e1) if(e2) 语句1 else 语句2 else if(e3) 语句3,课堂巩固练习,、以下程序的输出为(A) main( ) int a=10, b=50, c=30; if(ab) a=b, b=c; c=a; printf(“a=%d,b=%d,c=%dn”, a, b, c); A. a=10,b=50,c=10 B. a=10,b=30,c=10 C. a=50,b=30,c=10 D. a=50,b=30,c=50 2. 以下程序的输出为(C) main( ) int a=2, b= -1, c=2; if(ab) if(b0) c=0; else c+; printf(“%dn”, c); A.0 B.1 C.2 D.3,switch语句,一般形式(多分支): switch(表达式) case 常量表达式1:语句序列1; break; case 常量表达式2:语句序列2; break; case 常量表达式n:语句序列n; break; default:语句序列n+1; ,课堂巩固练习,1. 以下程序的输出结果是 *# 。 main( ) int x=0, y=2, z=3; switch(x) case 0: switch(y= =2) case 1: printf(“*”); break; case 2: printf(“%”); break; case 1: switch(z) case 1: printf(“$”); case 2: printf(“*”); break; default: printf(“#”); ,While语句,形式:while(表达式) 循环体 执行过程:先判断,后执行。 说明 (1)while语句是先判断, 后执行。 如果循环条件一开始就不成立(条件表达式为假), 则循环一次都不执行。 (2)while循环中的表达式一般是关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值非零,就可执行循环体。 (3)循环体为多条语句时, 必须采用复合语句,要加上一对花括号。 (4)循环体中必须有改变循环条件的语句, 否则循环不能终止, 形成死循环。,do-while语句,形式:do 循环体 while(表达式) ; 执行过程:先执行,后判断。 说明 (1)do-while语句是先执行, 后判断。如果循环的条件一开始就不成立, 循环也将执行一次。 (2)do-while循环中的表达式一般也是关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值非零,就可执行循环体。 (3)循环体为多条语句时必须采用复合语句。 (4)与while语句一样, 循环体中同样必须有改变循环条件的语句, 否则循环不能终止,将形成死循环。 (5)对于同一个问题,while循环与do-while循环的条件表达式是完全相同的。,课堂巩固练习,1. 下列程序段的输出结果是(B)。 x=3; do printf(“%d”, x-); while(!x); A.321 B.3 C.21 D.210 2. 下面程序的输出结果为(D)。 main( ) int y=10; while( y- - ) ; printf(“y=%d”, y); A.y=0 B.while构成死循环 C.y=1 D.y= -1,For语句,形式: for( 表达式1 ; 表达式2 ; 表达式3) 循环体 执行过程:先判断,后执行。 说明 (1)for语句是先判断,后执行。 如果循环条件一开始就不成立,则循环一次都不执行。 (2)for语句的使用很灵活,形式多样化。 (3)循环体为多条语句时, 必须采用复合语句,要加上一对花括号。 (4)循环变量的增值并不受限于1,可以为正,也可为负。但必须使循环变量的值发生改变,使循环条件能趋向假,否则会造成死循环。,循环变量赋初值,循环条件,循环变量增值,实例,flageven=1; for(j=0;j376;j+) if (flageven) D0=0;D9=0;draw_square(0,j,239,j,0x00,0x00); /Black else D0=0;D9=0;draw_square(0,j,239,j,0x82,0x10); /32-gray flageven=flageven; ,void draw_square(unsigned char startX,unsigned int startY,unsigned char endX, unsigned int endY,unsigned char colorMSB,unsigned char colorLSB),课堂巩固练习,1. 执行下列语句的结果为(A)。 for(i=0; i5; +i) if( i= =2) break; printf(“%d”, i ); A.01 B.0134 C.01234 D.不打印 2.下述for循环语句(B)。 int i, k; for(i=0, k= -1; k=1; i+, k+) printf(“*”); A.判断循环结束的条件非法 B.是无限循环 C.只循环一次 D.一次也不循环,C语言函数的格式,函数定义的一般格式: 无参函数的定义格式 类型标识符 函数名( ) 声明部分 语句 有参函数的定义格式 类型标识符 函数名(形式参数表列) 声明部分 语句 如: int max(int x, int y) 说明: int z; (1)函数类型为函数返回值 z=xy?x:y; 的类型,缺省时为int。 return(z); (2)参数列表包括参数类型和 参数名。,C语言函数形参和实参,形式参数和实际参数 main( ) int a,b,c; scanf(“%d,%d”, 说明: (1)形参出现在被调函数定义的首部中,要给出其数据类型; 实参出现在主调函数的调用语句中; (2)形参为变量,实参可为变量、常量或表达式,只要有确定值即可; (3)实、形参的数据类型一般要一致,且个数相同; (4)调用函数时,将实参的值传递(单向传递)给形参,但形参值的改变并不会影响到实参(因为在内存中,实参与形参的存储单元是不同的,各自独立的)。,C语言函数函数的调用,函数调用的方式 1. 把函数作为一个语句调用,如:max(a,b); 2. 可让函数出现在表达式中,如:c=max(a,b); 3. 可让函数作为其他函数的参数 如:m=max(max(a,b), c); 如:printf(“%d”,max(a,b); 比较:以上三种方式都调用了同一个函数,都会有一个函数返回值,但第一种方式并不使用该返回值。 对被调
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国坐垫产业运营现状及消费趋势预测报告
- 2025-2030中国固氮肥行业发展状况与前景方向分析报告
- (二模)江门市2026年高三高考适应性测试英语试卷(含答案及解析)
- 七年级数学公开课获奖教案设计范文
- 2025年广西壮族自治区桂林市地理生物会考真题试卷(含答案)
- 2025年广西壮族自治区崇左市地理生物会考考试题库(含答案)
- 2025年广东肇庆市初二地理生物会考题库及答案
- 2025年云南保山市地理生物会考试卷题库及答案
- 大数据薪资与职业方向
- 人工智能企业规模统计
- (2026年)世界哮喘日:让每位哮喘患者都能获得抗炎吸入剂-这仍是当务之急课件
- 2026年株洲市荷塘区社区工作者招聘笔试参考题库及答案解析
- 车间火灾应急指南
- 2026年北京市西城区高三一模地理试卷(含答案)
- 雨课堂学堂在线学堂云《Age of Sustainable Development(SDG Academy)》单元测试考核答案
- GB/T 30029-2023自动导引车设计通则
- 护理学导论-第二章-健康与疾病
- YC/Z 575-2018打叶复烤初烤烟选叶指南
- JJG 52-2013弹性元件式一般压力表、压力真空表和真空表
- GB/T 1981.2-2003电气绝缘用漆第2部分:试验方法
- 南瑞继保后台监控使用厂家培训版本电子版本
评论
0/150
提交评论