1、第三章 简单的C程序设计顺序3.1 顺序程序设计举例顺序程序设计举例3.2 数据的表现形式及其运算数据的表现形式及其运算n 常量、变量常量、变量n 整形、字符型、浮点型整形、字符型、浮点型n 运算符及表达式运算符及表达式3.3 C语句语句赋值语句赋值语句3.4 数据的输入和输出数据的输入和输出n scanf 和和 printfn getchar 和和 putchar小小 结结习习 题题顺序程序设计举例#includeint main()float f,c;f=68.0;c=(5 /9)*(f 32);printf(f=%fnc=%fn,f,c);return 0;A0301 华氏温度(如华氏温
2、度(如68 )转为摄氏温度(如转为摄氏温度(如20)NoImage输入输入 f 的值的值输出输出 c 的值的值F=68.000000C=0.0000005.0C=20.000000顺序程序设计举例#define PI 3.1416int main()float r,a,b;r=2;a=2*PI*r;b=PI*r*r;printf(“半径半径=%fn周长周长=%fn面积面积=%fn,r,a,b);return 0;A0302例例:根据圆半径,求圆周长和圆面积。根据圆半径,求圆周长和圆面积。输入半径输入半径r 的值的值输出输出 a、b 的值的值半径半径=2.000000周长周长=18.849600
3、面积面积=28.274400周长周长 a=2*pi*r面积面积 b=pi*r*rscanf(%f,&r);键盘输入键盘输入一、数据的概念一、数据的概念 在计算机科学中,数据是指能由程序处理的对象。日常生活中的数字、字符、图形图象及声音等,在计算机中均作为数据看待。二、数据的类型二、数据的类型 在高级语言中,每一个数据都属于一个特定的类型。不同类型的数据的表示、存储及操作不相同。3.2 数据的表现形式及其运算姓名姓名 Alice性别性别 F年龄年龄 20英语英语 80数学数学 85平均平均 82.5字符串字符串字符字符整型整型实型实型实型实型实型实型3.2.1 常量与变量3.3.1 常量和符号常
4、量常量和符号常量 1、常量:、常量:在程序运行过程中,其值不能被改变在程序运行过程中,其值不能被改变的量。的量。常量说明关键字:const。2、常量的分类:1)整型常量。如:1234,56 2)实型常量。如:123.23 3)字符常量。如:A,a,m 4)字符串常量。如:A,China 5)转义字符。如:n,t,123,xF9 6)符号常量。如:#define PI 3.1415926#define N 30转义字符例:在屏幕上输出一个笑脸在屏幕上输出一个笑脸(ASCII码值为码值为2)#include void main()printf(%cn,2);/*输出输出笑脸笑脸字符字符*/增加一个
5、转义字符的图增加一个转义字符的图符号常量符号常量概念概念:用一个标识符表示常量#define 标识符 常量表达式 例:#define PI 3.1415926注意注意:1)标识符一般用大写 2)不能给符号常量赋值 例:PI=6;错误常用于:常用于:(1)把有意义的常数定义为符号常量 (2)在程序中多次出现的常数,定义为符号常量优点:优点:含义清晰;一改全改#include#define PI 3.1416main()float r,area;printf(please enter r:);scanf(%f,&r);area=PI*r*r;printf(The area is%f,a);符号常量
6、的应用例2.3 录入50个学生的成绩,统计10090,8980,7970,6960,590个分数段学生的人数,并显示统计结果(统计结果 记为count)自顶向下:1:录入50个学生的成绩2:统计个分数段学生的人数3:显示统计结果S1.1:使:使i=1 S1.2:输入:输入 ni 学生的成绩学生的成绩S1.3:i=i+1S1.4:如果:如果i50,执行,执行S1.2S2.1:使:使i=1 S2.2:判断:判断ni学生的属于哪个学生的属于哪个分数段,该分数段人数分数段,该分数段人数+1S2.3:i=i+1S2.4:如果:如果i50,执行,执行S2.2S3.1:使:使i=1 S3.2:显示:显示co
7、untiS3.3:i=i+1S3.4:如果:如果i5,执行,执行S3.2#define N 5030303030NN3.2.2 3.2.2 标示符与变量标示符与变量1 1、变量、变量 变量:在程序执行过程中其值可以改变的存变量:在程序执行过程中其值可以改变的存储单元,该存储单元的名字称为变量名。储单元,该存储单元的名字称为变量名。变量有不同的类型,存放不同类型的数据。变量有不同的类型,存放不同类型的数据。注意:变量要注意:变量要 先定义再使用先定义再使用 定义变量定义变量 :类型类型 变量名表;变量名表;abc变量名 变量值 int a,b,c;a=3;b=8;c=a+b;a=5;存储单元38
8、115变量的命名规则标示符标示符 用于命名程序中的实体对象(如变量,符号常量用于命名程序中的实体对象(如变量,符号常量函数,数组等)函数,数组等)(1)标示符是以字母或下划线开头,由字母、数字)标示符是以字母或下划线开头,由字母、数字及下划线等组成的字符序列,如:及下划线等组成的字符序列,如:abc,_x1,AB67,NAME2;(2)序列长度最大值依编译系统而定;)序列长度最大值依编译系统而定;(3)区分大小写字母,如区分大小写字母,如 abc 和和Abc是不同的变量是不同的变量(4)不允许使用关键字作变量名。)不允许使用关键字作变量名。例:例:123d r+43 auto 5A *2#88
9、 (错误)(错误)_123d r_43 Auto (正确)(正确)C语言的数据类型图构造类型数组结构(struct)共用体(union)其它类型指针(point)空类型(void)基本数据类型数值型整 型基本型(int)短整型(short)长整型(long)无符号型(unsigned)浮点型单精度(float)双精度(double)长双精度(long double)枚举型(enum)字符型(char)字符字符串在在C C语言中,数语言中,数据类型用相应的据类型用相应的关键字表示关键字表示3.2.3 整型类型 存储大小 取值范围intint 2字节 -215215-1 -32768 32768s
10、hortshort 2字节 -215215-1 -32768 32768long long 4字节 -231231-1long longlong long 8字节 -263263-1身份证号,学号身份证号,学号?-没有负数!没有负数!符号位符号位数值位数值位1 15C语言的unsigned和signed数 对整型和字符型1、signed:有符号数:有符号数 可以存放正数和负数2、unsigned:无符号数:无符号数 只能存放正数(实数没有unsigned和signed的区分)如:身份证号,学号等。取消符号位,与右边的各位一起用来表示数值本身。数值位数值位16符号位符号位数值位数值位1 15整型
11、默认有符号型3.2.3 整型unsigned int 0216-1 0 65535unsigned short int 0216-1 0 65535unsigned long int 0232-1类型 存储大小 取值范围int 16bit -215215-1 -32768 32768shortint 16bit -215215-1 -32768 32768long int 32bit -231231-1int main()char c1,c2;c1=a;c2=98;printf(%c%cn,c1,c2);printf(%d%dn,c1,c2);return 0;3.2.4 字符型数据c1c2变
12、量名 变量值 a98存储单元存储单元97(1)可以是转义字符 n(2)存储:字符的ASCII码(3)输出:整数 或 字符(4)允许对字符进行算术运算(即对ASCII码值进行算术运算)字符变量:关键字字符变量:关键字 char,占,占1字节字节字符常量:字符常量:用单引号括起来的单个字符A0303 例:字符数据的算术运算。例:字符数据的算术运算。3.2.4 字符型数据int main()char c1,c2;c1=a;c2=98;printf(%c%cn,c1,c2);printf(%d%dn,c1,c2);return 0;运行结果:a b 97 98c1c2变量名变量值 a98存储单元存储单
13、元97字符字符 ASCII码码 a 97 b 98 c 99c1+1;a+1;以字符方式输出以字符方式输出以整数方式输出以整数方式输出A0303例:字符数据的算术运算。例:字符数据的算术运算。课堂练习:给定一个小写字母,输出大写字母。#include int main()char c1,c2;c1=a;c2=c1-32;printf(%c,c2);return 0;运行结果:运行结果:Please input a char:a (输入)A (输出)3.2.4 字符型数据3.2.5 浮点型数据实型变量实型变量分为三种:1、单精度:float(有效数字7位)2、双精度:double(有效数字16位
14、)3、长双精度:long double(有效数字19位)。3.4.2 舍入误差int main()float a,b;a=12345678900.0;b=a+20;printf(%fn,b);return 0;实际:12345678868.000000期望:12345678920.0000000错误原因:float有效数字7位,后面的数字无意义。如何得到正确计算结果?doubleA0304例:数据有效长度例:数据有效长度数据在内存中的存储方式数据在内存中的存储方式1.1.内存单元的地址内存单元的地址:内存单元的编号内存单元的编号,与变量名对应。与变量名对应。2.2.内存单元的内容:变量的值。内
15、存单元的内容:变量的值。例例:对如下定义对如下定义:int a,b;char c;float x;变量变量a,b,c,x的内存分配情况的内存分配情况:abxc基本数据类型练习1.以下正确的字符常量是()A)A B)398 C)A D)xgh 2.以下正确的整数常量是()A)082 B)0 xhf C)654 D)9.03.以下是正确的实型常量是()A)9.0 B)0.5e C)1.2e+2.6 D)e-24.设有char a=a;int i=2;printf(%c,a+i)的结果为:A)c B)d C)r D)g5、以下转义字符用于换行的是()。A)r B)t C)n D)3.2.7 运算符和
16、表达式运算符的优先级为:运算符的优先级为:()()*,/高高低低%+,-1 基本算数运算符基本算数运算符+(加加),-(减法减法/取负取负),*(乘乘),/(除),(除),%(模运算,即求余数)(模运算,即求余数)关于除法运算/的说明a/b:a,b 都是整数,其商取整数,小数部分舍弃 例:5/2=2 结果取整商值 a/2=48 97/2 的整商值 a,b其一是实型,另一个自动转换为实型 例如:5./2=2.5 ;5/2.=2.5 例如:1/2=0 ;1/2.=0.5关于求余数运算符的说明 a%b:求a除以b的余数。a,b均为整型,或者单字符数据 运算结果为整数,结果为a除以b的余数。例:5%2
17、=1 a%2=1 97%2 5.0%2 错错 自增(+)、自减(-)运算实例A0305例例:自增自减运算符自增自减运算符 int main()int a,b,c,d;a=5;b=5;c=+a;d=b+;printf(c=%dn,c);printf(d=%dn,d);printf(a=%d,b=%d n,a,b);return 0;先将a值自加1,再将增加后的a值赋值给c先将b的值赋给d,然后b再自加1输出结果输出结果:c=6 d=5 a=6,b=6+i i=i+1,使,使i的值增的值增-i i=i-1,使,使i的值减的值减自增(+)、自减(-)运算2、用法与运算规则、用法与运算规则(1)前置运
18、算:)前置运算:i、i;即先增减、后运算;即先增减、后运算 先使先使 i 增增(减减)1,再以增、减后的值参与其它运算再以增、减后的值参与其它运算(2)后置运算:)后置运算:i、i。即先运算、后增减。即先运算、后增减 变量先参与其它运算,变量先参与其它运算,然后再使变量的值增、减然后再使变量的值增、减【自增、自减运算的几点说明】1)+、-只能用于变量,不能用于常量和表达式。只能用于变量,不能用于常量和表达式。例例1:5+、-(a+b)错误错误2)其)其结合方向是从右到左结合方向是从右到左,注意前置、后置问题。,注意前置、后置问题。例例2:int a=5,b;b=-a+;运算结果:运算结果:a=
19、6 b=-5(a+:后置运算,先引用变量的值,然后变量值加后置运算,先引用变量的值,然后变量值加1)3)在表达式中,避免这种用法)在表达式中,避免这种用法 x+x+x+算术表达式 例:设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数式结果不同的是()A.(a+b)*h/2 B.(1/2)*(a+b)*h C.(a+b)*h*1/2 D.h/2*(a+b)例:例:a /*简单表达式简单表达式*/2 /*简单表达式简单表达式*/(x+y)/2 1 /*复杂算术表达式复杂算术表达式*/(1)概念:)概念:用运算符和括号将运算对象(常量、变用运算符和括号将运算对象(常量、变量和函
20、数等)连接起来的、符合语法规则的式子,量和函数等)连接起来的、符合语法规则的式子,称为表达式。称为表达式。(2)表达式求值)表达式求值:按运算符的优先级高低次序执行:按运算符的优先级高低次序执行算术表达式常用函数:常用函数:1)幂次方用函数)幂次方用函数pow()()3)平方根用函数)平方根用函数sqrt()表示()表示 使用以上数学函数需要使用以上数学函数需要#include例例1:代数式代数式 3x3+x-2 算术表达式:算术表达式:3*pow(x,3)+x-2例例2 代数式代数式 算术表达式:算术表达式:a/2-(6*y)/(5*x)5x6y2a例:int i;float f;doubl
21、e d;long e如何计算:10+a+i*f-d/e?3.7 不同类型数据之间的转化1.自动转化2.类型强制转化混合运算的转化规则转化规则转化规则:运算符两侧的操作数的数据类型不同,运算符两侧的操作数的数据类型不同,则系统则系统 先转换、后运算先转换、后运算,首先将数据自动转换成,首先将数据自动转换成同一类型,然后在同一类型数据间进行运算。同一类型,然后在同一类型数据间进行运算。double floatlongunsignedint char,short1)表示必须的转换。表示必须的转换。char和和short 型必须转换型必须转换成成 int 型,型,float型必须型必须转换成转换成do
22、uble型。型。2)表示不同类型的转换表示不同类型的转换方向。方向。3.7 不同类型数据之间的转化类型强制转化和自动转化实例int i;float f;double d;long e10+a+i*f-d/e 计算机从左到右扫描1)10+a 10+97=107i*f i,f 转为double运算107转为double+i*fe转为double2)上述类型转换为系统自动进行。double floatlongunsignedint char,short数据类型强制性转化数据类型强制性转化y=3x=3.5A0306 例:取整运算 main()float x=3.5;int y;y=(int)x;pri
23、ntf(y=%d,y);printf(x=%f,x);强制转换:转化为为指定的数据类型。格式:格式:(要转换成的数据类型要转换成的数据类型)(被转换的表达式被转换的表达式)强制转换类型得到的是一个所需类型的中间强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。量,原表达式类型并不发生变化。将将3.5转化为整型数赋值给转化为整型数赋值给y,但但x本身的类型和其值未改变本身的类型和其值未改变(1 1)类型名称必须用()括号括起来)类型名称必须用()括号括起来(2 2)强制转换类型得到的是一个所需类型的中)强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。间量,原
24、表达式类型并不发生变化。(3 3)当被转换的表达式是一个简单表达式(如)当被转换的表达式是一个简单表达式(如简单变量)时,外面的一对圆括号可以缺省。简单变量)时,外面的一对圆括号可以缺省。数据类型强制性转化数据类型强制性转化说明说明(double)a(double)a(float)5/2(float)5/2(float)(5/2)(float)(5/2)(double)(a)(double)(a)(float)(5)/2(float)(5)/2 将将5 5转换成实型再除以转换成实型再除以2;2;(=2.5=2.5)(float)(5/2)(float)(5/2)将将5 5整除整除2 2的结果转
25、换成实型的结果转换成实型2.02.0算数运算符练习(1)1.设 int x,y=3;执行x=y+之后,x,y的值分别为:A)3,5 B)4,5 C)3,4 D)4,42.设有int m,i=5;执行m=+i之后,m,i的值分别为:A)5,5 B)5,6 C)6,6 D)6,53.表达式7%5的值为:()A)1 B)2.5 C)2 D)04.设有a=2,b=5,x=3.5;表达式(float)a+b/2+(int)x%2的结果值为:()A)3 B)5 C)5.0 D)75、float x=3.5,y=3.6,则表达式(int)(x+y)的结果值为:()A)6 B)4 C)3 D)76、float
26、 x=3.5,y=3.6,则表达式(int)x+y的结果值为:()A)7 B)4 C)3.6 D)6.67、设有char a=A;int i=a/2;printf(%d,i)的结果为:()A)65 B)66 C)32 D)67算数运算符练习(2)3.3 C语言的语句1.控制语句控制语句:(1)选择结构控制语句:if()else,switch()(2)循环结构控制语句:dowhile(),for(),while(),break,continue(3)其它控制语句:goto,return 2.函数调用语句函数调用语句:由一次函数调用加一个分号构成。例如,printf(This is a C fun
27、ction statement.);3.表达式语句表达式语句:表达式后加一个分号构成。例如:num=5;是一个赋值语句。4.空语句空语句:仅由一个分号构成,不执行任何操作。例:;5.复合语句:复合语句:由大括号括起来的一组语句构成。例如:main()/*复合语句。*/3.2 C语言的语句注意:没有分号注意:没有分号赋值语句及赋值运算符赋值运算符:赋值运算符:=变量变量 =表达式表达式 将表达式的值赋给变量例例1:t=x+5 p=q=r=9 x=(y=1)-(z=2)P=9x=-1注意:赋值运算符按自右而左的结合顺序注意:赋值运算符按自右而左的结合顺序例:例:float ffloat f;f=2
28、3f=23;/*计算机中计算机中f=23.00000f=23.00000*/注意:注意:将右边表达式类型转化为左边变量的类型将右边表达式类型转化为左边变量的类型例:例:a+=2 a+=2 a=a+2a=a+2 a a*=3 =3 a=a a=a*3 3 x+=y+7 x+=y+7 x=x+(y+7)x=x+(y+7)a a*=5+6 =5+6 a=a a=a*(5+6)(5+6)a/=3 a/=3*5 5 a=a/(3 a=a/(3*5)5)复合赋值运算复合赋值运算+=-=*=/=%=&=|=运算时要把整个表运算时要把整个表达式当做一个整体达式当做一个整体3.4 数据输出/输入1)C语言中本身
29、不提供输入/输出语句,所有的输入/输出操作都是由函数来实现的。printf,scanf,putchar,getchar2)使用输入输出库函数时,必须#include 3.4 数据的输入输出#includeint main()float a,b,c,disc,x1,x2,p,q;printf(输入输入a b c:);scanf(“%lf%lf%lf”,&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(x1=%7.2f nx2=%7.2fn,x1,x2);return 0;A0307例例:
30、求求 ax2+bx+c=0 方程的根。设方程的根。设b2-4ac0 a,b,c 由键盘输入由键盘输入计算计算disc=b2-4ac计算根计算根 x1 和和 x2输入输入a b c输出输出x1,x2计算计算 p 和和 qprintf 函数输出数据功能:向屏幕输出一个或功能:向屏幕输出一个或 多个任意类型的数据。多个任意类型的数据。语法语法:printf(格式控制字符串格式控制字符串,输出项表列输出项表列);例例:printf(max=%d,c);原样输出原样输出的字符串的字符串格式字符串格式字符串输出列表:输出列表:变量或表达式变量或表达式 printf(The area is%f ,a);pr
31、intf(%c%cn,c1,c2);printf(Please input a char:);整形整形实型实型字符型字符型多用于提示信息多用于提示信息 printf(sum=%d ,a+b);printf 函数输出数据(1)常用格式符之一常用格式符之一%d,按整型数的实际长度输出十进制数%f,输出实数(单、双精度),以小数形式输出%c,输出一个字符%s,输出一个字符串A0308 例:输出不同类型的数据例:输出不同类型的数据#includevoid main()int i=2;char c=H;float x=3.14;printf(i=%d,c=%c,x=%fn,i,c,x);输出结果i=2,
32、c=H,x=3.140000printf格式字符说明%f,不指定字段宽度,整数全部输出,并输出不指定字段宽度,整数全部输出,并输出6位小数位小数%m.nf,指定输出共指定输出共m列,其中小数列,其中小数n位位例例:输出实数输出实数#includevoid main()float x,y;x=111111.111;y=222222.222;printf(%f n,x+y);运行结果333333.328125只有前只有前7位有效位有效%8.1f运行结果333333.3 scanf函数输入数据功能功能:从标准输入设备中读字符串:从标准输入设备中读字符串 语法语法:scanf(控制字符串,参数控制字符
33、串,参数1,参数,参数2,)1)输入的数据存放在参数列表中输入的数据存放在参数列表中,参数必须是地址参数必须是地址(&变量变量)若控制字符串中包含普通字符,则输入时必须若控制字符串中包含普通字符,则输入时必须与其对应与其对应2)格式说明格式说明,用用%d%d格式输入时,不能用逗格式输入时,不能用逗号作为数据分割符,可以用回车和号作为数据分割符,可以用回车和tab键键例:例:scanf(%d,%d,&a,&b);例例452:int a,b;scanf(%d,%d,&a,&b);printf(a=%d,b=%d,a,b);输入:输入:100 ,200输出:输出:a=100,b=2001.1.输入变
34、量前要加符号输入变量前要加符号&2.2.输入函数格式要求严格输入函数格式要求严格3.3.类型必须匹配类型必须匹配4.4.控制串中的普通字符必须原样一起输入控制串中的普通字符必须原样一起输入floatffff输入函数输入函数 scanf 例例452:int a,b;scanf(%d%d,&a,&b);printf(a=%d,b=%d,a,b);输入:输入:100 200输出:输出:a=100,b=200用系统默认的分隔符:用系统默认的分隔符:回车、回车、tab键、空格键、空格 例如:例如:scanf(a=%d,b=%d,&a,&b);输入输入 a=2,b=3。A0309例:从键盘输入一个小写字母
35、,输出大写字母。#include int main()char a,b;printf(Please input a char:);scanf(%c,&a);/*键盘输入一个字符*/b=a-32;printf(%cn,b);/*屏幕输出一个字符*/return 0;运行结果:运行结果:Please input a char:a (输入)A (输出)a=getchar();3.4.5 字符数据输出/输入putchar(b);putchar(n);字符的输入输出getchar和putchar1.单个字符的输出单个字符的输出putchar(c)函数函数 格式:putchar(c);输出输出c:字符变量
36、、常量、转义字符字符变量、常量、转义字符 例:例:putchar(c);putchar(a);putchar(n);2.单个字符的输入单个字符的输入getchar()函数函数 函数的格式函数的格式:getchar();该函数没有参数该函数没有参数 从键盘上输入一个字符,通过从键盘上输入一个字符,通过返回值返回值带回程序带回程序。程序执行到该函数将暂停,等待从键盘输入数据程序执行到该函数将暂停,等待从键盘输入数据 例:例:c=getchar();3.4.5 字符数据输出/输入A0310:从键盘输入三个字符,原样输出:从键盘输入三个字符,原样输出#include int main()char a,
37、b,c;printf(请输入三个字符请输入三个字符:);a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);putchar(n);return 0;小结数据数据数据类型类型数据数据运算运算数据数据输入输出输入输出整形整形:int,long int字符型字符型:char浮点型浮点型:float,double+-*/%+-=变量变量常量常量123a123.5printfscanf例例:printf(max=%d,c);例例:scanf(%d,%d,&a,&b);%d,整型%f,浮点型%c,字符型c1c2变量名 变
38、量值 a98存储存储单元单元97char c1,c2;putchargetchar例例:putchar(a);putchar(c1);例例:c2=getchar();习题B0301 习题习题3.1 假如我国国民生产总值的年增长率为假如我国国民生产总值的年增长率为9%,计算,计算10年后,我国国民生产总值与现在相比增长多少百分比。计算年后,我国国民生产总值与现在相比增长多少百分比。计算公式为公式为 p=(1+r)n,其中其中 r为年增长率,为年增长率,n为年数,为年数,p为与现在相比的倍数。为与现在相比的倍数。B0302 习题习题3.6 编写程序将编写程序将“China”译成密码。规则:用字母译成密码。规则:用字母后第后第4个字母代替原字母。例如个字母代替原字母。例如“E”代替代替“A”。B0303 键盘输入三角形三边长,求三角形面积。键盘输入三角形三边长,求三角形面积。上机练习习题上机练习习题3.4Thank You世界触手可及世界触手可及携手共进,齐创精品工程携手共进,齐创精品工程
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。