1、2例2.1一个只输出一行信息的程序#include main()printf(This is a C Programn);/*主函数*/*命令行命令行*/*输出函数*/运行结果:运行结果:This is a C Program3#include main()float a,b,area;a=1.2;b=3.6;area=a*b;printf(“a=%f,b=%f,area=%fn”,a,b,area);/*说明与定义变量部分说明与定义变量部分*/*stdio.h是头文件是头文件*/4通过以上例子可以看出:通过以上例子可以看出:1 1、C C程序是由函数构成的。程序是由函数构成的。每个程序由一个
2、或多个函数组成,并且每个程序由一个或多个函数组成,并且必须有必须有且仅有一个且仅有一个主函数主函数main()main()。2 2、一个可执行的、一个可执行的C C语言程序总是从语言程序总是从mainmain函数开始函数开始执行,与它在程序中的位置无关。执行,与它在程序中的位置无关。3 3、每条语句和数据定义的最后必须有一个、每条语句和数据定义的最后必须有一个分号分号。sum();while(total=2000)limit+;total=total+limit;#include“stdio.h”;在以下三种情况下不允许有分号:在以下三种情况下不允许有分号:a.所定义的函数名称后面不使用分号;
3、所定义的函数名称后面不使用分号;b.在右花括号在右花括号“”后面不使用分号;后面不使用分号;c.命令行后面不使用分号。命令行后面不使用分号。54.C中的输入输出用函数完成中的输入输出用函数完成。5.C程序书写格式自由。程序书写格式自由。一行可写多个语句,一个语句也可分写在多行上。一行可写多个语句,一个语句也可分写在多行上。6.用用/*/对对C程序中的任何部分作注释,注释可写在程序中的任何部分作注释,注释可写在程序的任何位置上,程序的任何位置上,“/*”与与“*/”必须必须成对出现成对出现,可,可以不在同一行上。但以不在同一行上。但不可以嵌套不可以嵌套使用。使用。7.在在C语言中,大小写字母是有
4、语言中,大小写字母是有区别区别的。的。(C语言习惯用小写字母语言习惯用小写字母)8.书写程序时,最好使用书写程序时,最好使用缩进格式缩进格式的形式。的形式。6例main()int a,b;a=10;b=11;printf(“a=%d,b=%d”,a,b);7关键字关键字预定义标识符预定义标识符用户标识符用户标识符8asm auto break case cdecl char const continue default do double else enum extern far float for goto huge if int interrupt long near pascal reg
5、ister return short switch signed sizeof static struct typedef union unsigned void volatile while910#includemain()double r,s;r=5.0s=3.14159*r*rprintf(%fn,s);11几点说明:几点说明:1)符号常量要用符号常量要用#define定义定义2)用用#define定义符号常量,其值在其作用域内定义符号常量,其值在其作用域内 不能改变不能改变3)符号常量名一般用大写符号常量名一般用大写【例【例2.2】计算圆的面积】计算圆的面积 程序如下:程序如下:#in
6、clude#define PI 3.14159main()double r,s;r=5.0s=PI*r*rprintf(%fn,S);12例例#includemain()int a,b;a=10;b=11;printf(“a=%d,b=%d”,a,b);定义格式:定义格式:131011ab几点说明:几点说明:1)变量名与变量值)变量名与变量值2)系统为变量分配存储单元大小不固定,由)系统为变量分配存储单元大小不固定,由 变量的类型决定变量的类型决定3)变量应先定义后使用,定义时指明类型)变量应先定义后使用,定义时指明类型141516171 1)intint是基本整型类型名是基本整型类型名2 2
7、)在一个定义语句中可同时定义多个变量,变量间用)在一个定义语句中可同时定义多个变量,变量间用 逗号逗号分隔分隔 3 3)一般系统为)一般系统为intint开辟开辟2 2个字节的内存单元,个字节的内存单元,VC6.0VC6.0为为intint开辟开辟4 4个字节的内存单元个字节的内存单元4 4)C C语言中,可以在定义的同时给变量赋值,也称语言中,可以在定义的同时给变量赋值,也称 为为初始化初始化18int a=3+b,b=5;float m=n=23.16;192021原码原码补码补码2223242501 11 11 11 11 11 11 11 short型:型:最大最大:3276710 0
8、0 00 00 00 00 00 00最小最小:-3276811 11 11 11 11 11 11 11unsigned 型型:最大最大:6553500 00 00 00 00 00 00 00最小最小:027282.4.1实型常量(实数或浮点数)实型常量(实数或浮点数)表示形式有如下两种:表示形式有如下两种:十进制数形式十进制数形式:由数字和小数点及正负号组成。由数字和小数点及正负号组成。(注意:必须有小数点注意:必须有小数点)如:如:23.678 .678 23.指数形式指数形式:由数字、小数点、字母由数字、小数点、字母e或或E及正负号及正负号组成。组成。(注:注:e或或E之前必须有数字
9、,之前必须有数字,且后指数必须为整数且后指数必须为整数)如:如:2.1e5 找错误:找错误:3.5E-5、2e3、e、E2、3.6e3.5 .e629/*a=123456.7*/*b=123456.789*/30注意:注意:1 1、虽然实数有两种表示方式。、虽然实数有两种表示方式。但在内存中,实数都是以指数的形式来存放的。但在内存中,实数都是以指数的形式来存放的。如:如:3.14159 +.314159 13.14159 +.314159 12 2、浮点型数据的舍入误差。、浮点型数据的舍入误差。当一个很大的数和一个很小的数相加后可能会丢失很当一个很大的数和一个很小的数相加后可能会丢失很小的数。
10、小的数。如:如:123456.789e5+20123456.789e5+203 3、VC6.0VC6.0中所有中所有floatfloat型数据计算的时候系统都先转型数据计算的时候系统都先转化为化为doubledouble型数据,得出结果后,取前型数据,得出结果后,取前7 7位赋给结果位赋给结果变量。变量。31算术运算符:(算术运算符:(+-+-*/%+-/%+-)关系运算符:(关系运算符:(=!=!=)逻辑运算符:(!逻辑运算符:(!&|&|)位运算符位运算符 :(:(|&|&)赋值运算符:(赋值运算符:(=及其扩展)及其扩展)条件运算符:(条件运算符:(?:?:)逗号运算符:(逗号运算符:(
11、,)指针运算符:(指针运算符:(*&)求字节数求字节数 :(:(sizeofsizeof)强制类型转换:(类型)强制类型转换:(类型)分量运算符:(分量运算符:(.-.-)下标运算符:(下标运算符:()其它其它 :(:(()-()-)32333435()+-*/%+-同级同级 同级同级 同级同级 结合性结合性 基本运算符基本运算符从左向右从左向右 “+”和和“-”从右向从右向左左36算术表达式算术表达式 是用算术运算符和括号将操作数连是用算术运算符和括号将操作数连接起来的,接起来的,符合语法规则的式子。符合语法规则的式子。运算对象:常量、变量和函数运算对象:常量、变量和函数例如:例如:a+b+
12、a*(b/c)+2.8 (1)表达式中)表达式中,可使用多层括号,括号要配对可使用多层括号,括号要配对,运算时由内向外计算运算时由内向外计算(2)优先级不同时,则由高向低;)优先级不同时,则由高向低;优先级相同时,则按结合方向优先级相同时,则按结合方向37 38说明说明3940l复合赋值运算符复合赋值运算符4142赋值过程中的类型赋值过程中的类型转换规则转换规则:使赋值号使赋值号右边右边表达式值表达式值自动自动转换成其转换成其左边左边变量变量的类型的类型例例 int i;i=2.56;/结果结果i=2;例例 float f;int i;i=10;f=i;则则 f=引出问题:如果在表达式中各运算
13、量类型不同该如何判别最后值的类型?f=10.043doublefloatlongunsignedintchar,short低低高高说明说明必定的转换必定的转换运算对象类型不同时转换运算对象类型不同时转换例例 short ch;int i;float f;double d;ch/i +f*d-(f+i)intintdoubledoubledoubledoubledoubledouble44例例 j=3;k=+j;j=3;k=+j;j=3;k=j+;j=3;k=j+;j=3;printf(“%d”,+j j=3;printf(“%d”,+j););j=3;printf(“%d”,j j=3;pri
14、ntf(“%d”,j+);+);a=3;b=5;c=(+a)a=3;b=5;c=(+a)*b;b;a=3;b=5;c=(a+)a=3;b=5;c=(a+)*b;b;/k=4,j=4/k=4,j=4/k=3,j=4/k=3,j=4/4,j=4/4,j=4/3,j=4/3,j=4/c=20,a=4/c=20,a=4/c=15,a=/c=15,a=4 445说明:说明:+-+-不能用于常量和表达式不能用于常量和表达式,如如5+5+,(a+b)+a+b)+优先级:优先级:-(2)(3)(4)(2)(3)(4)+-+-结合方向:结合方向:自右向左自右向左,如,如i=3i=3;-i+-i+的的值为值为-3
15、-3例例 i=3;printf(“%d,%d”,+i,ii=3;printf(“%d,%d”,+i,i););/4,3/4,3 例例 j+k;(j+)+k;j+k;(j+)+k;例例 i=3;printf(“%d,%d i=3;printf(“%d,%d”,”,+i,i);+i,i);46例例 a=3*5,a*4 a=3*5,a*4,a+5例例 x=(a=3,6*3)x=a=3,6*a例例 a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);/a=15,表达式值表达式值60/a=15,表达式值表达式值20/赋值
16、表达式,表达式值赋值表达式,表达式值18,x=18/逗号表达式逗号表达式,表达式值表达式值18,x=3/1,2,3/3,2,347:算术运算符算术运算符 关系运算符关系运算符 赋值运算符赋值运算符高高低低=!=高高低低例例 ca+b ca+b 相当于相当于c(a+b)c(a+b)ab!=c ab!=c 相当于相当于(ab)!=c(ab)!=c a=bc a=bc 相当于相当于a=(bc)a=(bc a=bc 相当于相当于a=(bc)a=(bc)48/表达式值表达式值1/表达式值表达式值1/表达式值表达式值0/d=1/f=049例例 若若a=0;b=0.5;x=0.3;则则 a=x278在在C中
17、是允许的,中是允许的,值为值为0例例 int i=1,j=7,a;a=i+(j%4!=0);则则a=2例例 a0 结果为结果为 A100 结果为结果为1050例例 注意区分注意区分“=”与与“=”int a=0,b=1;if(a=b)printf(“a equal to b”);else printf(“a not equal to b”);例例 应避免对实数作相等或不等的判断应避免对实数作相等或不等的判断如如 1.0/3.0*3.0=1.0 结果为结果为 051逻辑运算符逻辑运算符 52!&|高高低低例例 a=x&xb&xy a=b|x=y !a|abl优先级:优先级:l结合方向:结合方向:
18、/(a=x)&(xb)&(xy)/(a=b)|(x=y)/(!a)|(ab)优先级优先级:!算算 术运算符术运算符 关系运算符关系运算符&|赋值运算符赋值运算符高高低低53逻辑表达式的运算结果或者为逻辑表达式的运算结果或者为1(“真真”)或者为)或者为0(“假假”)!&|高高低低l优先级:优先级:l结合方向:结合方向:!:从右向左从右向左&:从左向右从左向右|:从左向右从左向右值为值为1值为值为0值为值为1值为值为1值为值为1值为值为1/(53)&2|(8b)&(n=cd)例:例:a=0;b=2;a+&b+例:例:a=0;b=2;a+|b+/结果结果m=0,n=1/结果结果a=1,b=2/结果结果a=1,b=356