资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,DATE yyyy/M/d|2021/10/28,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Free Template from,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Free photoshow template from,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2021/10/28,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2021/10/28,程序设计基础,-,C语言,授课教师:,E-mail:,授课班级:,第1章 语言概述,本章主要介绍C语言程序的结构和书写规则,以及Turbo C V2.0的基本操作。,1.1 C语言出现的历史背景,1.2 C语言的特点,1.3 简单的C程序的介绍,1.4 C程序的上机步骤,1.1 C语言出现的历史背景,1语言的诞生与发展,(1)在C语言诞生以前,系统软件主要是用汇编语言编写的。由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般的高级语言又难以实现对计算机硬件的直接操作(这正是汇编语言的优势),于是人们盼望有一种兼有汇编语言和高级语言特性的新语言。,(2)语言是贝尔实验室于70年代初研制出来的,后来又被多次改进,并出现了多种版本。80年代初,美国国家标准化协会(ANSI),根据语言问世以来各种版本对语言的发展和扩充,制定了ANSI C标准(1989年再次做了修订)。,(本书选定的上机环境是,TC V2.0(DOS操作系统),。,1.2 C语言的特点,C语言同时具有汇编语言和高级语言的优势。,(1)语言简洁、紧凑,使用方便、灵活。,(2)运算符极其丰富。,(3)生成的目标代码质量高,程序执行效率高。,(4)可移植性好(较之汇编语言)。,(5)可以直接操纵硬件。,(6)在C语言中,除实现,顺序、选择,和,循环,三种基本结构等的9条控制语句外,输入输出操作均由标准库函数来实现。,所以,学习C语言,不仅要学习这9条控制语句和各种运算符,而且要学习并掌握常用标准库函数的使用,。,例1:,main(),;,1.3 简单的C程序介绍,1.main代表主函数.每个c程序有且只有一个主函数.,2.函数体是由 括起来的.,3.C语言规定分号为语句的结束符,每条语句都用分号结束.,4.对于单独一个分号来说也是一条语句,只不过语句部分为空,即空语句,所以例1是包括空语句的C程序.,1.printf是C语言中的输出函数,功能:将双引号内的字符串原样输出.我们注意这条语句结束后有一个分号.,2.n在C语言中表示换行符,是一个控制字符,表示在输出这条语句后回车换行.,/*/间的内容作为注释部分,只起到说明的作用,不影响程序的运行.它只是给人看的,可以提高程序的可读性,对编译和运行不起作用,因此注释可以加在程序中的任何位置.,运行结果:Its a book!,(在用户屏上输出该语句,并且因为有n这个换行符,光标会移到下一行开头处.),例2:main(),printf(“Its a book!n”);/*输出语句*/,1.int表示整型,这一行是声明部分,定义变量a,b,sum为整型变量,这条语句相当于int a;int b;int sum;,2.两个赋值语句(把123赋值给a,把456赋值给b)这样a就等于123,b就等于456.,例3:main(),int a,b,sum;,a=123;b=456;,sum=a+b;,printf(“sum is%d n”,sum);,3.赋值计算(把a和b的和赋值给sum)这样sum就等于a,b之和了.(sum=123+456=579).,4.%d是输入输出“格式字符串”,用来指定数据的类型.%d表示以十进制整数类型输出,在执行输出时,此位置上代以一个十进制整数数值.(其他的格式字符串:%c,%s,%f,).,5.第一个sum原样输出.第二个sum表示要输出的变量,它的值就是a+b的值(579),而且这个值就会替代%d的位置.,6.执行结果:sum is 579,C程序实例,已知三角形三边长a、b、c的大小,求三解形的面积?请编程实现。,#include”math.h”,main(),int a,b,c;,float s,ss;,a=3;b=4;c=5;,s=(a+b+c)/2.0;,ss=sqrt(s*(s-a)*(s-b)*(s-c);,printf(”ss=%f”,ss);,若要通过键盘输入三边怎么办?,scanf(”%d%d%d”,自定义功能函数来解决三角形面积问题。,#include“math.h”,main(),int a,b,c;,float s;,scanf(%d%d%d,s=area(a,b,c);/*调用函数*/,printf(s=%fn,s);,float area(float x,float y,float z),float s,ss;,s=(a+b+c)/2.0;,ss=sqrt(s*(s-x)*(s-b)*(s-c);,return(ss);,return是将z的值返回给主函数main.返回值通过函数名area带回到函数的调用处.经过执行area函数得到一个返回值(即area函数中变量ss的值)把这个值赋给s,然后输出s的值.,说明:程序如右边的编制方法,实际上是不能正确运行行的。,#include“math.h”,main(),int a,b,c;,float s;,scanf(%d%d%d,s=area(a,b,c);/*调用函数*/,printf(s=%fn,s);,float area(float x,float y,float z),float s,ss;,s=(a+b+c)/2.0;,ss=sqrt(s*(s-x)*(s-b)*(s-c);,return(ss);,程序如何才能运行正常呢?,应该加上函数声明,说明:被调函数在主函数后面,且函数类型为非整数类型时,一定要使用函数声明;函数声明位置与主函数变量定义位置一样.,声明格式:,函数类型 函数名(形参类型,开参类型),或,函数类型 函数名(形参类型 形参,形参类型 形参),#include“math.h”,main(),int a,b,c;,float s;,scanf(%d%d%d,s=area(a,b,c);/*调用函数*/,printf(s=%fn,s);,float area(float x,float y,float z),float s,ss;,s=(a+b+c)/2.0;,ss=sqrt(s*(s-x)*(s-b)*(s-c);,return(ss);,float area(float,float,float);,功能函数在前,主调函数在后,不需函数声明,#include“math.h”,float area(float x,float y,float z),float s,ss;,s=(a+b+c)/2.0;,ss=sqrt(s*(s-x)*(s-b)*(s-c);,return(ss);,main(),int a,b,c;,float s;,scanf(%d%d%d,s=area(a,b,c);/*调用函数*/,printf(s=%fn,s);,总结:,一.一个c程序的组成:,编译预处理部分(可选),main(),说明部分 /*变量定义等*/,执行部分 /*输入输出计算等*/,其他函数(可选,位置任意),二.C语言程序的基本特点,C语言是一种函数式语言,其程序基本组成(单位)是函数,每个C程序必须有一个、也只能有一个主函数,main,不管主函数在程序中的位置如何,程序执行总是从主函数开始,所有变量必须先定义(规定数据类型)后使用,每个语句必须用分号“,;,”结束(注意是“每个语句”而不“每行语句”),编译预处理命令不是语句(行末不能用分号结束),C语言本身没有输入/输出语句,其输入/输出功能须通过调用标准函数来实现,使用系统提供的标准库函数或其他文件提供的现成函数时,必须使用“文件包含”(除了,printf和scanf,语句),主函数可以调用其他各种函数,但其他函数不能调用主函数.,1.4 C语言程序上机步骤,P5,C语言是一种通过编译程序处理的高级程序设计语言。,所以其上机的处理流程可用以下示意图表示:,在微机上,通常用来编写、编译、连接、调试和执行C,语言程序的是Borland公司开发的集成化软件Turbo C。,源程序(.c)目标程序(.obj)可执行程序(.exe),编译 连接,二.TC的菜单,(通过F10键和Esc键切换):,File,Edit,Run,Compile,Project,Options,Debug,Break/Watch,文件操作,编辑,编译,运行,项目文件,选项,调试,中断观察,1.,File,:Load(打开已有的C程序文件)New(新建C程序文件),Save(保存,文件名以.c为扩展名,如abc.c)Quit(退出TC),2.编辑源文件:在Edit(编辑)状态下输入.,3.编译源文件:选择并执行,Compile,/Make EXE File项(快捷键:,F9,),则TC将自动完成对当前正在编辑的源程序文件的编译、连接,并生成可执行文件。,4.运行与查看结果,(1)运行当前正在编辑的源程序文件,选择并执行,Run,/Run项(快捷键:,Ctrl+F9,),程序运行结束后,仍返回到编辑窗口。,(2)查看运行结果,选择并执行Run/User Screen项(快捷键:,Alt+F5,)。查看完毕后,按任一键返回编辑窗口。,5.编辑下一个新的源程序,选择并执行,File,/New项即可。,如果屏幕提示如下确认信息:,NONAME.C not saved.Save?(Y/N),如果不需要保存当前正在编辑的源程序,则键入“N”,如果需要保存当前正在编辑的源程序,则键入“Y”,进入下一步操作。,系统提示换名:,NONAME.C,直接输入你给源程序文件起的名字再按回车即可。,6.退出TC返回DOS:,File,/Quit(快捷键:,Alt+X,键),Turbo C编程常用操作,(按F1键可获得帮助),Turbo C基本操作,Alt+F,建立新文件,Load/Pick,调入现有文件,Save,存盘(F2),Write to,换名存盘,Ctrl+F9 运行程序(自动完成编译/连接),Alt+F5 观看运行结果,程序调试常用操作,F5,显示/关闭观察、出错提示等窗口,F6 编辑窗口(,Edit)和信息窗口(Message,)窗口切换,Alt+B,设置断点/变量观察,(Break/Watch),常用:增加观察的变量名(Add watch,),F8,单步执行,Ctrl+F2,程序重置(重新开始),程序编辑常用操作,Ctrl+KB,设置块头,Ctrl+KK,设置块尾,Ctrl+KC,块复制,Ctrl+KV,块移动,Ctrl+Y,删除一行,BACK,C语言的数据类型,2.2.1 标识符、常量和变量,1.标识符,:是给程序中的,实体,(,变量、函数名、数组名等,)命名的一个规则。,说明:,标识符必须以字母或下划线开头,由字母、数字或下划线组成的字符序列;用户不能采用C语言已有的32个关键字作为同名的用户标识符;标识符长度没限制;标识符区分大小写。,关键字:,见课本第190页附录,!,标识符示例:,sum,PI,aa,bb43,ch,a_53ff,_lab,average,aver都是合法的标识符。,4mm,ma,tt$a,_ch#a 均是不合法的标识符。,思考:,count、Count和COUNT是否为相同的标识符?main、float能否作为用户标识符?,2.常量,定义:在程序中,其值不能改变的量叫常量。,例:,12,3,12.3,-2.4,3.14159,a,说明:,常量可用宏定义命令#define来定义一个常量的标识,且一旦定义后,该标识将永久性代表此常量,常量标识符一般用大写字母表示。,符号常量的定义,定义格式:,#define,常量名标识符,数值,例:已知圆半径为2,求圆面积和周长。,main(),int r=2;,float s,l;,s=3.14*r*r;l=2*r*3.14;,printf(“”,);,用符号常量解决,#define PI 3.14,main(),int r;,float s,l;,r=2;,s=PI*r*r;,l=2*r*PI;,printf(s=%f l=%f,s,l);,变量,定义:在程序的运行过程中其值可以改变的量。,变量的定义格式:,类型符变量名,变量名;,例:int I,j,k;,float a,b,c;,变量的初始化:给变量赋初值。,变量的初始化(赋值),格式,变量名,数值表达式,;,变量赋值示例,#define MAX 20,main(),int a;,a=3;,MAX=8;,9=a;,printf(这样赋值行吗?);,说明与思考,说明:允许变量在定义的同时,进行初始化。,例:int a=3,b=4,c=5;,float x=2.3;,思考:,请问如下初始化语句行吗?,int a=b=c=7;,结束!,课下好好复习,课本至少要看三遍!,关系和逻辑运算及几种特殊的运算符,授课班级:,授课时间:,主讲:,把y=y%(4+x)转变为复合赋值表达式;,把表达式a/=b-3转换为一般赋值形式;,程序段:int a;float s=9;a=s%4;是否合法,若有错,将如何将其改正?,程序:#define PI 3,main(),int a;PI+;a=PI;printf(“a=%d”,a);,是否有错,若有错,错在哪里?,若:int a=4;char t=0;float d=9;则表达式:19*a-t/d的值类型是什么?,考查上次内容,关系运算和逻辑运算,关系运算,关系运算是指数据之间的关系(比如数间的大小等),关系运算的结果要么为真,要么为假,若为真,就用1表示,为假,就用0表示。,逻辑运算,逻辑是指事物之间的内在联系,它常用来组合若干个关系运算,来描述一定的条件。,关系运算,关系运算符,、=、=、!=,相同优先级,相同优先级,高,低,关系表达式,若a=3,b=2,c=1,则下列表达式的值,分别为多少?,(a b)=c,b+c b)=c,=1,1,b+c a,3,1,0,1,逻辑表达式,逻辑运算符,&(逻辑与)|(逻辑或)!(逻辑非),见书P29表2.6,逻辑运算符的优先级,逻辑运算的优先级,|&!,优先级,低,高,说明,&和|的优先级低于关系运算符,但!高于算术运算符;逻辑表达式中的逻辑量,若不是0,则认为该量为真;,见书29,说明部分,逻辑表达式,逻辑表达式,说明:,逻辑表达式的值是一个具有真假属性的逻辑量,若一个量为非0值,则认为是真,用1表示。,应用示例,判断某年year是否为闰年;(提示:某年若是闰年,则必须符合下列条件之一:.该年可以被4整除,但不能被100整除;.该年可以被400整除),y%4=0,y%100!=0,&,(,),y%400=0,(,),|,活 动,用C语言描述下列逻辑关系,1.x和y中有一个大于z;,2.x不能被y整除;,xz|yz 或(xz)|(yz),x%y!=0,关于逻辑运算的特殊说明,说明,在逻辑表达式的求解过程中,并不是所有的逻辑量、运算符都被执行,只是必须执行该逻辑量才能求出整个表达式的解时,才执行该运算量或运算符。,见书P29(2),示例,表达式1&表达式2,中,若表达式1为0,则计算机不再考虑表达式2的值的情况,也就是说表达式不再执行,。,活 动,1.若有程序段int a=5,b=9,s;s=(a-=5),则计算机执行该程序段后,s、a和b分别是多少?,2.,若a=9,b=10,c=1,d=7,x=8,y=15,则计算机执行了语句:m=(x=ab)后,m和y的值分别是多少?,s=0 a=0 b=9,m=0 y=15,逗号运算符和逗号表达式,逗号表达式,一般形式:,表达式,1,,表达式,2,,表达式,n,;,说明,逗号表达式的运算过程是:先算表达式,1,,再算表达式,2,,依次算到表达式,n,。整个逗号表达式的值是最后一个表达式的值。,见书P32,示例,b=(a=4,3*4,a*2)它的运算过程是:,a=4,3*4,a*2,b=a*2,条件运算符和条件表达式,条件表达式,一般形式:,表达式,1,?表达式,2,:表达式,3,;,示例:,将a,b两个变量中大者放到变量max中,max=ab?a:b,条件运算符的应用,说明,条件运算符的结合方向为从右往左,。,如:a b?a:b c?b:c 等价于,ab?a:(b c?b:c),示例,用条件运算符求三个数中的大者,编程实现,main(),int a,b,c,max;,scanf(,%d,%d,%d,max=a(bc?b:c)?a:(bc?b:c);,printf(a=%d,b=%d,c=%d,max=%dn,a,b,c,max);,作 业,书本作业,P35-P37:一、二题剩余部分,编程作业,P37:3、4,类型修饰符及输入输出的实现,授课班级:,授课时间:,任课教师:,DATE yyyy/M/d|2021/10/28,46,复习上次内容,1.找出哪些是合法的整型常量:045、0 x89g、90、078、0 x11f,2.找出哪些是非法的实型常量:0.45、0 x6.7、e9、0.7e0.2,3.找出哪些是合法的字符常量:9、056、x11,、&,4.说出float与double及字符型数据各占几个字节内存单元?,5.说出相关ASCII码值,6.说出字符串常量”how”占几个字节的内存单元?,DATE yyyy/M/d|2021/10/28,47,48,.基本类型修饰符,回顾(课本P15),基本的类型修饰符,signed(有符号),unsigned(无符号),long(长型),short(短型),类型修饰符修饰整型的情况(P19),说明1:基本类型修饰符主要用于修饰int型数据,DATE yyyy/M/d|2021/10/28,49,说明2,当类型修饰符独自使用时,则认为是修饰int型的。,因此,下面几种类型修饰符是等效的:,(见书P21),修 饰 符 等 效 于,signed signed int或int,unsigned unsigned int,long long int,short short int,说明3,当要表示某个整型常数为常整型时,可直接在该数后面加“L”。,DATE yyyy/M/d|2021/10/28,50,活动:分析下面程序运行结果,main(),int x1,y1;,long x2,y2;,x1=32767;y1=32769;,x2=32767L;y2=32769L;printf(x1=%d,x2=%ldny1=%d,y2=%ld,x1,x2,y1,y2);,DATE yyyy/M/d|2021/10/28,51,运行结果,x1=32767,x2=32767,y1=-32767,y2=32769,DATE yyyy/M/d|2021/10/28,52,2.输入输出实现及其函数应用,说明:,C语言中,输入输出是由函数库提供的,这些输入、输出函数包含在头文件stdio.h中;,在使用输入输出函数时,一般要在程序最前面加上#include,或#include ”stdio.h”,格式输出函数:printf(),格式输入函数:scanf(),不过,scanf()与printf()函数可不要!,DATE yyyy/M/d|2021/10/28,53,printf函数:格式输出函数,格式,printf(格式控制,输出表列),格式控制,格式说明:,由“%”和格式字符组成,普通字符:,需要原样输出的字符,用双撇号括起的字符组合,输出表列:由若干个待输出的数据变量组成,如:程序段int a=6;,printf(“a=%d”,a);,例:如程序段:int x=9,y=7,z=6;,printf(“x=%d ,y=%d,z=%d”,,x,y,z,);,DATE yyyy/M/d|2021/10/28,54,scanf函数:格式输入函数,格式,scanf(格式控制,地址表列),与printf函数的用法相同,地址项由&开头,与,格式符,呈一一对应,说明:,在scanf函数的“格式控制”中,除格式控制符,之外,其它字符在输入数据时,照输入;,若格式控制符之间没有其它字符间隔,则输入数据时,,可用“空格”或“回车”键作为间隔符。,例,主要格式控制符(见P21):,%d%c%s%f,DATE yyyy/M/d|2021/10/28,55,活 动,如下程序在执行过程中,若这样输入:,12,7 4.1 6.3,,试分析可能的结果?,main(),int a,b;,float c,d;,printf(请输入变量的值:);,scanf(%d%d,scanf(%f,%f,printf(%d%d%f%f,a,b,c,d);,DATE yyyy/M/d|2021/10/28,56,3.字符输入输出函数,putchar函数:字符输出函数,格式:putchar(字符变量/字符常量),getchar函数:字符输入函数,格式:getchar(),getchar和putchar函数每次只能,处理一个字符,而且getchar函,数没有参数。,说明:,DATE yyyy/M/d|2021/10/28,57,活 动,编一个小程序,应用字符输入输出函数实现一个字符的输入和输出,#include“stdio.h”,main(),char c;,c=getchar();,putchar(c);,putchar(getchar();,DATE yyyy/M/d|2021/10/28,58,作业,P35:,P37:,DATE yyyy/M/d|2021/10/28,59,2.3基本数据类型,授课班级:,授课时间:,任课教师:,复习上次内容,Free Template from,61,学习效果测评,找出下面哪些不是合法用户标识符,按要求写出符号常量的定义,将9.78定义成符号常量r,观察下面的变量赋值是否正确?,int a=b=c=7;,#ab、-aa、INT、_7a,Free Template from,62,基本数据类型,整型数据(int:integer),单精度:(float),双精度:(double),字符型数据(char:character),字符串常量,实型数据,Free Template from,63,1.整型数据,整型常量,整型变量,整型变量所占的空间,整型变量在内存中占2个字节单元,16位的内存空间,整型变量的定义,格式,类型符:int,定义格式:,int 变量名表;,例:int a,b;,整型数据的输入,输出格式,格式符:%d,示例:,scanf(“%d”,,printf(“%d”,a);,Free Template from,64,2.实型数据,实型常量,实型变量,实型变量所占的空间,双精度8个字节,单精度4个字节,32位内存空间,实型变量的定义,类型符:float double,定义格式,float a,b;,double c,d;,实型数据的输入,输出格式,格式符:%f,示例:,scanf(“%f”,,scanf(“%f”,,printf(“%f”,c);,Free Template from,65,讨论,分析下面程序中是否有错误,若有,在哪里?,main(),double x,y;,float z;,scanf(“%d%d”,,z=x+y;,printf(“%f”,z);,格式控制符有错!应该是:%f,类型不一致!,Free Template from,66,3.字符型数据,字符常量,字符变量,字符型数据所占的空间,占1个字节的单元,8位的内存空间,字符变量的定义,类型符:char,定义格式,char a,b;,字符变量的输入输出,scanf(“%c”,,printf(“%c”,a);,字符型数据的存,储格式:,以ASCII码值的形,式,ASCII码,见P189,附录,Free Template from,67,转义字符表,Free Template from,68,讨论,main(),char c1,c2;,int a;,c1=a,c2=98;,a=a;,printf(c1=%c c2=%c a=%d ,c1,c2,a);,分析该程序是否有问题,Free Template from,69,4.字符串常量,字符串常量,:用双撇号括起的若干字符序列,例:”china”、”am$”等,字符串的存储,例:,”china”的存储情况:,c,h,i,n,a,0,99,104,105,110,97,0,C语言没有专门的字符串变量,Free Template from,70,5.作业,课本P35,一、选择题:2-6,是该做点事了!,Free Template from,71,基本运算,主讲:,授课班级:,授课时间:,活动:复习上次内容,1.说出signed int类型数据的表示范围,2.说出unsigned int类型数据的表示范围,3.说出long int类型数据在内存中占几个字节?,4.若有“scanf(”a=%d,%d”,”,试问如何输入正确数据?,5.若有字符型变量C,请用字符输入输出函数实现其输入和输出。,1.基本运算,算术运算符,操作符 作 用,+加法运算,-减法运算,*乘法运算,/除法运算,%求模(求余)运算,见书P24,表2-4,说明,运算符“/”参加运算时,若其左右两边的运算数中有一个为实数类型,则结果为实数,否则,结果取整;,当两运算数同时为整数时,其运算结果自动取整,运算符“%”要求其运算数必须为整数;,算术表达式:用算术运算符及括号将数据对象连接起来的式子,例:,a*d/c-2.7+2,讨论:,表达式:19+2-4中,计算机是先计算19+2,还是,先计算2-4?而19+2/4 呢?,这牵涉到“结合性”,与“,优先级”,结合性:一般是左结合(自左向右运算),优先级:运算的优先顺序(见P191),()负号 *、/、%+、-,低,高,见书P24,2.赋值运算符及赋值表达式,赋值运算,赋值运算符:=,赋值表达式:,格式:变量名=表达式;,如:int a=3,b=2,c;,则:c=a+b;b=b+a;等,复合赋值,int a=0;,a=a+20;,int a=0;,a+=20;,活 动,1.将下面赋值表达式转换为复合赋值表达式,a=a-10/x;,y=y*(a+8);,a-=10/x;,y*=a+8;,2.将下面复合赋值形式转变为一般赋值形式,x/=y-3;,z+=m%2;,x=x/(y-3);,z=z+m%2;,自增和自减运算,两个运算符均为单,目运算符,且优先级在算术运算中最高,增量运算符:+,减量运算符:-,应用情况,见书P26表2.5,说明:见书P26,表2.5下部分,活 动,分析下面语句执行后x与y的值?,x=10;,y=+x;,x=10;,y=x+;,x=10;,y=-x;,x=10;,y=x-;,x=11 y=11,x=11 y=10,x=9 y=9,x=9 y=10,分析:9+,是什么意,思?,3.表达式中的类型转换,自动类型转换,说明:不同类型数据参加运算时,表示范围小的数据类型自动向表示范围宽的类型转换。,转换情况如下:,见书P31,强制类型转换,一般形式:,(类型)表达式,活动:分析下面程序,main(),int a=2,b=7,c;,float x=15.5,y,z;,y=a/b;,z=(float)a/b;,c=(int)x%a;,printf(y=%f z=%f c=%d x=%f,y,z,c,x);,作 业,书中P37,二题的相关内容,书面作业:,实践作业:,P34实训,第3,章 程序设计初步,授课班级:,授课时间:,主讲:,1)设有语句int a=3;则执行语句a+=a-=a*a后,变量a的值是(),(A)3 (B)0 (C)9 (D)12,2)判断char型变量c1是否为小写字母的正确表达式是(),A、a=a)&(c1=a&c1b?97:65;,后s的值是多少?,5)以下程序的输出结果是(),main(),int a=3;,printf(%dn,(a+=a-=a*a);,A、-6 B、12 C、0 D、-12,技能考核,顺序结构,A,B,a,b,选择结构,P,A,B,a,b,循环结构,P,A,a,b,3.1 三种基本结构,讨论三种结构的特点,三种基本程序结构的特点,(1)程序只有一个入口;,(2)程序只有一个出口;,(3)程序结构内的每一部分都有机会被执行;,(4)程序结构内不存在死循环。,见书P40,复合语句,复合语句:用 括起来的若干条语句,举例说明:,一个国家是联合国常任理事国,则他将尽许多义务:参与国际维和行动、参与联合国会务、向联合国安理会缴年费等。,转变成类C格式,main(),.,if(一个国家是联合国常任理事国),参与国际维和行动;,参与联合国会务;,向联合国安理会缴年费等;,.,main(),int a,b,t;,printf(“Input a,b:”);,scanf(“%d%d”,printf(“a=%d,b=%dn”,a,b);,t=a;a=b;b=t;/*,复合语句,*/,printf(“a=%d,b=%d”,a,b);,分析下面程序,3.2 if语句,if语句,格式:if(表达式)语句,if(xy)printf(”%d”,x);,例:输入三个数,要求按由小到大的顺序输出。,分析:若输入的三个数分别存储在变量a、b、c中,我们设想经过一定的处理后,a中存最小的,c中存最大的,b存中间数。,如果 ab 为真,a b,交换,如果 ac 为真,a c,交换,如果 bc 为真,b c,交换,if应用举例,main(),float a,b,c,t;,scanf(“%f,%f,%f“,if(a b),t=a;a=b;b=t;,if(a c),t=a;a=c;c=t;,if (b c),t=b;b=c;c=t;,printf(“%f,%f,%f“,a,b,c);,if-else结构语句,if-else结构语句,格式:,if (条件),S1,else,S2,是一条语句,是一条语句,说明:,如果表达式的值为真,则执行语句1,否则执行语句2。,见书P47,活 动,用if-else完成如下问题:,输入两个整数,输出其中的大数(用if-else语句判别a,b的大小,若a大,则输出a,否则输出b)。,main(),int a,b,max;,scanf(”%d%d”,,if(ab),max=a;,else,max=b;,printf(”max=%d”,max);,考虑用条件表,达式如何实现?,max=a b?a:b;,if 语句的嵌套,格式:,if (,条件1),if (,条件2),语句1,else,语句2,else,if(,条件3),语句3,else,语句4,内嵌if-else语句,内嵌if-else语句,示 例,y=,-1(x0),main(),int x,y;,scanf(“%d“,if(x =0),if (x 0)y=1;,else y=0;,else y=-1;,printf(”x=%dty=%d”,x,y);,作 业,书上作业,P54:一;二:1、2,本上作业,P56 1-3,switch多路开关选择语句,C语言格式:,switch(表达式),case 常量表达式1:语句1,case 常量表达式2:语句2,case 常量表达式n:语句n,default :语句n+1,;break;,;break;,;break;,示例1,输入一成绩等级,输出其所在相应的百分制成绩段,其中:,A:85100;B:7084;C:6069;D:60,#include stdio.h,main(),char grade;,grade=getchar();,switch(grade),case A:printf(85100n);,case B:printf(7084n);,case C:printf(6069n);,case D:printf(60n);,default:printf(errorn);,break;,break;,break;,break;,活动:思考如何实现下题,运输公司有如下约定:运费的折扣按路程(S)而定,具体如下:S250没有折扣;250S500 2%折扣;500 S,1000折扣为5%;1000 S2000折扣为8%,2000 S折扣为10%,试输入一路程,求其相应的折扣数,分析开关结构:其中S为整型,d为实型.,switch(s/250),case 0:d=0;break;,case 1:d=2.0/100;break;,case 2:,case 3:d=5.0/100;break;,case 4:,case 5:,case 6:,case 7:d=8.0/100;break;,default:d=10.0/100;break;,作业,书上作业,P55 二:3,本上作业,P56 :4(,用switch实现),break,与continue语句,授课班级:,授课时间:,主讲:,活动:技能考核,分析运行结果,main(),int x=3;,doprintf(”%3d”,x-=2);,while(!(-x);,main(),int I=0,k=0,s=0;,while(k=1,I+),printf(”%dn”,I);,break与continue的功能,分析:,while(),break;,while(),continue;,见书P65,下面!,活动:分析程序段的功能,for(r=1;r 100)break;,最初程序功能分析,输出半径分别为110的圆的面积,添加break后分析,输出半径分别为15的圆的面积,应用示例1,把100 200之间不能被3整除的数输出。,main(),for(n=100;n=200;n+),int n;,if(n%3!=0),printf(”%dt”,n);,main(),for(n=100;n=200;n+),int n;,if(n%3=0),co
展开阅读全文