二级C语言培训教案第二章C语言程序设计的初步认识本章考点:考点考核几率分值C语言的概述20%1~2标识符、常量和变量100%2~7算术运算符及算术表达式(难点)80%2~5赋值运算符及赋值表达式80%2~5自加自减运算、逗号表达式(难点)100%2~4教学内容一、C语言程序的构成和格式通过讲解以下这个简单的C程序例子,了解C程序的格式和构成。main(){inta,b,c;a=10;b=20;c=a+b;printf(%d,c);}注:(1)C程序中有且仅有一个main函数,程序从main函数开始执行,并且在main函数中结束。(2)用“{}”括起来的部分称为“函数体”,“{”和“}”必须成对出现,表示开始和结束。(3)main()函数的格式:main(){函数体}(4)变量先定义,后使用。定义部分必须在执行部分的前面。(5)C程序中每条语句(定义语句或执行语句)都必须以”;”结束。(6)注释内容必须放在”/*”和“*/”之间。”/*”和“*/”必须成对出现。”/”与“*”之间不能有空格。(7)printf为C语言的屏幕输出函数,注意写法。(8)书写程序时应遵循的规则:语句中的不同单词至少且必须加一个空格以示间隔,若已有明显的间隔符,也可不再加空格来间隔;最好一个语句占一行。二、标识符1、标识符命名规则(1)只能包含字母、数字和下划线(2)第一个字符必须是字母或下划线(3)C语言是大小写敏感的,如grade和Grade是两个不同的标识符。例、判断下列标识符的合法性sum_tofile_5_2&ay-m-d4dyes?2、标识符分类(1)关键字:已经事先定义好了,程序远不能再将它们另做它用。参看教材附录4,记住常用的关键字(如int、if、do、break、case、char等)。(2)预定义标识符:在C语言系统中已经使用了的标识符(如printf、scanf、define、include等)。预定义标识符可用作用户标识符。(3)用户标识符:根据用户需要定义的标识符(用户自己取的名字)。用户标识符不能是关键字。注:标识符要求学生必须掌握。练习部分课后习题三、常量与变量1、常量在程序的运行过程中,其值不发生改变的量。2、常量分类(1)直接常量直接常量又包括整型常量(如12、-3、0)、实型常量(如4.6、-1.23、1.2E+3)和字符常量(如'A'、'6')。(2)符号常量符号常量在使用之前必须先定义,其一般形式为:#define符号常量标识符常量值通过以下两个实现功能相同(求圆面积)的程序,给学生解释使用与不使用符号常量两者的区别。程序1:程序2:#defineR5main()#definePI3.14159{main()floatarea;{intr;floatarea;r=5;area=PI*R*R;area=3.14159*r*r;printf(%f,area);printf(%f,area);}}注:习惯上符号常量的标识符用大写字母。符号常量的值在其作用域内不能被改变。3、变量在程序的运行过程中,其值可以改变的量。4、变量的定义变量定义的一般形式为:类型说明符变量名;注:变量名是合法的标识符,但不可以是关键字;允许在一个类型说明符后,定义多个相同类型的变量,各变量名之间用逗号间隔,最后一个变量名之后必须以“;”号结尾;一般变量的定义放在函数体的开头部分。通过以下例子的讲解,进一步掌握变量的定义与使用。main(){inta,b,c;a=15;b=20;c=b-a;printf(%d,c);}补充:四、数制转换计算机使用二进制进行数据的处理最小存储单位称为“位(bit)”一个字节占8位二进制数即1Byte=8bit(1B=8b)1KB=1024B;1MB=1024KB;1GB=1024MB;1TB=1024GB;…..1、十进制二、八、十六进制转换方法:将十进制数除以基数(二进制基数为2、八进制基数为8、十六进制基数为16),并记录余数,若商不为0,则继续用商除以基数,并记录余数,直到商为0,余数倒排列写下来,即为转换后的二进制或八进制或十六进制。注意:在转换过程中,余数为0也要记录下来,很多学生在做题时,忽略了余数0。例:(36)10=()2(39)10=()8(27)10=()162、二、八、十六进制十进制转换方法:按位展开,对应位乘以权值(权值即为基数的n次幂,n从0开始),最后将所有乘积相加,所得结果即为十进制数。例:(10101)2=()10(67)8=()10(1A2)16=()103、八、十六进制二进制转换方法:八进制(或十六进制)数的每一位数字用三位(或四位)二进制数表示,最后将对应的二进制数依次写下来,即为二进制数。注:八进制数7、6、5、4、3、2、1、0对应的三位二进制数分别为111、110、101、100、011、010、001和000。十六进制数F、E、D、C、B、A、9、8、7、6、5、4、3、2、1、0对应的四位二进制数分别为1111、1110、1101、1100、1011、1010、1001、1000、0111、0110、0101、0100、0011、0010、0001和0000。例:(642)8=()2(3B5C)16=()2学生思考如何将二进制转换成八进制、十六进制?五、整数和实数1、整型常量分类(1)八进制整型常量以数字0开头,其中由数字0~7组成,如023、076等。(2)十进制整型常量最常用的常量,由数字0~9组成,如15、345、-38等。(3)十六进制整型常量以0x或0X开头,由数字0~9、字母a~f(或大写A~F)组成,如0x7e、0X4AB等。注:在C程序中,只有十进制数可以是负数,而八进制和十六进制数只能是整数。2、整型变量分类(1)短整型变量类型说明符为:[signed]short[int],占用2个字节,取值范围为-32768~32767。(2)基本整型变量类型说明符为:[signed]int,占用4个字节,取值范围为-2147483648~2147483647。(3)长整型变量类型说明符为:[signed]long[int],占用4个字节,取值范围与基本整型变量相同。例:inta;(4)无符号短整型变量类型说明符为:unsignedshort[int],占用2个字节,取值范围为0~65535。(5)无符号基本整型变量类型说明符为:unsigned[int],占用4个字节,取值范围为0~4294967295。(6)无符号长整型变量类型说明符为:unsignedlong[int],占用4个字节,取值范围同无符号基本整型变量相同。注:整型变量的各种类型,在编程中一定要注意,不要让一个整型变量超出该类型的取值范围,以免发生溢出错误。3、整数在内存中的存储形式对于整型数据,在内存中都是以补码形式存储的。用补码存储一个有符号整数,最高位(最左边的一位)存放符号,正数最高位为0,负数最高位为1。计算规则如下:正整数:原码=反码=补码。负整数:反码=原码除符号位(符号位为1)以外,数值部分按位取反补码=反码的末位加1例:求±11的原码,反码,补码。(假设占一个字节的空间)原码反码补码注:无符号整数表示的都是正数,所以其中最高位不再存放符号。在二级C考试中,只需要记住无符号整数65535表示成有符号整数-1,无符号整数65534表示成有符号整数-2,其他依次类推。以下例子是历年考试中出现过的,通过讲解让学生掌握无符号数和有符号数的区别。main(){unsignedinta;intb=-1;a=b;printf(%u,a);}4、实型常量(1)小数形式小数点前或后可以没有数字,但不能同时没有数字。如3.141590.13615..370.0-13.0(2)指数形式“E前E后必有数,E后必须为整数”。例:1e51.25e+42.0e-3e51.2e2.0e1.35、实型变量实型变量分为:单精度实型(float)和双精度实型(double)。float占用4个字节,double占用8个字节。floata;doubleb;七、算术运算和赋值运算1、算术运算符(+、-、*、/、%)例:(1)/:5/2=5.0/2=5/2.0=5.0/2.0=(2)%:5%2=-5%2=5%-2=注:这五种算术运算符以/和%为主,进行除运算时,注意两边都为整数的情况;“%”运算符左右两边必须为整数,余数的符号同被除数的符号相同。2、算术运算符的优先级(*、/、%)(+、-)例:4*5+8*2%4+12/5=3、强制类型转换强制类型转换的格式为:(类型名)表达式注:在二级C考试中,经常考强制类型的转换格式,尤其是一对小括号的位置。5、赋值运算符(=)赋值运算的一般格式为:变量=表达式floatx=3;inta=4.9;注:赋值运算符的优先级只高于逗号运算符;任意一种赋值运算符的左侧必须为变量,不能是表达式和常量;整个赋值表达式的值是最左边变量的值。当赋值运算符左右两边类型不一样,系统会自定进行类型转换(将=右边表达式的值的类型转换成左边变量的类型)。例:判断a+b=c;a=b=m+n;6、复合赋值表达式(1)+=a+=6a=a+6(2)-=a-=6a=a-6(3)*=a*=6a=a*6(4)/=a/=6a=a/6九、自加、自减运算符1、自加、自减运算符(++、--)自加、自减运算符的运算对象只能是变量,运算符可在变量的前面,也可以在变量的后面,形如i++、++i、i--、--i。2、自加、自减的运算规则自加:i++先用i的值参与运算,再使i的值加1。自加:++i先使i的值加1,再让i参与运算。自减:i--先用i的值参与运算,再使i的值减1。自减:--i先使i的值减1,再让i参与运算。例:main(){intm=10,n=11;printf(%d,%d\n,++m,n++);/*输出结果为:*/printf(%d,%d\n,--m,n--);/*输出结果为:*/}3、自加、自减运算的注意事项(1)只能和变量结合,如(i++)++是不合法的。(2)运算结合方向是从右到左。如:-x++十、逗号运算符及逗号表达式1、逗号运算符(,)形式:表达式1,表达式2,表达式3在逗号表达式中,逗号运算符具有从左向右的结合性,最后一个表达式的值是整个逗号表达式的值。2、要和变量多余的情况区别开3、优先级别:在所有运算符中,逗号运算符优先级最低。例1Main(){inta=3,b=9;printf(%d\n,(a,b));/*输出结果为:*/}例2Main(){inta=3,b=9;printf(%d\n,a,b);/*输出结果为:*/}注:逗号运算与变量多余的区别,这是二级C考试中,经常会出错的。补充:十一、C语言中的语句1、表达式语句表达式;2、空语句;3、复合语句{语句1;语句2;…语句n;}十二、注释C语句中有两种注释方法:(1)//:只能注释一行(2)/*…*/:可注释多行,在“/*”和“*/”之间的都属于注释部分。注:注释在程序运行时,不执行,第二种注释需要注意,在二级C考试中出现过,参考教材。十三、字符数据(第6章)1、字符常量分类(1)一般字符常量用一对单引号括起来的单个字符,如'A'、'b'、'5'。(2)转义字符常量在一对单引号内,以“\”开头,后跟一个字符,或1~3位八进制数。另外也可以是1~2位的十六进制数,但必须以“\x”开头(在这里,一定注意x不能是大写的X)。反斜杠后的八进制数不需要以0开头\61\101反斜杠后的十六进制数不需要以0x开头,(x为小写)\x42\x6e注:在二级C考试中,转义字符是必考的。更要注意“\”后跟的1~3位八进制数不能以数字0开头。2、字符变量定义字符变量的格式为:char变量名;注:字符型数据在内存中占1个字节。3、字符型数据参与运算采用其ASCII码进行运算。注:字符型数据可以按“%d”和“%c”输出,注意这两者区别。第三章顺序结构本章考点:考点考核几率分值printf函数(难点)100%3~4putchar函数60%1~2scanf函数(难点)100