第二章 用,C,语言编写程序,教学内容与目的,1、了解变量和常量的含义,以及变量在程序中所起的作用,2、了解简单的数据类型,3、会使用简单的算术运算符、赋值运算符编写表达式,4、会在程序中输入输出数据,5、会使用#,define,定义符号常量,问题描述:,摄氏温度,C=(5/9)(F-32),例1 求华氏温度,100,对应的摄氏温度,华氏温度100对应的,摄氏温度,C=(5/9)(100-32),替代,#,include,void main(),int celsius,fahr;,/*,变量定义*/,fahr=100;,/*,变量使用*/,celsius=5*(fahr-32)/9;,/*,计算*/,printf(fahr=,%d,celsius=,%d,n,fahr,celsius,);,/*输出结果*/,例1-1:直接求解,变量常量和数据类型,int celsius,fahr;,celsius,=5*(,fahr,-32)/9;,数据,常量:在程序运行过程中,其值不能被改变,变量:在程序运行过程中,其值可以被改变,数据类型,常量:5 和 9是整型常量(整数),变量:在定义时指定,变量定义的一般形式:,类型名 变量名表;,例如:,int,celsius,fahr;,定义整型变量,float,x;,定义单精度浮点型变量,double,area,length;,定义双精度浮点型变量,double,型数据比,float,精度高,取值范围大,变量名:小写字母;见名知义,变量定义,标识符,用来标识变量名、符号常量名、函数名、数组名、类型名等实体(程序对象)的有效字符序列。
标识符由用户自定义,C,语言标识符定义规则:,标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线例,合法的标识符:,sum,average,_total,Class,day,stu_name,p4050,不合法的标识符:,M.D.John,$123,#33,3D64,ab,变量定义,定义变量时要指定变量名和数据类型,类型名 变量名表;,int,celsius,fahr;,float,x;,double,area,length;,变量名代表内存中的一个存储单元,存放该变量的值,该存储单元的大小由变量的数据类型决定,C,语言中的变量代表保存数据的存储单元,数学中的变量代表未知数,x=x+1,整型,表示整数,浮点型,表示小数,双精度型,表示小数,变量定义和使用,变量必须先,定义,,后,使用,include,void main(void),int celsius,fahr;,fahr=100;,celsius=5*(fahr-32)/9;,printf(fahr=%d,celsius=%dn,fahr,celsius);,一个变量名只能定义一次,变量一般都定义在程序的头上,不能定义在程序的中间或后面,应该先赋值,后引用,算术运算,fahr=100;,celsius=5*(fahr-32)/9;,1、算术运算,双目算术运算符:,+-*/%,算术表达式:用,算术运算符,将,运算对象,连接起来的符合,C,语言语法规则的式子,数学式:(5/9)(,F-32),C,表达式:5,*,(,fahr-32)/9,或者,(5/9,)*(fahr-32),数学式:,s(s-a)(s-b)(s-c),C,表达式:,s*(s-a)*(s-b)*(s-c),注意,/,整数除整数,得整数,如:1/2 0,9/4 2,问题:,5*(,fahr-32)/9,和 5,/9,*(,fahr-32),等价吗,%,针对整型数据,取余数,如:565,941,10040,双目运算符两侧操作数的类型要相同,否则系统会进行自动转换,2、赋值运算符,=,赋值表达式:用,=,将一个,变量,和一个,表达式,连接起来的式子,变量 表达式,例如:,fahr=100;,celsius=5*(fahr-32)/9;,计算赋值运算符右侧,表达式,的值,将赋值运算符右侧,表达式,的值赋给左侧的,变量,类型不一致时,系统会进行自动转换,注意:,的左边必须是一个变量,3、复合赋值运算符,+=,-=,*=,/=,%=,其一般形式:,n+=1,等价于,n=n+1,x*=y+1,等价于,x=x*(y+1),注意:赋值运算符、复合赋值运算符的优先级比算术运算符低,注意:要使用括号,4、自增、自减运算符,1、自增、自减运算符:+,i,i+,-i,i-,2、,运算规则:,+,i,-i:,先自增1、减1,再参与运算,i+,i-:,先参与运算,再自增1、减1,例:,i=1;j=i+;,i=1;j=+i;,输入输出,例1 从键盘输入华氏温度,求对应的摄氏温度,解题思路,#,include,void main(void),int celsius,fahr;,scanf(“%d”,&fahr),celsius=5*(fahr-32)/9;,printf(fahr=%d,celsius=%dn,fahr,celsius);,printf,函数输出,printf(,Hello World!n);,printf(,fahr=%d,celsius=%dn,fahr,celsius,);,printf(,Hin,fahr,);,格式控制字符串,:,普通字符:原样输出,格式控制说明:按指定的格式输出数据,%,与数据类型有关,int,型:,%,d,float double,型:,%,f,printf(fahr=,%d,celsius=,%d,n,fahr,celsius);,普通字符,格式控制说明,用来占位,输出变量,输出:,fahr=,100,celsius=,37,课堂练习,已知有变量:,a=20,b=30,请调用,printf,函数,在屏幕上输出:,result of a+b is 20+30=50,scanf,函数输入,#,include,scanf(%lf,scanf,(,格式控制字符串,输入参数1,输入参数,n,);,用双引号括起来,表示输入的格式,变量地址,格式控制字符串,:,格式控制说明:按指定的格式输入数据,%,与数据类型有关,int,型:,%,d,float,型:,%,f,double,型:,%,lf,普通字符:原样输入,例如:,scanf(,%lf,输入:,9.5,scanf(x=,%,lf,输入:,x=,9.5,尽量不要出现普通字符,scanf(,%f,%f,输入:,1.2,3.4,x,变量地址,例2 从键盘输入圆柱体的高和半径,求圆柱体的体积和表面积,第一种解法,开始,定义变量,:,radious,height,area,volume,从键盘输入,radious,height,计算,area,=,*,radious,*,radious,*,2,+,*,radious,*,2,*,height,输出,结束,计算,Valume,=,*,radious,*,radious,*,height,#,include stdio.h,void main()/*,主函数*/,float radious,height,area,volume;/*,定义变量*/,printf(“,请输入半径和高”);/*提示输入*/,scanf(%f,%f,/*,输入*/,area=3.14*radious*radious*2+3.14*radious*2*height;,/*,计算表面积*/,volume=3.14*radious*radious*height;/*,计算体积*/,printf(,半径为%,f,,高为%,f,的圆柱体,表面积为%,f,,体积为%,f,radious,height,area,volume);/*,输出*/,第二种解法:,开始,定义变量,:,radious,height,area,volume,s,c,从键盘输入,radious,height,计算,area,=,2,*,s,+,c,*,height,输出,结束,计算,Valume=s,*,height,定义常量,PI,计算,s,=,PI,*,radious,*,radious,计算,c,=,PI,*,radious,*,2,#,include stdio.h,#define PI 3.14,void main()/*,主函数*/,float radious,height,area,volume,s,c;/*,定义变量*/,printf(,请输入半径和高);/*提示输入*/,scanf(%f,%f,/*,输入*/,s=PI*radious*radious;,c=PI*radious*2;,area=s*2+c*height;/*,计算表面积*/,volume=s*height;/*,计算体积*/,printf(,半径为%,f,,高为%,f,的圆柱体,表面积为%,f,,体积为%,f,radious,height,area,volume);/*,输出*/,#,define:,定义一个符号常量,#,define PI 3.14,s=PI*radious*radious;,s=3.14*radious*radious;,等价于,注意不能对,PI,赋值,如:,PI=3,例2 两种方法对比,第二种方法:,1、采用了定义二个中间变量,s,c,分别表示圆柱体的底面积和底的周长,再计算表面积和体积,算法比较清楚,2、定义了符号常量:,PI,,更便于维护和阅读,例3 从键盘输入两个数到,x,变量和,y,变量,交换后输出,第一种解法:,采用中间变量,#,include stdio.h,void main()/*,主函数*/,int x,y,t;/*,定义变量*/,printf(,请输入,x,和,y,的值,n);/*,提示输入*/,scanf(%d,%d,/*,输入*/,printf(,交换前,x,的值:%,d,y,的值:%,dn,x,y);,t=x;/*,保存,x,的值到,t*/,x=y;/*,将,y,的值赋给,x*/,y=t;/*,将,t,的值(原来,x,的值)赋给,y*/,printf(“,交换后,x,的值:%,d,y,的值:%,dn,x,y);,请注意:交换顺序,第二种解法:,#,include stdio.h,void main()/*,主函数*/,int x,y;/*,定义变量*/,printf(,请输入,x,和,y,的值,n);/*,提示输入*/,scanf(%d,%d,/*,输入*/,printf(,交换前,x,的值:%,d,y,的值:%,dn,x,y);,x=x+y;/*,保存,x,与,y,的和保存到,x*/,y=x-y;/*,将,x(,和)减,y,得到原来的,x,的值,赋给,y*/,x=x-y;/*,将,x(,和)减,y(,原来,x,的值)得到原来的,x,赋给,x*/,printf(“,交换后,x,的值:%,d,y,的值:%,dn,x,y);,课堂练习,从键盘输入长方形的长和宽,求长方形的面积和周长,。