《计算机C语言入门到精通PPT学习课件.ppt》由会员分享,可在线阅读,更多相关《计算机C语言入门到精通PPT学习课件.ppt(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、专业选修课专业选修课课程:程序设计基础教材:c语言程序设计实用教程1课程简介课程简介u本课程以完成本课程以完成“学生成绩管理系统学生成绩管理系统”为主线,设为主线,设立循序渐进的立循序渐进的8 8个项目:个项目:总分与平均分的计算、成绩总分与平均分的计算、成绩转换为等级、成绩分组汇总、成绩排序、有条件成转换为等级、成绩分组汇总、成绩排序、有条件成绩汇总、排名、成绩单制作、文件管理。绩汇总、排名、成绩单制作、文件管理。u将将C C语言的各个知识点融入这些任务中,其中前语言的各个知识点融入这些任务中,其中前5 5个项目对初学者尤为重要,也将是这学期的重点。个项目对初学者尤为重要,也将是这学期的重点
2、。u理论和实践有机结合,缺一不可,理论和实践有机结合,缺一不可,“两手都要抓,两手都要抓,两手都要硬两手都要硬”。目标就是学好。目标就是学好C C语言,为后续课程语言,为后续课程打下基础。打下基础。2项目一项目一 学生成绩的平均分与总分的计算学生成绩的平均分与总分的计算 项目要求项目要求输入三个学生的成绩,求他们的总分及平均分。输入三个学生的成绩,求他们的总分及平均分。项目分析项目分析第一、必须要学会输入成绩及输出结果;第一、必须要学会输入成绩及输出结果;第二、必须对输入的成绩进行总分及平均分的计算。第二、必须对输入的成绩进行总分及平均分的计算。所以,将这一项目分成二个任务介绍。所以,将这一项
3、目分成二个任务介绍。3任务任务1 学生成绩的输入、输出学生成绩的输入、输出一、问题情景一、问题情景一个班进行了一次考试,现要将几个学生的成绩输入电脑,并按要求输出。一个班进行了一次考试,现要将几个学生的成绩输入电脑,并按要求输出。二、具体实现二、具体实现#include stdio.h /文件预处理文件预处理main()/函数名函数名 /函数体开始函数体开始int x,y,z;/定义三个变量定义三个变量x,y,zprintf(请输入三个学生的成绩请输入三个学生的成绩);scanf(%d%d%d,&x,&y,&z);/*输入三个学生的成绩输入三个学生的成绩*/printf(输出三个学生的成绩输出
4、三个学生的成绩);printf(x=%d,y=%d,z=%dn,x,y,z);/输出三个变量输出三个变量x,y,z的值的值 /函数体结束函数体结束程序运行结果:程序运行结果:从上面这段程序可分析出:首先,要了解C语言的结构;第二,要了解C语言的运行环境;第三,要懂得如何定义变量,输入输出语句。4相关知识相关知识 v(一一)C程序的结构程序的结构#include“stdio.h”int x,y;main()x=1;y=x+2;printf(“x=%dny=%dn”,x,y);文件预处理主函数数据声明部分语句部分51 1、一个、一个C C源程序由一个或多个函数组成。其中必须有一源程序由一个或多个函
5、数组成。其中必须有一个函数名为个函数名为mainmain的函数,并且只能有一个的函数,并且只能有一个mainmain函数。函数。2 2、程序运行时从、程序运行时从mainmain函数开始,最后回到函数开始,最后回到mainmain函数,直函数,直到到mainmain函数结束。函数结束。3 3、C C函数由语句构成,语句结束必须用函数由语句构成,语句结束必须用“;”表示。表示。4 4、“”和和“”分别表示函数执行的起点和终点。分别表示函数执行的起点和终点。5 5、“/”后面的语句为注释。后面的语句为注释。6 6、C C程序书写格式自由,一行内可以写几个语句,但区程序书写格式自由,一行内可以写几个
6、语句,但区分大小写字母。分大小写字母。说明说明 6(二二)C程序运行环境及运行方法程序运行环境及运行方法 点击【文件】【新建】,出现的对话框中用鼠标点击【文件】【C+Source File】,然后更改文件所保存的目录(若需要更改),需入文件名,然后点击【确定】。输入程序。当程序输入完毕后,点击 或按F7,进行编译和连接。如果没有错误,点击 或按Ctrl+F5,进行运行,就能得出程序运行的结果。7(三三)数据类型数据类型C语言的数据类型可分为:v基本类型:又分为整型、实型、字符型和枚举型四种。其中枚举型这里暂不介绍。v构造类型:又分为数组类型、结构类型和共用类型三种。v指针类型。v空类型。【常量
7、】在程序运行中,其值不能被改变的量称为常量。常量可分为:整型常量。例1,23,-8。实型常量。例 1.23,-9.8,.123,23.,0.0,2.23e-4(表示2.2310-4),0.23e3(表示0.23103),0.23E-3(表示0.2310-3),1.23E3(表示1.23103)。字符常量。例 A,+,8。符号常量。例#define PI 3.14。则PI是一个符号常量,其值为3.14,它不能在程序中被改变。(请见任务三中的例1-15改)【变量】所谓变量就是在程序运行过程中,其值可以被改变的量。一个变量由两个要素组成。即变量名和变量值。变量名:每一个变量都必须有一个名字,即变量名
8、。变量名的命名规则:由字母或下划线开头,后面跟字母、数字和下划线。其有效长度,随系统而异,但至少前8个字符有效。如果超长,则超长部分被舍弃。C语言的变量名区分大小写。即同一字母的大小写,被认为给是两个不同的变量。例Total、total、toTal是不同的变量名。给变量名命名时,最好遵循“见名知意”这一基本原则。例如,name/xm(姓名)、sex/xb(性别)、age/nl(年龄)、salary/gz(工资)。【变量】所谓变量就是在程序运行过程中,其值可以被改变的量。一个变量由两个要素组成。即变量名和变量值。变量名:每一个变量都必须有一个名字,即变量名。变量名的命名规则:由字母或下划线开头,
9、后面跟字母、数字和下划线。其有效长度,随系统而异,但至少前8个字符有效。如果超长,则超长部分被舍弃。【变量定义与初始化】数据类型 变量名=初值,变量名2=初值2;例如:int x=1,y=2,z=3;float a=1.1,b=1.2,c=-0.1;char ch1=A,ch2=*;8练习练习:下面下面4个选项中,均是不合法的变量名是()个选项中,均是不合法的变量名是()均是合法的变量名是()均是合法的变量名是()(A)A 1num s.c (B)123 do d/g (C)INT r-y 文件1 (D)_12 drgs gd359(四四)格式化输出格式化输出printf()函数函数print
10、f()函数的一般格式printf(“格式字符串格式字符串”,输出项表输出项表);1.常用的格式字符串有:(1)格式指示符:%d 带符号十进制整数。带符号十进制整数。%f带符号十进制小数形式(默认带符号十进制小数形式(默认6位小数)。位小数)。%c输出一个字符。输出一个字符。(2)转义字符例1-1中的printf()函数中的”n”就是转义字符,输出时产生一个就是转义字符,输出时产生一个“换行换行”。(3)普通字符除格式指示符和转义字符之外的其它字符。例1-1中的printf(“x=%d,y=%d,z=%dn”,x,y,z);的“x=”、“y=”、“z=”,格式格式字符串中的普通字符,原样输出。字
11、符串中的普通字符,原样输出。在汉字系统环境下,允许使用汉字。2.输出项表输出项表是可选的。在输出项中,列出要输出的任意类型的数据。如果要输出的数据不止一个,相邻相邻2个之间用逗号分开。个之间用逗号分开。10(1)printf(“我是一个学生我是一个学生n”);/没有输出项没有输出项(2)printf(“%d”,1+2);/输出输出1+2的值的值(3)printf(“a=%d b=%dn”,1,1+3);/输出输出1的值和的值和1+3的值的值注意:注意:printf(“%d%fn”,1.212,5);是错误的。是错误的。#include“stdio.h”main()printf(“%d%fn”,
12、1.234,6);(四四)格式化输出格式化输出printf()函数函数【例例1-2】格式指示符与输出项数据类型不一致引起的错误。格式指示符与输出项数据类型不一致引起的错误。11【例例1-3】格式化输出。格式化输出。#include stdio.h main()int x=1,y=2,z=3;/*/*定义定义x,y,zx,y,z三个整型变量,并赋初值三个整型变量,并赋初值*/float a=1.1,b=2.3;char c1=A,c2=B;/*/*定义定义c1,c2c1,c2二个字符型变量,并赋初值二个字符型变量,并赋初值*/printf(输出输出x,y,z的值的值n);/原样原样 输出输出x,
13、y,zx,y,z的值的值 后换行后换行printf(x=%d,y=%d,z=%dn,x,y,z);/输出输出x=1,y=2,z=3x=1,y=2,z=3后换行后换行printf(输出输出a,b的值的值n);printf(a=%f,b=%fn,a,b);printf(输出输出c1,c2的值的值n);printf(c1=%c,c2=%cn,c1,c2);/输出输出c1=Ac1=A,c2=Bc2=B后换行后换行程序的运行结果为:程序的运行结果为:12(五五)格式化输入格式化输入scanf()函数函数1.scanf()函数的功能:函数的功能:从键盘上接收格式化输入。从键盘上接收格式化输入。2.scan
14、f()函数的一般格式函数的一般格式scanf(“格式字符串格式字符串”,输入项首地址表输入项首地址表);(1)格式字符串格式字符串:可以包含可以包含3种类型的字符:种类型的字符:格式字符格式字符 空白字符(空格、空白字符(空格、Tab键和回车键)键和回车键)非空白字符(又称普通字符)非空白字符(又称普通字符)%d 十进制带符号的整型数十进制带符号的整型数%f 十进制带符号的实型数十进制带符号的实型数%c 输入一个字符输入一个字符a.格式指示符与格式指示符与printf()printf()函数函数的相似:的相似:b.b.非空白字符在输入数据时,必须原样一起输入。非空白字符在输入数据时,必须原样一
15、起输入。13(2)输入项首地址表输入项首地址表由若干个输入项首地址组成,相邻由若干个输入项首地址组成,相邻2个输个输入项地址之间用逗号分开。变量首地址的表示方法如下:入项地址之间用逗号分开。变量首地址的表示方法如下:&变量名变量名其中其中“&”是地址运算符。是地址运算符。例如,在例例如,在例1-1中中scanf(“%d%d%d”,&x,&y,&z)中的中的“&x”是是指变量指变量x在内存中的首地址。其功能是从键盘上输入在内存中的首地址。其功能是从键盘上输入3个整型数,个整型数,分别存入分别存入&x,&y,&z起始的存储单元中,即输入三个整数分起始的存储单元中,即输入三个整数分别赋给别赋给x,y
16、,z。(五五)格式化输入格式化输入scanf()函数函数14 scanf(“%d,%d”,&a,&b);scanf(“%d%d”,&a,&b);(五五)格式化输入格式化输入scanf()函数函数15有两个人有两个人A,B,在数学考试中获得,在数学考试中获得87和和76的成绩,请的成绩,请输入输入A,B两人的代号及成绩,输出成绩。两人的代号及成绩,输出成绩。分析:此题就是考查输入输出语句,注意整数输入分析:此题就是考查输入输出语句,注意整数输入/输入的格式输入的格式用用%d,字符变量的输入,字符变量的输入/输出格式用输出格式用%c,同时注意输入语句中,同时注意输入语句中的两个数据之间用什么符号隔
17、开,则在程序运行输入数据时也的两个数据之间用什么符号隔开,则在程序运行输入数据时也要用同样的符号隔开两个数据。要用同样的符号隔开两个数据。16#include stdio.hmain()char c1,c2;int x,y;printf(请输入请输入A的成绩及代号:的成绩及代号:);scanf(%d:%c,&x,&c1);printf(请输入请输入B的成绩及代号:的成绩及代号:);scanf(%d:%c,&y,&c2);printf(输出输出A的代号及成绩:的代号及成绩:);printf(%c:%dn,c1,x);printf(输出输出B的代号及成绩:的代号及成绩:);printf(%c:%d
18、n,c2,y);程序运行结果为:程序运行结果为:17补充补充例:从键盘任意输入两个整数,求其和。例:从键盘任意输入两个整数,求其和。18知识扩展知识扩展 1.数据类型数据类型1.整型数据的分类整型数据的分类根据根据占用内存字节数的不同占用内存字节数的不同,整型数据又分为,整型数据又分为3类:类:基本整型(类型关键字为基本整型(类型关键字为int)。)。短整型(类型关键字为短整型(类型关键字为short int或或short)。)。长整型(类型关键字为长整型(类型关键字为long int或或long)。)。在在visual c+中,中,long型占字节,型占字节,int型占型占4字节,字节,sh
19、ort型占型占字节字节。还可以将变量定义为无符号整型。无符号型又分为无符号还可以将变量定义为无符号整型。无符号型又分为无符号基本整型(基本整型(unsigned int)、无符号短整型()、无符号短整型(unsigned short)和无符号长整型()和无符号长整型(unsigned long)三种,)三种,只能用来存只能用来存储无符号整数储无符号整数。默认为有符号。默认为有符号。192.实型数据的分类实型数据的分类 浮点型数据分为单精度(浮点型数据分为单精度(float型)、双精度(型)、双精度(double型)型)和长双精度型(和长双精度型(long double)三类形式。)三类形式。类
20、型类型 字节数字节数 数的范围数的范围 有效数字有效数字float float 4 4 10 10-37-37 101038 38 6 6 7 7 位位doubledouble型型 8 8 10 10-307-307 1010308308 15 15 1616位位long double 8 10long double 8 10-4931-4931 10104932 4932 1818 1919位位如何定义两个双精度实型变量如何定义两个双精度实型变量x和和y?20 3.字符型数据字符型数据字符型数据分为字符型数据分为有符号字符型(关键字为有符号字符型(关键字为signed char或或char)
21、和无符号字符型()和无符号字符型(unsigned char)两类。两类。计算机并不是将该字符本身存放到存储单元中计算机并不是将该字符本身存放到存储单元中(存储单元只存储单元只能存储二进制信息能存储二进制信息),而是,而是将字符的代码(将字符的代码(ASCII码)存储到相码)存储到相应的存储单元中应的存储单元中。附录附录A是字符与代码的对照表,这是国际通过的是字符与代码的对照表,这是国际通过的ASCII代码代码.在所有的编译系统中都规定在所有的编译系统中都规定以一个字节来存储一个字符。以一个字节来存储一个字符。21知识扩展知识扩展 2.转义字符转义字符有些以有些以“”开头的特殊字符称为转义字开
22、头的特殊字符称为转义字符符n 换行换行t 横横向跳格向跳格r 回回车车 反反斜杠斜杠ddd 1到到3位八进制数所代表的字符位八进制数所代表的字符xhh 1到到2位十六进制数所代表的字符位十六进制数所代表的字符22输出时几种常见的格式符的修饰符:输出时几种常见的格式符的修饰符:l l:用于长整型整数,可加在格式符:用于长整型整数,可加在格式符d d,o o,x x,u u前面前面m m(代表一个正整数):数据最小宽度(代表一个正整数):数据最小宽度n n(代表一个正整数):对实数,表示输出(代表一个正整数):对实数,表示输出n n位小数;位小数;对字符串,表示截取的字符个数对字符串,表示截取的字
23、符个数-:输出的数字或字符在域内向左靠:输出的数字或字符在域内向左靠知识扩展知识扩展 3.格式化输出格式化输出231.d1.d格式符格式符(1)%md:%md:m m为指定的输出字段的宽度为指定的输出字段的宽度。如果数据的位。如果数据的位数小于数小于m,m,则左端补以空格,若大于则左端补以空格,若大于m m,则按实际位数,则按实际位数输出。输出。例例:printf(“%4d,%4d”,a,b);若若a=123,b=12345,则输出结果为,则输出结果为 (2)ld:输出长整型数据。输出长整型数据。例例:long a=135790;/*定义定义a为长整型变量为长整型变量*/printf(“%ld
24、”,a);也有也有mld。123,1234524【例例1-6】类型转换字符类型转换字符d的使用的使用#includemain()int a=123;long b=123456;printf(“a=%d,a=%5d,a=%-5d,a=%2dn”,a,a,a,a);printf(“b=%ld;b=%8ld,b=%-8ld,b=%2ldn”,b,b,b,b);printf(“a=%ldn”,a);printf(“b=%dn”,b);252.2.格式符。格式符。以八进制整数形式输出。以八进制整数形式输出。输出的数值不带符号,即只能输出正数。输出的数值不带符号,即只能输出正数。例:例:int a=9;p
25、rintf(“%d,%o”,a,a);输出为输出为:9,113.3.格式符。格式符。以十六进制数形式输出整数。同样不会出以十六进制数形式输出整数。同样不会出现负的十六进制数。现负的十六进制数。例:例:int a=17;printf(“%x,%o,%d”,a,a,a);输出结果为输出结果为:11,21,17264.c格式符。格式符。用来指定输出字符数据的宽度用来指定输出字符数据的宽度m。例:例:#includevoid main()char c=a;printf(“%3cn”,c);输出结果为:输出结果为:a (前有(前有2个空格)个空格)275.格式符。格式符。用来以小数形式输出实数(包括单双
26、精度)用来以小数形式输出实数(包括单双精度)有以下几种用法:有以下几种用法:。不指定字段宽度,由系统自动指定字段宽度,使整。不指定字段宽度,由系统自动指定字段宽度,使整数部分全部输出,并输出位小数。应当注意,在输出的数字数部分全部输出,并输出位小数。应当注意,在输出的数字中并非全部数字都是有效数字。单精度实数的有效位数一般为中并非全部数字都是有效数字。单精度实数的有效位数一般为位。位。m.nf。指定输出的数据共占列,其中有位小数。如果。指定输出的数据共占列,其中有位小数。如果数值长度小于,则左端补空格。数值长度小于,则左端补空格。-m.nf与与.基本相同,只是使输出的数值向左端基本相同,只是使
27、输出的数值向左端靠,右端补空格。靠,右端补空格。28【例例1-71-7】输出实数时指定小数位数。输出实数时指定小数位数。#include void main()float f=123.456;printf(%f%10f%10.2f%.2f%-10.2fn,f,f,f,f,f);运行结果:运行结果:123.455994 123.455994 123.46 123.46 123.46123.455994 123.455994 123.46 123.46 123.46 296.6.格式符。以指数形式输出实数。格式符。以指数形式输出实数。例例:(,),);输出:输出:8 8列列 5 5列列所输出的实数
28、共占列宽度。所输出的实数共占列宽度。(注:不同系统的规注:不同系统的规定略有不同定略有不同)301.输入整型数:格式符有输入整型数:格式符有%d。2.输入输入float型数据:型数据:%f。3.输入输入double型数据型数据:%lf。4.输入字符型数据:输入字符型数据:%c。注意:不能有格式符注意:不能有格式符%m.nf知识扩展:知识扩展:scanf格式控制格式控制如:如:scanf(scanf(“%7.2f%7.2f”,&a);,&a);311.根据以下定义语句和数据的输入方式,根据以下定义语句和数据的输入方式,scanf语句语句的正确形式应为的正确形式应为 。已有定义:已有定义:floa
29、t a,b;数据的输入方式:数据的输入方式:4.52 3.5A、scanf(“%f,%f”,&a,&b);B、scanf(“%f%f”,&a,&b);C、scanf(“%3.2f%2.1f”,&a,&b);D、scanf(“%3.2f%2.1f”,&a,&b);练习:练习:322.若有如下程序若有如下程序#includevoid main()int i,j;scanf(“i=%d,j=%d”,&i,&j);printf(“i=%d,j=%dn”,i,j);要求给要求给i赋赋10,给,给j赋赋20,则应从键盘输入,则应从键盘输入 。输出是。输出是 。333.已知已知i、j、k为为int型变量,若
30、从键盘输入:型变量,若从键盘输入:1,2,3,使,使i的值为的值为1,j的值为的值为2,k的值为的值为3,则输,则输入语句应写为入语句应写为 。34一个字符常量将该字符的相应的一个字符常量将该字符的相应的ASCIIASCII代码放到存储单代码放到存储单元中。元中。这样使得字符型数据和整型数据之间在一定条这样使得字符型数据和整型数据之间在一定条件下可以通用。件下可以通用。知识扩展知识扩展 字符数据与整型数据在一定条件下可以通用字符数据与整型数据在一定条件下可以通用 书上书上22页第页第4题题#include”stdio.h”void main()char c1,c2;c1=a;c2=b;prin
31、tf(“%c%cn”,c1,c2);35 知识扩展知识扩展 4.单个字符的输入输出单个字符的输入输出(1 1)字符输出函数字符输出函数v一般形式:一般形式:putcharputchar(c c)v函数作用:向终端输出一个字符函数作用:向终端输出一个字符 字符型变量/常量整型变量/常量36【例例1-8】输出单个字符。输出单个字符。#includevoid main()char ch1,ch2,ch3;ch1=S;ch2=u;ch3=n;putchar(ch1);putchar(ch2);putchar(ch3);putchar(n);putchar(ch1);putchar(n);putchar
32、(ch2);putchar(n);putchar(ch3);putchar(n);37(2 2)字符输入函数)字符输入函数v一般形式:一般形式:getchargetchar()()v函数作用:从键盘输入一个字符。函数作用:从键盘输入一个字符。v函数值:函数值:从输入设备得到的字符。从输入设备得到的字符。38【例例1-9】getchar()应用应用#include void main()char ch;printf(“请输入一个字符请输入一个字符”);ch=getchar();/*从键盘输入一个字符并赋给变量从键盘输入一个字符并赋给变量ch*/putchar(ch);putchar(n);/*将
33、将ch的值并换行的值并换行*/putchar(getchar();/*从键盘输入一个字符并输出从键盘输入一个字符并输出*/putchar(n);39v字符串常量是一对双引号括起来的一串字符字符串常量是一对双引号括起来的一串字符.v合法的字符串常量合法的字符串常量:“How do you do.How do you do.”,“CHINACHINA”,“a a”,“$123.45$123.45”v可以输出一个字符串,如可以输出一个字符串,如printf(printf(“How do you do.How do you do.”);v规定:规定:系统在每个字符串的最后自动加入一个字符系统在每个字符
34、串的最后自动加入一个字符作为字符串结束的标志。作为字符串结束的标志。知识扩展知识扩展 5.字符串常量字符串常量如:如果有一个字符串常量如:如果有一个字符串常量”,实际上在内存中是:,实际上在内存中是:CHINA0 它占内存单元不是个字符,而它占内存单元不是个字符,而是个字符,最后一个字符为是个字符,最后一个字符为。但在输出时不输出。但在输出时不输出。40 区分字符常量与字符串常量区分字符常量与字符串常量a a与与”a a”。l是字符常量,是字符常量,“”是字符串常量。是字符串常量。l“a a”实际包含实际包含2 2个字符:个字符:a a与与00。结论:结论:不能把一个字符串常量赋给一个字符变量
35、。不能把一个字符串常量赋给一个字符变量。c=a;“a”;c“CHINA”;如:如:假设被指定为字符变量假设被指定为字符变量 :char cchar c41任务任务2 总分及平均分的计算总分及平均分的计算一、问题情景一、问题情景一个班进行了一次考试,现要将几个学生的成绩输入电脑,并计算他们的平均分及总分,然后按要求输出。二、具体实现二、具体实现42#include stdio.h main()int x,y,z;float sum,avg;/定义二个实型变量sum,avgprintf(请输入三个学生的成绩);scanf(%d%d%d,&x,&y,&z);/*输入三个学生的成绩*/sum=x+y+
36、z;/将x+y+z的值赋给sumavg=sum/3;/将sum/3的值赋给avgprintf(请输出三个学生的总成绩及平均分为);/输出提示printf(“sum=%.2f,avg=%.2fn”,sum,avg);/输出 程序的执行情况如下程序的执行情况如下 :首先,算术运算和算术表达式;第二,赋值运算和赋值表达式;另外,还需掌握在本任务中没有体现,但在C程序中却经常要用到的C语言特有的运算和运算符。43三、相关知识三、相关知识(一一)算术运算与算术表达式算术运算与算术表达式1.五种基本的算术运算符五种基本的算术运算符 +(加法)、(加法)、-(减法)、(减法)、*(乘法)、(乘法)、/(除法
37、)、(除法)、%(求余数)(求余数)这里,需要特别提出的是:这里,需要特别提出的是:(1)关于除法运算)关于除法运算/C语言规定:语言规定:两个整数相除,其商为整数,小数部分两个整数相除,其商为整数,小数部分被舍弃。被舍弃。例如:例如:5/2=2。-5/3=-1。44(2)关于求余数运算)关于求余数运算%要求两侧的操作数均为整型数据,否则出错。要求两侧的操作数均为整型数据,否则出错。例如:例如:5%3=2,3%5=3,-5%3=-2,-5%(-3)=-2。但是:。但是:5.2%345(一一)算术运算与算术表达式算术运算与算术表达式2.表达式和算术表达式表达式和算术表达式(1)表达式的概念)表达
38、式的概念用运算符和括号将运算对象(常量、变量和函数)连接起来用运算符和括号将运算对象(常量、变量和函数)连接起来的、符合的、符合C语言语法规则的式子,称为表达式。语言语法规则的式子,称为表达式。(2)算术表达式的概念)算术表达式的概念表达式中的运算符都是算术运算符。表达式中的运算符都是算术运算符。例如:例如:3+2*5、(x+y)/2+3、5%2+3都是算术表达式。都是算术表达式。3.3.运算符的优先级与结合性运算符的优先级与结合性(1 1)算术运算符的优先级是:先)算术运算符的优先级是:先*,/,%,再,再+,-。(2 2)有括号的先做括号。左结合性。)有括号的先做括号。左结合性。46练习练
39、习1.若若a是是int型变量,则执行表达式型变量,则执行表达式a=25/3%3后后a的的值为值为 。2.以下表达式值为以下表达式值为3的是的是 。A)16-13%10 B)2+3/2C)14/3-2 D)()(2+6)/(12-9)47(一一)算术运算与算术表达式算术运算与算术表达式 4.数据类型转换数据类型转换高 double float long unsigned 低 int char,short 在在C语言中,整型、实型和语言中,整型、实型和字符型数据间可以进行混合运字符型数据间可以进行混合运算。算。在进行运算时,在进行运算时,不同类型不同类型的数据要先转换成同一类型的数据要先转换成同一
40、类型,然然后进行运算。转换规则如右图。后进行运算。转换规则如右图。转换过程是由计算机自动完成转换过程是由计算机自动完成的。的。图中横向的箭头表示必须的转换。图中横向的箭头表示必须的转换。纵向的箭头表示运算对象为不同类型时的转换。纵向的箭头表示运算对象为不同类型时的转换。48如:运算如:运算10+a,先将,先将a转换为转换为int型数据型数据97,再与,再与int型数型数据据10相加,结果为相加,结果为int型数据型数据107。运算运算2+0.5,先将,先将int型的型的2转换为转换为double型,再与型,再与double型的型的0.5相加,结果为相加,结果为double型数据。型数据。练习:
41、表达式练习:表达式1812*sqrt(4.0)/8值的数据类型为()值的数据类型为()A)int B)float C)double D)不确定不确定 结论:结论:如果参加如果参加+,-,*,/运算中有一个数为实数,则运算中有一个数为实数,则结果是结果是doubledouble类型!类型!49强制类型转换运算符的作用是:将一个表达式转换强制类型转换运算符的作用是:将一个表达式转换成所需类型成所需类型 一般形式一般形式:(类型名)(表达式)(类型名)(表达式)强制类型转换运算符强制类型转换运算符例如:例如:(double)将转换成将转换成double类型类型(int)(x+y)将将x+y的值转换成
42、整型的值转换成整型(float)(5%3)将将5%3的值转换成的值转换成float型型50若有定义语句:若有定义语句:int a=2,b=3;float x=3.5,y=2.5;则表达式则表达式(float)(a+b)/2+(int)x%(int)y的值为的值为 。练习练习51(二二)赋值运算和赋值表达式赋值运算和赋值表达式1.赋值运算赋值运算“=”就是赋值运算符,它的作用是将一个表达式的值赋给就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。一个变量。赋值运算符的一般形式为:赋值运算符的一般形式为:变量变量=赋值表达式赋值表达式2.复合赋值运算复合赋值运算复合赋值运算是复合赋值运算是C
43、语言特有的一种运算。语言特有的一种运算。复合赋值运算的一般格式为:复合赋值运算的一般格式为:变量变量 复合运算符复合运算符 表达式表达式复合算术运算符有五种,分别是:复合算术运算符有五种,分别是:+=,-=,*=,/=,%=52例如:例如:x=5 /将将5赋给变量赋给变量xx=6+7 /将将6+7的值赋给变量的值赋给变量x x+=3 等价于等价于 x=x+3 x+=5+8 等价于等价于 x=x+(5+8)x*=y+2 等价于等价于 x=x*(y+2)x/=x+y 等价于等价于x=x/(x+y)x/=8 等价于等价于x=x/8 x%=7 等价于等价于 x=x%7 x%=(4-2)等价于等价于x=
44、x%(4-2)x+y=z5=x注:赋值符号左边必须是一个变量。注:赋值符号左边必须是一个变量。53【例例1-12】阅读下列程序阅读下列程序#include stdio.hmain()int x,y,z;float a,b,c;/定义三个单精度型变时定义三个单精度型变时a,b,cx=1;y=2;z=3;a=1.1;b=2.1;c=3.5;x=x+y+z;/将将x+y+z的值赋给变量的值赋给变量x,即,即x=6printf(x=%dn,x);y*=y+1;/将将y*(y+1)赋给赋给y,y=2*(2+1),即即y=6printf(y=%dn,y);z=(int)a%(int)b;/z=1%2,即,
45、即z=1printf(z=%dn,z);a+=a+b+c;/a=a+(a+b+c),a=1.1+(1.1+2.1+3.5),即即a=9.9printf(a=%fn,a);54(三三)C语言特有的运算和运算符语言特有的运算和运算符1.自增自增(+)、自减、自减(-)运算运算作用:作用:自增运算使单个变量的值增自增运算使单个变量的值增1,自减运算使单个变量的值减,自减运算使单个变量的值减1.用法与运算规则用法与运算规则自增、自减运算符都有两种用法:自增、自减运算符都有两种用法:1)前置运算前置运算运算符放在变量之前:运算符放在变量之前:+变量、变量、-变量变量先使变量的值增(减)先使变量的值增(减
46、)1,然后再以变化后的值参与其他支,然后再以变化后的值参与其他支算,即先增减,后运算。算,即先增减,后运算。55#include stdio.hmain()int x=2,y,z;printf(x=%dn,x);y=+x;/x先增先增1(=3),然后再赋给),然后再赋给y(=3)printf(x=%d y=%dn,x,y);+x;/x=x+1,即,即x=4printf(x=%dn,x);y=+x+2;/x先增先增1(=5),然后与),然后与2的和再赋给的和再赋给y(=7)printf(x=%d y=%dn,x,y);z=-x;/x先减先减1(=4),然后再赋给),然后再赋给z(=4)print
47、f(x=%d z=%dn,x,z);-x;/x=x-1,即,即x=3printf(x=%dn,x);/输出输出x=3后换行后换行56后置运算后置运算变量变量+、变量、变量-#include stdio.hmain()int x=2,y,z;printf(x=%dn,x);y=x+;/先将先将x的值的值(2)赋给赋给y(=2),然后,然后x再自增再自增(3)printf(x=%d y=%dn,x,y);x+;/x=x+1,即,即x=4printf(x=%dn,x);y=(x+)+2;/先将先将x+2赋给赋给y(=6),然后,然后x再自增再自增(5)printf(x=%d y=%dn,x,y);z
48、=x-;/先将先将x的值的值(5)赋给赋给z(=5),然后,然后x再自减再自减(4)printf(x=%d z=%dn,x,z);x-;/x=x-1,即,即x=3printf(x=%dn,x);自增、自减运算符不能用于常量和表达式。例如:5+、-8、+(a+b)都是错误的。572.逗号运算(,)及其表达式逗号运算(,)及其表达式C语言提供一种用逗号运算符“,”连接起来的式子,称为逗号表达式。逗号运算符又称顺序求值运算符。(1)一般形式:表达式1,表达式2,表达式n.(2)求解过程:自左至右,依次计算各表达式的值,“表达式n”的值即为整个逗号表达式的值。例如:逗号表达式“a=3*5,a*4”的值
49、=60:先求解a=3*5,得,a=15;再求a*4=60,所以逗号表达式的值为60。又例如:逗号表达式“(a=2+1,a*5),a+8”的值=11,先求解a=2+1,得a=3,再求a*5=15;最后求解a+8=11,所以逗号表达式的值=1158任务任务3 举一反三举一反三【例1-15】输入圆半径,求圆的面积和周长。的值取3.14.分析:因为根据圆半径,求圆的面积和周长,所以要定义三个变量,半径r,面积s和周长c;考虑到输入的圆半径可能会有小数,所以这三个变量不妨都定义为单精度型float。定义变量r,s,c输入变量rs=3.14*r*rc=2*3.14*r输出s,c#include stdio
50、.hmain()float r,s,c;printf(请输入圆的半径r:);scanf(%f,&r);s=3.14*r*r;c=2*3.14*r;printf(圆的面积s为:%fn圆的周长c为%fn,s,c);流程图59符号常量符号常量#define PI 3.14 意思是定义一个符号常量PI,其值为3.14。符号常量的命名规则与变量名一样,但习惯上,符号常量常用大写字母表示。#include stdio.h#define PI 3.14 /定义一个符号常量PI,其值为3.14main()float r,s,c;printf(请输入圆的半径r:);scanf(%f,&r);s=PI*r*r;c