简单的C程序设计.ppt
最简单的最简单的C程序设计程序设计顺序程序设计顺序程序设计第第3章章3.5 3.5 字符数据的输入与输出字符数据的输入与输出字符数据的输入与输出字符数据的输入与输出3.6 3.6 简单的格式输入与输出简单的格式输入与输出简单的格式输入与输出简单的格式输入与输出3.7 3.7 复杂的输入输出格式控制复杂的输入输出格式控制复杂的输入输出格式控制复杂的输入输出格式控制3.8 3.8 顺序结构程序设计举例顺序结构程序设计举例顺序结构程序设计举例顺序结构程序设计举例本章小结本章小结本章小结本章小结3.1 3.1 程序的三种基本结构程序的三种基本结构程序的三种基本结构程序的三种基本结构 3.2 C3.2 C语句概述语句概述语句概述语句概述3.3 3.3 赋值表达式和赋值语句赋值表达式和赋值语句赋值表达式和赋值语句赋值表达式和赋值语句3.4 3.4 数据输入输出的概念及在数据输入输出的概念及在数据输入输出的概念及在数据输入输出的概念及在C C语言中的实现语言中的实现语言中的实现语言中的实现传统流程图传统流程图传统流程图传统流程图教学进程教学进程教学进程教学进程A AB B3.13.1 程序的三种基本结构程序的三种基本结构程序的三种基本结构程序的三种基本结构指令指令 一个程序包含一系列的指令,每个指令使计算机完成一个程序包含一系列的指令,每个指令使计算机完成一种操作。而程序中的指令不是任意书写的。一种操作。而程序中的指令不是任意书写的。1966年,年,Bohra和和Jacopini提出了提出了3种基本结构。种基本结构。顺序结构顺序结构各操作是按先后顺序执行的。是最简单的一种基本结构。各操作是按先后顺序执行的。是最简单的一种基本结构。其中其中A和和B两个框是顺序执两个框是顺序执行的。即在完成行的。即在完成A框所指定框所指定的操作后,必然接着执行的操作后,必然接着执行B框所指定的操作。框所指定的操作。传统流程图传统流程图传统流程图传统流程图教学进程教学进程教学进程教学进程3.13.1 程序的三种基本结构程序的三种基本结构程序的三种基本结构程序的三种基本结构 选择结构选择结构又称分支结构。根据是否满足给定条件而从两组操作中选择又称分支结构。根据是否满足给定条件而从两组操作中选择执行一种操作。虚线框内是一个选择结构。执行一种操作。虚线框内是一个选择结构。P PA AB B成立成立成立成立不成立不成立不成立不成立无论无论P条件是否成立,只能执行条件是否成立,只能执行A操作或操作或B操作中的一个操作中的一个;无论执行完哪一个分支后,就结无论执行完哪一个分支后,就结束了。束了。两个操作可以有一个是空操作,两个操作可以有一个是空操作,即不执行任何操作,形如下图即不执行任何操作,形如下图:P PA A成立成立成立成立不成立不成立不成立不成立P PB B成立成立成立成立不成立不成立不成立不成立入口入口出口出口传统流程图传统流程图传统流程图传统流程图教学进程教学进程教学进程教学进程3.13.1 程序的三种基本结构程序的三种基本结构程序的三种基本结构程序的三种基本结构 循环结构循环结构又称重复结构,即在一定条件下,反复执行某一部分的操作。又称重复结构,即在一定条件下,反复执行某一部分的操作。有两种类型:有两种类型:执行过程:执行过程:当给定条件当给定条件P成立时,执行成立时,执行S操作,操作,然后再判断然后再判断P条件是否成立,如果仍成条件是否成立,如果仍成立,再执行立,再执行S操作,然后再判断操作,然后再判断,如,如此反复,直到某一次此反复,直到某一次P条件不成立为止,条件不成立为止,此时不再执行此时不再执行S,结束循环。,结束循环。特点:特点:先判断,后执行,先判断,后执行,S有可能一次也有可能一次也不执行。不执行。P PS SF FT T当型循环当型循环当型循环当型循环入口入口出口出口传统流程图传统流程图传统流程图传统流程图教学进程教学进程教学进程教学进程3.13.1 程序的三种基本结构程序的三种基本结构程序的三种基本结构程序的三种基本结构 循环结构循环结构执行过程:执行过程:执行执行S操作,然后判断条件操作,然后判断条件P是否成是否成立,如果成立,再执行立,如果成立,再执行S操作,然后再操作,然后再判断,判断,.,如此反复,直到某一次,如此反复,直到某一次P条件不成立不再执行条件不成立不再执行S,结束循环。,结束循环。特点:特点:先执行,后判断,先执行,后判断,S最少要执行一最少要执行一次。次。S SP PF FT T直到型循环直到型循环直到型循环直到型循环入口入口出口出口传统流程图传统流程图传统流程图传统流程图教学进程教学进程教学进程教学进程传统流程图有以下几个主要缺点:传统流程图有以下几个主要缺点:传统流程图有以下几个主要缺点:传统流程图有以下几个主要缺点:传统流程图本质上不是逐步求精的好工具,它会使程序员传统流程图本质上不是逐步求精的好工具,它会使程序员传统流程图本质上不是逐步求精的好工具,它会使程序员传统流程图本质上不是逐步求精的好工具,它会使程序员 过早地考虑程序的控制流程,而不去考虑程序的全局结构。过早地考虑程序的控制流程,而不去考虑程序的全局结构。过早地考虑程序的控制流程,而不去考虑程序的全局结构。过早地考虑程序的控制流程,而不去考虑程序的全局结构。传统流程图不易表示层次结构。传统流程图不易表示层次结构。传统流程图不易表示层次结构。传统流程图不易表示层次结构。传统流程图不易表示数据结构和模块调用关系等重要信息。传统流程图不易表示数据结构和模块调用关系等重要信息。传统流程图不易表示数据结构和模块调用关系等重要信息。传统流程图不易表示数据结构和模块调用关系等重要信息。传统流程图中用箭头代表控制流,因此,程序员不受任何传统流程图中用箭头代表控制流,因此,程序员不受任何传统流程图中用箭头代表控制流,因此,程序员不受任何传统流程图中用箭头代表控制流,因此,程序员不受任何 约束,可以完全不顾结构程序设计的思想,随意进行转移约束,可以完全不顾结构程序设计的思想,随意进行转移约束,可以完全不顾结构程序设计的思想,随意进行转移约束,可以完全不顾结构程序设计的思想,随意进行转移 控制。控制。控制。控制。C C语句概述语句概述语句概述语句概述3.23.2 C C程序是以语句为基本单位的。程序是以语句为基本单位的。程序是以语句为基本单位的。程序是以语句为基本单位的。教学进程教学进程教学进程教学进程 C C语言的语句用来向计算机发出操作指令。语言的语句用来向计算机发出操作指令。语言的语句用来向计算机发出操作指令。语言的语句用来向计算机发出操作指令。一个语句经编译后产生若干条机器指令。一个语句经编译后产生若干条机器指令。一个语句经编译后产生若干条机器指令。一个语句经编译后产生若干条机器指令。一个函数的执行部分是由若干条语句组成的。一个函数的执行部分是由若干条语句组成的。一个函数的执行部分是由若干条语句组成的。一个函数的执行部分是由若干条语句组成的。C C语句都是用来完成一定的操作任务的。语句都是用来完成一定的操作任务的。语句都是用来完成一定的操作任务的。语句都是用来完成一定的操作任务的。C程序结构程序结构C程序程序函数首部函数首部函数体函数体数据声明数据声明执行语句执行语句源程序文件源程序文件1源程序文件源程序文件2.源程序文件源程序文件n预处理命令预处理命令数据声明数据声明函数函数1函数函数2C C语句概述语句概述语句概述语句概述3.23.2教学进程教学进程教学进程教学进程C语句的分类语句的分类 控制语句控制语句 用于完成一定的控制功能用于完成一定的控制功能 if()else for()while()do while()continue break switch()return goto 标号标号 说明:说明:“()”中是一个判断条件,中是一个判断条件,“”表示内嵌的语句。表示内嵌的语句。C C语句概述语句概述语句概述语句概述3.23.2教学进程教学进程教学进程教学进程C语句的分类语句的分类 函数调用语句函数调用语句 由一个函数调用加一个分号构成,例如:由一个函数调用加一个分号构成,例如:printf(“This is a C statement.”);表达式语句表达式语句 由一个表达式加一个分号构成,最典型的是由一个表达式加一个分号构成,最典型的是赋值语句,例如:赋值语句,例如:a=3 是一个表达式是一个表达式 a=3;是一个表达式语句是一个表达式语句C C语句概述语句概述语句概述语句概述3.23.2教学进程教学进程教学进程教学进程C语句的分类语句的分类 复合语句复合语句 用用“”括起来的若干个语句,例如:括起来的若干个语句,例如:z=x+y;t=z/100;printf(“%f”,t);空语句空语句 只有一个分号,什么都不做,例如:只有一个分号,什么都不做,例如:;C语言允许一行写几个语句,也允许一个语句拆开写在几行上。语言允许一行写几个语句,也允许一个语句拆开写在几行上。一般形式为一般形式为一般形式为一般形式为 :说明部分;语句部分;说明部分;语句部分;说明部分;语句部分;说明部分;语句部分;C C语句概述语句概述语句概述语句概述3.23.2教学进程教学进程教学进程教学进程C语句的分类语句的分类 复合语句复合语句 用用“”括起来的若干个语句,例如:括起来的若干个语句,例如:z=x+y;t=z/100;printf(“%f”,t);空语句空语句 只有一个分号,什么都不做,例如:只有一个分号,什么都不做,例如:;C语言允许一行写几个语句,也允许一个语句拆开写在几行上。语言允许一行写几个语句,也允许一个语句拆开写在几行上。一般形式为一般形式为一般形式为一般形式为 :说明部分;语句部分;说明部分;语句部分;说明部分;语句部分;说明部分;语句部分;赋值表达式和赋值语句赋值表达式和赋值语句赋值表达式和赋值语句赋值表达式和赋值语句3.33.3教学进程教学进程教学进程教学进程3.3.1 赋值表达式赋值表达式1.1.赋值运算符赋值运算符赋值运算符赋值运算符 赋值运算符为赋值运算符为赋值运算符为赋值运算符为“=”“=”。2.2.赋值表达式赋值表达式赋值表达式赋值表达式 赋值表达式为赋值表达式为赋值表达式为赋值表达式为 标识符标识符标识符标识符=表达式表达式表达式表达式功能是:首先计算赋值运算符右边表达式的值,然后将计算结果赋给功能是:首先计算赋值运算符右边表达式的值,然后将计算结果赋给功能是:首先计算赋值运算符右边表达式的值,然后将计算结果赋给功能是:首先计算赋值运算符右边表达式的值,然后将计算结果赋给赋值运算符左边的标识符。赋值运算符左边的标识符。赋值运算符左边的标识符。赋值运算符左边的标识符。说说说说 明:赋值运算符左侧的标识符称为左值,可以是变量,不能是表明:赋值运算符左侧的标识符称为左值,可以是变量,不能是表明:赋值运算符左侧的标识符称为左值,可以是变量,不能是表明:赋值运算符左侧的标识符称为左值,可以是变量,不能是表达式、常量;右侧的表达式称为右值。左值可以作为右值,达式、常量;右侧的表达式称为右值。左值可以作为右值,达式、常量;右侧的表达式称为右值。左值可以作为右值,达式、常量;右侧的表达式称为右值。左值可以作为右值,反之则不一定行。反之则不一定行。反之则不一定行。反之则不一定行。赋值表达式可以出现在另一个表达式中参与运算。赋值表达式可以出现在另一个表达式中参与运算。赋值表达式可以出现在另一个表达式中参与运算。赋值表达式可以出现在另一个表达式中参与运算。赋值表达式和赋值语句赋值表达式和赋值语句赋值表达式和赋值语句赋值表达式和赋值语句3.33.3教学进程教学进程教学进程教学进程3.3.1 赋值表达式赋值表达式 .a=3 .a=3 把常量把常量把常量把常量3 3赋给变量赋给变量赋给变量赋给变量a a为值。为值。为值。为值。.假设假设假设假设x x与与与与y y都是已定义的整型变量,则表达式都是已定义的整型变量,则表达式都是已定义的整型变量,则表达式都是已定义的整型变量,则表达式 x=y=4+5 x=y=4+5 等价与等价与等价与等价与 x=(y=4+5)x=(y=4+5)执行过程是:首先计算赋值表达式执行过程是:首先计算赋值表达式执行过程是:首先计算赋值表达式执行过程是:首先计算赋值表达式(y=4+5)(y=4+5)的值,即计算的值,即计算的值,即计算的值,即计算4+54+5的值为的值为的值为的值为9 9,并将计算结果赋给变量,并将计算结果赋给变量,并将计算结果赋给变量,并将计算结果赋给变量y y,而赋,而赋,而赋,而赋值表达式值表达式值表达式值表达式(y=4+5)(y=4+5)的值也为的值也为的值也为的值也为9 9;然后再将赋值表达式然后再将赋值表达式然后再将赋值表达式然后再将赋值表达式(y=4+5)(y=4+5)的值(即的值(即的值(即的值(即9 9)赋)赋)赋)赋给变量给变量给变量给变量x x。因此,通过这个赋值表达式将。因此,通过这个赋值表达式将。因此,通过这个赋值表达式将。因此,通过这个赋值表达式将4+54+5的计算结果同时赋给了变量的计算结果同时赋给了变量的计算结果同时赋给了变量的计算结果同时赋给了变量x x与与与与y y。例如例如例如例如赋值表达式出赋值表达式出现在另一个表现在另一个表达式中。达式中。赋值表达式和赋值语句赋值表达式和赋值语句赋值表达式和赋值语句赋值表达式和赋值语句3.33.3教学进程教学进程教学进程教学进程3.3.1 赋值表达式赋值表达式 .b=a;/*b.b=a;/*b是左值,得到是左值,得到是左值,得到是左值,得到a a的值的值的值的值*/*/c=b;/*b c=b;/*b是右值,将其值赋给是右值,将其值赋给是右值,将其值赋给是右值,将其值赋给c*/c*/.a=(b=5).a=(b=5)等价于等价于等价于等价于 a=b=5 a=b=5,因为赋值,因为赋值,因为赋值,因为赋值运算符按照运算符按照运算符按照运算符按照“自右至左自右至左自右至左自右至左”的顺序结合的顺序结合的顺序结合的顺序结合.a=b=c=5 .a=b=c=5 赋值表达式的值为赋值表达式的值为赋值表达式的值为赋值表达式的值为5 5,a a、b b、c c的值都为的值都为的值都为的值都为5 5 a=5+(c=6)a=5+(c=6)赋值表达式的值为赋值表达式的值为赋值表达式的值为赋值表达式的值为1111,a a的值为的值为的值为的值为1111、c c的值为的值为的值为的值为6 6 a=(b=4)+(c=6)a=(b=4)+(c=6)表达式的值为表达式的值为表达式的值为表达式的值为1010,a a是是是是1010、b b是是是是4 4、c c是是是是6 6 a=(b=10)/(c=2)a=(b=10)/(c=2)表达式的值为表达式的值为表达式的值为表达式的值为5 5,a a是是是是5 5、b b是是是是10 10、c c是是是是2 2例如例如例如例如赋值表达式和赋值语句赋值表达式和赋值语句赋值表达式和赋值语句赋值表达式和赋值语句3.33.3教学进程教学进程教学进程教学进程3.3.1 赋值表达式赋值表达式 .(a=3*5)=4*3 .(a=3*5)=4*3 先算括号先算括号先算括号先算括号a a得到得到得到得到1515,再算,再算,再算,再算4*3 4*3,a a又得到又得到又得到又得到1212,因此整个表达式的值是,因此整个表达式的值是,因此整个表达式的值是,因此整个表达式的值是1212 若写成若写成若写成若写成 a=3*5=4*3 a=3*5=4*3则出错,因为则出错,因为则出错,因为则出错,因为3*53*5不能作为左值不能作为左值不能作为左值不能作为左值例如例如例如例如计算计算计算计算a-=a*a a-=a*a a=a-a*a,得到a=12-12*12=-132计算计算计算计算a+=a a+=a a=a+(-132),得到a=-132+(-132)=-264(7).赋值表达式可以出现在其它语句中,如:赋值表达式可以出现在其它语句中,如:赋值表达式可以出现在其它语句中,如:赋值表达式可以出现在其它语句中,如:printf(“%d”,printf(“%d”,a=ba=b););注:在一个语句中完成了赋值和输出两个操作。注:在一个语句中完成了赋值和输出两个操作。注:在一个语句中完成了赋值和输出两个操作。注:在一个语句中完成了赋值和输出两个操作。.计算计算计算计算 a+=a-=a*a a+=a-=a*a的值,设的值,设的值,设的值,设a a的初值为的初值为的初值为的初值为1212。a+=3等价于等价于a=a+3a-=ba=a-bx*=y+8x=x*(y+8)x/=yx=x/yx%=3-yx=x%(3-y)教学进程教学进程教学进程教学进程3.3.1 赋值表达式赋值表达式3.3.复合的赋值运算符复合的赋值运算符复合的赋值运算符复合的赋值运算符 在赋值运算符在赋值运算符在赋值运算符在赋值运算符“=”“=”前加上其它二目运算符构成,如:前加上其它二目运算符构成,如:前加上其它二目运算符构成,如:前加上其它二目运算符构成,如:“+=”“+=”。4.4.复合的赋值表达式复合的赋值表达式复合的赋值表达式复合的赋值表达式 复合的赋值表达式为复合的赋值表达式为复合的赋值表达式为复合的赋值表达式为 变量名变量名变量名变量名 复合的赋值运算符复合的赋值运算符复合的赋值运算符复合的赋值运算符 表达式表达式表达式表达式C C语言中的复合赋值运算符:语言中的复合赋值运算符:语言中的复合赋值运算符:语言中的复合赋值运算符:+=+=、-=-=、*=*=、/=/=、%=%=凡是需要两个运凡是需要两个运凡是需要两个运凡是需要两个运算对象的运算符算对象的运算符算对象的运算符算对象的运算符可简化程序,提高编译效率。可简化程序,提高编译效率。可简化程序,提高编译效率。可简化程序,提高编译效率。计算计算计算计算a-=a*a a-=a*a a=a-a*a,得到a=12-12*12=-132计算计算计算计算a+=a a+=a a=a+(-132),得到a=-132+(-132)=-264(8 8).计算计算计算计算 a+=a-=a*a a+=a-=a*a的值,设的值,设的值,设的值,设a a的初值为的初值为的初值为的初值为1212。赋值运算赋值运算赋值运算赋值运算教学进程教学进程教学进程教学进程 1 1)在)在)在)在C C语言中,语言中,语言中,语言中,“=”“=”为赋值运算符,而不是等号。为赋值运算符,而不是等号。为赋值运算符,而不是等号。为赋值运算符,而不是等号。2 2)赋值运算符)赋值运算符)赋值运算符)赋值运算符=左边必须是变量,不能是表达式。左边必须是变量,不能是表达式。左边必须是变量,不能是表达式。左边必须是变量,不能是表达式。3 3)赋值运算符)赋值运算符)赋值运算符)赋值运算符=两端的类型不一致时,系统将自动进行类型转换。两端的类型不一致时,系统将自动进行类型转换。两端的类型不一致时,系统将自动进行类型转换。两端的类型不一致时,系统将自动进行类型转换。说明说明说明说明3.3.2 3.3.2 赋值过程中的类型转换赋值过程中的类型转换赋值过程中的类型转换赋值过程中的类型转换教学进程教学进程教学进程教学进程 实型数据赋给整型变量实型数据赋给整型变量实型数据赋给整型变量实型数据赋给整型变量 舍去小数,将整数部分赋给整型变量舍去小数,将整数部分赋给整型变量舍去小数,将整数部分赋给整型变量舍去小数,将整数部分赋给整型变量 若赋值运算符两侧的类型一致,就直接进行赋值,如:若赋值运算符两侧的类型一致,就直接进行赋值,如:若赋值运算符两侧的类型一致,就直接进行赋值,如:若赋值运算符两侧的类型一致,就直接进行赋值,如:int i;i=6;int i;i=6;若赋值运算符两侧的类型不一致,就要由系统自动进行类若赋值运算符两侧的类型不一致,就要由系统自动进行类若赋值运算符两侧的类型不一致,就要由系统自动进行类若赋值运算符两侧的类型不一致,就要由系统自动进行类型转换。转换规则是:型转换。转换规则是:型转换。转换规则是:型转换。转换规则是:整型数赋给实型变量整型数赋给实型变量整型数赋给实型变量整型数赋给实型变量 数值不变,但以浮点数形式存储到变量中数值不变,但以浮点数形式存储到变量中数值不变,但以浮点数形式存储到变量中数值不变,但以浮点数形式存储到变量中 双精度数赋给单精度变量双精度数赋给单精度变量双精度数赋给单精度变量双精度数赋给单精度变量 截取截取截取截取7 7位有效数字,但应注意数值会溢出位有效数字,但应注意数值会溢出位有效数字,但应注意数值会溢出位有效数字,但应注意数值会溢出 单精度数赋给双精度变量单精度数赋给双精度变量单精度数赋给双精度变量单精度数赋给双精度变量 数值不变,有效位数扩展到数值不变,有效位数扩展到数值不变,有效位数扩展到数值不变,有效位数扩展到1616位位位位 占字节多的整数赋给整型占字节多的整数赋给整型占字节多的整数赋给整型占字节多的整数赋给整型/字符型变量,只将低字节赋给变量字符型变量,只将低字节赋给变量字符型变量,只将低字节赋给变量字符型变量,只将低字节赋给变量c=28900000001 00100001c33=001000013.3.2 3.3.2 赋值过程中的类型转换赋值过程中的类型转换赋值过程中的类型转换赋值过程中的类型转换教学进程教学进程教学进程教学进程 实型数据赋给整型变量实型数据赋给整型变量实型数据赋给整型变量实型数据赋给整型变量 舍去小数,将整数部分赋给整型变量舍去小数,将整数部分赋给整型变量舍去小数,将整数部分赋给整型变量舍去小数,将整数部分赋给整型变量 若赋值运算符两侧的类型一致,就直接进行赋值,如:若赋值运算符两侧的类型一致,就直接进行赋值,如:若赋值运算符两侧的类型一致,就直接进行赋值,如:若赋值运算符两侧的类型一致,就直接进行赋值,如:int i;i=6;int i;i=6;若赋值运算符两侧的类型不一致,就要由系统自动进行类若赋值运算符两侧的类型不一致,就要由系统自动进行类若赋值运算符两侧的类型不一致,就要由系统自动进行类若赋值运算符两侧的类型不一致,就要由系统自动进行类型转换。转换规则是:型转换。转换规则是:型转换。转换规则是:型转换。转换规则是:整型数赋给实型变量整型数赋给实型变量整型数赋给实型变量整型数赋给实型变量 数值不变,但以浮点数形式存储到变量中数值不变,但以浮点数形式存储到变量中数值不变,但以浮点数形式存储到变量中数值不变,但以浮点数形式存储到变量中 双精度数赋给单精度变量双精度数赋给单精度变量双精度数赋给单精度变量双精度数赋给单精度变量 截取截取截取截取7 7位有效数字,但应注意数值会溢出位有效数字,但应注意数值会溢出位有效数字,但应注意数值会溢出位有效数字,但应注意数值会溢出 单精度数赋给双精度变量单精度数赋给双精度变量单精度数赋给双精度变量单精度数赋给双精度变量 数值不变,有效位数扩展到数值不变,有效位数扩展到数值不变,有效位数扩展到数值不变,有效位数扩展到1616位位位位 占字节多的整数赋给整型占字节多的整数赋给整型占字节多的整数赋给整型占字节多的整数赋给整型/字符型变量,只将低字节赋给变量字符型变量,只将低字节赋给变量字符型变量,只将低字节赋给变量字符型变量,只将低字节赋给变量 有符号整数有符号整数有符号整数有符号整数赋给长度相同的无符号整型变量,按字节原样赋给变量赋给长度相同的无符号整型变量,按字节原样赋给变量赋给长度相同的无符号整型变量,按字节原样赋给变量赋给长度相同的无符号整型变量,按字节原样赋给变量 无符号整数无符号整数无符号整数无符号整数赋给长度相同的有符号整型变量,应注意不要超出范围赋给长度相同的有符号整型变量,应注意不要超出范围赋给长度相同的有符号整型变量,应注意不要超出范围赋给长度相同的有符号整型变量,应注意不要超出范围unsigned a;int b=-1;a=b;b1111111111111111a11111111111111113.3.2 3.3.2 赋值过程中的类型转换赋值过程中的类型转换赋值过程中的类型转换赋值过程中的类型转换教学进程教学进程教学进程教学进程 实型数据赋给整型变量实型数据赋给整型变量实型数据赋给整型变量实型数据赋给整型变量 舍去小数,将整数部分赋给整型变量舍去小数,将整数部分赋给整型变量舍去小数,将整数部分赋给整型变量舍去小数,将整数部分赋给整型变量 若赋值运算符两侧的类型一致,就直接进行赋值,如:若赋值运算符两侧的类型一致,就直接进行赋值,如:若赋值运算符两侧的类型一致,就直接进行赋值,如:若赋值运算符两侧的类型一致,就直接进行赋值,如:int i;i=6;int i;i=6;若赋值运算符两侧的类型不一致,就要由系统自动进行类若赋值运算符两侧的类型不一致,就要由系统自动进行类若赋值运算符两侧的类型不一致,就要由系统自动进行类若赋值运算符两侧的类型不一致,就要由系统自动进行类型转换。转换规则是:型转换。转换规则是:型转换。转换规则是:型转换。转换规则是:整型数赋给实型变量整型数赋给实型变量整型数赋给实型变量整型数赋给实型变量 数值不变,但以浮点数形式存储到变量中数值不变,但以浮点数形式存储到变量中数值不变,但以浮点数形式存储到变量中数值不变,但以浮点数形式存储到变量中 双精度数赋给单精度变量双精度数赋给单精度变量双精度数赋给单精度变量双精度数赋给单精度变量 截取截取截取截取7 7位有效数字,但应注意数值会溢出位有效数字,但应注意数值会溢出位有效数字,但应注意数值会溢出位有效数字,但应注意数值会溢出 单精度数赋给双精度变量单精度数赋给双精度变量单精度数赋给双精度变量单精度数赋给双精度变量 数值不变,有效位数扩展到数值不变,有效位数扩展到数值不变,有效位数扩展到数值不变,有效位数扩展到1616位位位位 占字节多的整数赋给整型占字节多的整数赋给整型占字节多的整数赋给整型占字节多的整数赋给整型/字符型变量,只将低字节赋给变量字符型变量,只将低字节赋给变量字符型变量,只将低字节赋给变量字符型变量,只将低字节赋给变量 有符号整数有符号整数有符号整数有符号整数赋给长度相同的无符号整型变量,按字节原样赋给变量赋给长度相同的无符号整型变量,按字节原样赋给变量赋给长度相同的无符号整型变量,按字节原样赋给变量赋给长度相同的无符号整型变量,按字节原样赋给变量 无符号整数无符号整数无符号整数无符号整数赋给长度相同的有符号整型变量,应注意不要超出范围赋给长度相同的有符号整型变量,应注意不要超出范围赋给长度相同的有符号整型变量,应注意不要超出范围赋给长度相同的有符号整型变量,应注意不要超出范围3.3.3 3.3.3 赋值语句赋值语句赋值语句赋值语句教学进程教学进程教学进程教学进程C Cs=2*3.14159*r;赋值表达式的最后加一个赋值表达式的最后加一个赋值表达式的最后加一个赋值表达式的最后加一个“;”,就是赋值语句,就是赋值语句,就是赋值语句,就是赋值语句,赋值语句的形式为:赋值语句的形式为:赋值语句的形式为:赋值语句的形式为:变量名变量名变量名变量名=表达式;表达式;表达式;表达式;x*=y+8;复合语句复合语句复合语句复合语句 简单语句简单语句简单语句简单语句 赋值号赋值号“=”是一个是一个运算符;运算符;区别区别赋值表达式赋值表达式赋值表达式赋值表达式和和和和赋赋赋赋值语句值语句值语句值语句的不同,如的不同,如的不同,如的不同,如:if(if(a=ba=b)0)t=a;)0)t=a;if(if(a=b;a=b;)0)t=a;)0)t=a;3.3.4 3.3.4 变量赋初值变量赋初值变量赋初值变量赋初值int a=3;float f=3.56;char c=a;程序中常需要对一些变量预先设定一个值程序中常需要对一些变量预先设定一个值程序中常需要对一些变量预先设定一个值程序中常需要对一些变量预先设定一个值初值。初值。初值。初值。int a,b,c;a=b=c=3;也可以用赋值语句实现也可以用赋值语句实现也可以用赋值语句实现也可以用赋值语句实现 可以在定义变量的同时使变量初始化可以在定义变量的同时使变量初始化可以在定义变量的同时使变量初始化可以在定义变量的同时使变量初始化int a,b,c=5;int a=3,b=3,c=3;例如例如例如例如int a;float f;char c;a=3;c=a;f=3.56;int a,b,c;c=5;数据的输入与输出是相对于计算机而言的。其中:数据的输入与输出是相对于计算机而言的。其中:数据的输入与输出是相对于计算机而言的。其中:数据的输入与输出是相对于计算机而言的。其中:从计算机向外部设备输送数据称为从计算机向外部设备输送数据称为从计算机向外部设备输送数据称为从计算机向外部设备输送数据称为输出输出输出输出。通常输出设备包括:显示器、。通常输出设备包括:显示器、。通常输出设备包括:显示器、。通常输出设备包括:显示器、打印机等;打印机等;打印机等;打印机等;从外部设备向计算机输送数据称为从外部设备向计算机输送数据称为从外部设备向计算机输送数据称为从外部设备向计算机输送数据称为输入输入输入输入。通常输入设备包括:键盘、。通常输入设备包括:键盘、。通常输入设备包括:键盘、。通常输入设备包括:键盘、鼠标、扫描仪等。鼠标、扫描仪等。鼠标、扫描仪等。鼠标、扫描仪等。在在在在C C语言中,输入与输出是用标准库函数中的输入、输出函数实现的,语言中,输入与输出是用标准库函数中的输入、输出函数实现的,语言中,输入与输出是用标准库函数中的输入、输出函数实现的,语言中,输入与输出是用标准库函数中的输入、输出函数实现的,这样就避免了在编译阶段将输入输出语句翻译成二进制代码及处理与硬件这样就避免了在编译阶段将输入输出语句翻译成二进制代码及处理与硬件这样就避免了在编译阶段将输入输出语句翻译成二进制代码及处理与硬件这样就避免了在编译阶段将输入输出语句翻译成二进制代码及处理与硬件有关的问题,可是编译系统简化,通用性增强,可移植性好。有关的问题,可是编译系统简化,通用性增强,可移植性好。有关的问题,可是编译系统简化,通用性增强,可移植性好。有关的问题,可是编译系统简化,通用性增强,可移植性好。3.43.4教学进程教学进程教学进程教学进程 数据输入输出的概念及在数据输入输出的概念及在数据输入输出的概念及在数据输入输出的概念及在C C语言中的实现语言中的实现语言中的实现语言中的实现 库函数已编译成目标文件,在连接时与编译源程序得库函数已编译成目标文件,在连接时与编译源程序得到的目标文件到的目标文件(.obj)相连接,生成可执行程序相连接,生成可执行程序(.exe)。注意:注意:注意:注意:在使用系统库函数时,要用预编译命令在使用系统库函数时,要用预编译命令#include将有关将有关的头文件包含到用户源文件中(即在程序的开头)的头文件包含到用户源文件中(即在程序的开头)。头文件中包含了调用函数时所需的有关信息。头文件中包含了调用函数时所需的有关信息。数据的输入与输出应包括以下几项:数据的输入与输出应包括以下几项:数据的输入与输出应包括以下几项:数据的输入与输出应包括以下几项:用于输入或输出的设备。用于输入或输出的设备。用于输入或输出的设备。用于输入或输出的设备。输入或输出数据的格式。输入或输出数据的格式。输入或输出数据的格式。输入或输出数据的格式。输入或输出的具体内容。输入或输出的具体内容。输入或输出的具体内容。输入或输出的具体内容。在在在在C C语言提供的用于输入与输出的函数中,键盘是标准输入设备,语言提供的用于输入与输出的函数中,键盘是标准输入设备,语言提供的用于输入与输出的函数中,键盘是标准输入设备,语言提供的用于输入与输出的函数中,键盘是标准输入设备,显示器是标准输出设备。显示器是标准输出设备。显示器是标准输出设备。显示器是标准输出设备。输出设备输出设备输出设备输出设备输入设备输入设备输入设备输入设备教学进程教学进程教学进程教学进程 另外,如果在程序中要使用另外,如果在程序中要使用另外,如果在程序中要使用另外,如果在程序中要使用C C语言所提供的输语言所提供的输语言所提供的输语言所提供的输入函数或输出函数,要用到入函数或输出函数,要用到入函数或输出函数,要用到入函数或输出函数,要用到“stdio.h”“stdio.h”文件中的信文件中的信文件中的信文件中的信息。则在使用前(即在程序的开头处)应该使用包息。则在使用前(即在程序的开头处)应该使用包息。则在使用前(即在程序的开头处)应该使用包息。则在使用前(即在程序的开头处)应该使用包含命令含命令含命令含命令#include“stdio.h”#include“stdio.h”将将将将C C语言中输入与输出语言中输入与输出语言中输入与输出语言中输入与输出的库函数包含进来。的库函数包含进来。的库函数包含进来。的库函数包含进来。#include#include stdio.hstdio.h3.43.4 数据输入输出的概念及在数据输入输出的概念及在数据输入输出的概念及在数据输入输出的概念及在C C语言中的实现语言中的实现语言中的实现语言中的实现 字符数据的输入输出字符数据的输入输出字符数据的输入输出字符数据的输入输出3.53.5 用用用用putcharputchar函数输出一个字符函数输出一个字符函数输出一个字符函数输出一个字符 格式格式格式格式 putchar(c)putchar(c)作用作用作用作用 输出变量输出变量输出变量输出变量c c的值。的值。的值。的值。说明说明说明说明 c c可以是字符型或整型变量。可以是字符型或整型变量。可以是字符型或整型变量。可以是字符型或整型变量。c c可以是转义字符,如:可以是转义字符,如:可以是转义字符,如:可以是转义字符,如:putchar(101);作用:输出字符作用:输出字符A putchar();输出字符单引号输出字符单引号 putchar(015);输出回车输出回车 putchar(n);输出换行输出换行教学进程教学进程教学进程教学进程#include void main()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);putchar(n);【例【例【例【例3.33.3】输出单个字符。输出单个字符。运行结果:运行结果:运行结果:运行结果:BOY 教学进程教学进程教学进程教学进程 字符数据的输入输出字符数据的输入输出字符数据的输入输出字符数据的输入输出3.53.5 用用用用getchargetchar函数输入一个字符函数输入一个字符函数输入一个字符函数输入一个字符 格式格式格式格式 getchar()getchar()作用作用作用作用 从计算机终端(键盘)输入一个字符。从计算机终端(键盘)输入一个字符。从计算机终端(键盘)输入一个字符。从计算机终端(键盘)输入一个字符。说明说明说明说明 函数的值就是从输入设备得到的字符。函数的值就是从输入设备得到的字符。函数的值就是从输入设备得到的字符。函数的值就是从输入设备得到的字符。getchar()getchar()函数只能接收一个字符。函数只能接收一个字符。函数只能接收一个字符。函数只能接收一个字符。该函数可给字符型或整型变量提供一个字符。该函数可给字符型或整型变量提供一个字符。该函数可给字符型或整型变量提供一个字符。该函数可给字符型或整型变量提供一个字符。该函数可作为表达式的一部分。该函数可作为表达式的一部分。该函数可作为表达式的一部分。该函数可作为表达式的一部分。教学进程教学进程教学进程教学进程putchar(getchar();printf(%c,getchar();#include void main()char c;c=getchar();putchar(c);putchar(n);【例【例【例【例3.43.4】输入单个字符。输入单个字符。运行结果:运行结果:运行结果:运行结果:a /*输入一个字符输入一个字符输入一个字符输入一个字符*/