第3章 基础优秀课件.ppt
第3章 基础第1页,本讲稿共29页教学目的和基本要求:教学目的和基本要求:要求学生了解语句,尤其是复合语句的概念和使用场合,学会基本输入输出语句。教学重点:教学重点:复合语句、scanf与printf,表达式在printf中的运用。第2页,本讲稿共29页 程序设计语言有顺序、选择、循环三种基本的控程序设计语言有顺序、选择、循环三种基本的控制结构。制结构。B BA A图图3.1 3.1 顺序结构执行流程顺序结构执行流程 顺序结构是最基本的控制结构,其包含的语句是顺序结构是最基本的控制结构,其包含的语句是按照书写的顺序执行的,且每条语句都将被执行。程按照书写的顺序执行的,且每条语句都将被执行。程序流程如图序流程如图3.1 3.1 所示,语句按书写顺序执行。先执行所示,语句按书写顺序执行。先执行A A,再执行,再执行B B。例:例:#jincludejinclude main()main()int a=10,x=5,y=6;int a=10,x=5,y=6;a+=a*=6;a+=a*=6;x=y+;x=y+;y=+x;y=+x;a=x+y;a=x+y;printf(“%d,%d,%d”,a,x,y);printf(“%d,%d,%d”,a,x,y);输出:输出:1414,8 8,7 7第3页,本讲稿共29页 C C语言的语句可分为以下四类:语言的语句可分为以下四类:简单语句(包括输入简单语句(包括输入/输出语句)输出语句)空语句空语句 复合语句复合语句 流程控制语句。流程控制语句。3.1 C3.1 C语言的基本语句语言的基本语句 本章将介绍前三种语句。本章将介绍前三种语句。第4页,本讲稿共29页3.1.1 3.1.1 简单语句简单语句1.1.表达式语句表达式语句:由一个表达式加上一个分号构成。由一个表达式加上一个分号构成。如:如:A+;x=1;A+;x=1;p+=q*4+5;y=42?6:1;p+=q*4+5;y=42?6:1;2.2.空语句空语句:由一个分号表示,一般形式为:由一个分号表示,一般形式为:;空语句在语法上是一条语句,但执行时不做空语句在语法上是一条语句,但执行时不做任何操作。任何操作。第5页,本讲稿共29页 C C 语语言言有有丰丰富富的的标标准准函函数数库库,可可提提供供各各类类函函数数供用户调用,完成预先设定好的操作供用户调用,完成预先设定好的操作.例例如如调调用用标标准准库库函函数数求求数数学学函函数数值值:sin(x)sin(x)、cos(x)cos(x)、exp(x)exp(x)(求求e ex x )、fabs(x)fabs(x)(求求x x的的绝绝对对值值)、log(x)log(x)等。等。3.3.函数调用语句函数调用语句:由函数调用表达式加分号构成由函数调用表达式加分号构成.如:如:printf(“%d”,a);scanf(“%f”,&b);printf(“%d”,a);scanf(“%f”,&b);第6页,本讲稿共29页调用标准库函数要注意:调用标准库函数要注意:在程序中要包含相应的头文件在程序中要包含相应的头文件例如:例如:#includeinclude#includeinclude 调用规则:函数名(参数表)例如:y=sin(1.7);x=pow(3,18);函数调用的实质:在调用点转去执行一段预先设计好的程序,求出结果后返回调用点。函数的值又叫函数的返回值。第7页,本讲稿共29页 如如:数学表达式数学表达式 y=|3sinx+4cosx|+ey=|3sinx+4cosx|+ex x,可以用可以用C C语言表达式表示为:语言表达式表示为:其中,其中,fabs,sin,cos,expfabs,sin,cos,exp都属于头文件都属于头文件math.hmath.h,用到这些函数,必须在程序的预处用到这些函数,必须在程序的预处理语句中用理语句中用#includeinclude把数学函数库包把数学函数库包含进来。含进来。y=fabs(3*sin(x)+4*cos(x)+exp(x);y=fabs(3*sin(x)+4*cos(x)+exp(x);第8页,本讲稿共29页3.1.2 3.1.2 复合语句复合语句 语句1;语句n;用一对花括号,把若干条语句括起来,就形成用一对花括号,把若干条语句括起来,就形成了一条复合语句。形式如下:了一条复合语句。形式如下:花括号中的语句,可以是简单语句、空语句、复花括号中的语句,可以是简单语句、空语句、复合语句、流程控制语句,所有这些语句括在一起,合语句、流程控制语句,所有这些语句括在一起,在语法上看成是一条语句,执行时顺序执行花括号在语法上看成是一条语句,执行时顺序执行花括号中的每条语句。复合语句多用于流程控制语句中。中的每条语句。复合语句多用于流程控制语句中。第9页,本讲稿共29页3.2 3.2 数据输入与输出数据输入与输出 C C语言本身不提供输入输出语句,得由语言本身不提供输入输出语句,得由标准标准I/OI/O库函数提供。输入输出库函数很丰库函数提供。输入输出库函数很丰富,可以从键盘、显示器、磁盘文件和硬富,可以从键盘、显示器、磁盘文件和硬件端口进行输入或输出操作。件端口进行输入或输出操作。本节主要介绍用于键盘输入和显示器输出本节主要介绍用于键盘输入和显示器输出的函数。的函数。第10页,本讲稿共29页int putchar(int)向标准输出设备向标准输出设备(一般为显示器一般为显示器)输出一个字输出一个字符,并返回返回该字母的符,并返回返回该字母的ASCIIASCII码值。参数可以是码值。参数可以是字符常量、变量或整型常量、变量。字符常量、变量或整型常量、变量。如:如:#includeinclude main()main()int a=65;char c=d;int a=65;char c=d;putchar(a);putchar(97);putchar(n);putchar(c);putchar(a);putchar(97);putchar(n);putchar(c);3.2.1 字符输入输出函数1.1.字符输出函数字符输出函数输出为:输出为:AaAa d d第11页,本讲稿共29页2.2.字符输入函数字符输入函数int getchar(void)从输入设备从输入设备(一般为键盘一般为键盘)上输入一个字符。它每上输入一个字符。它每被调用一次,就从标准输入设备上取一个字符,返回被调用一次,就从标准输入设备上取一个字符,返回值是该字符的值是该字符的ASCIIASCII编码值,可以赋给字符变量或整编码值,可以赋给字符变量或整型变量。型变量。例:例:#includeinclude main()main()int i,j;char c;int i,j;char c;i=getchar();putchar(i);i=getchar();putchar(i);j=getchar();putchar(j);j=getchar();putchar(j);c=getchar();putchar(c);c=getchar();putchar(c);思考思考:以下三种不同的输入,以下三种不同的输入,输出情况如何输出情况如何?1.1.abcdefgabcdefg 2.ab 2.ab 3.a 3.a bcdefg bcdefg 执行执行getchar()getchar()时输入字符以时输入字符以回车结束,同时回车字符也可以回车结束,同时回车字符也可以做为输入的字符。做为输入的字符。注意注意第12页,本讲稿共29页3.2.2 3.2.2 格式输出函数格式输出函数 前面两条语句非常方便,但一次只能处理前面两条语句非常方便,但一次只能处理一个字符,一个字符,格式输出函数可以按规定格式向输出设备格式输出函数可以按规定格式向输出设备(一般为显示器一般为显示器)输出数据,并返回输出的字符输出数据,并返回输出的字符数。这个函数可以输出多字信息。数。这个函数可以输出多字信息。第13页,本讲稿共29页格式输出函数的一般形式格式输出函数的一般形式printf(“printf(“格式控制字符串格式控制字符串”,”,输出参数表输出参数表););用双引号括起来,控制输出项的格式和输出一些提示信息 可以是一个或多个输出项.可以是常量或变量表达式,用逗号分隔。类型可以是整型实型字符型和字符串型.具体的讲,具体的讲,printfprintf语句,就是把输出参数表中的表达式的值,按语句,就是把输出参数表中的表达式的值,按照格式控制字符串的格式,依次在指定的位置输出,如果输出位置照格式控制字符串的格式,依次在指定的位置输出,如果输出位置不够,从左到右依次输出前几个的值。不够,从左到右依次输出前几个的值。第14页,本讲稿共29页格式输出函数运用示例:格式输出函数运用示例:1.1.printf(“Its fun!”);printf(“Its fun!”);输出:输出:Its fun!Its fun!2.2.int a=1,b=2;int a=1,b=2;printf(“%d,%d”,a,b);printf(“%d,%d”,a,b);输出:输出:1 1,2 23.int a=1,b=2;3.int a=1,b=2;printf(“a=%dnb=%d”,a,b);printf(“a=%dnb=%d”,a,b);输出:输出:a=1a=1 b=2 b=24.4.int a=1,b=2;int a=1,b=2;printf(“%d”,a+b);printf(“%d”,a+b);输出:输出:3 35.5.int a=1,b=2;int a=1,b=2;printf(“a+b”);printf(“a+b”);输出:输出:a+ba+b第15页,本讲稿共29页在在printfprintf语句的格式控制字符串中,有三类字符:语句的格式控制字符串中,有三类字符:普通字符:按原样输出,主要起提示作用。普通字符:按原样输出,主要起提示作用。转义字符:指明特定的操作,如转义字符:指明特定的操作,如 n n换行、换行、t t横向跳横向跳格格格式说明部分:由格式说明部分:由%引导的格式字符串组成引导的格式字符串组成 输出参数表中的表达式,就是按照格式说明输出参数表中的表达式,就是按照格式说明部分指定的格式,在格式控制字符串中的相应位部分指定的格式,在格式控制字符串中的相应位置输出的。置输出的。格式说明部分的一般格式为:格式说明部分的一般格式为:%flagswidth.precF|N|h|Ltype%flagswidth.precF|N|h|Ltype在这里,我们对常用的几种形式进行介绍!在这里,我们对常用的几种形式进行介绍!第16页,本讲稿共29页1.%1.%typetype 这是最简单的格式输出说明形式,说明以这是最简单的格式输出说明形式,说明以何种形式输出表达式的值。何种形式输出表达式的值。d以带符号的十进制形式输出整数(正数不输出符号)o以8进制无符号形式输出整数(不输出前导符O)x(X)以16进制无符号形式输出整数(不输出前导符Ox)u以无符号10进制形式输出整数 c以字符形式输出一个字符s输出字符串 f以小数形式输出单、双精度数,隐含输出6位小数 e(E)以标准指数形式输出单、双精度数,小数位数为6位 g(G)选用%f或%e格式中输出宽度较短的一种格式%百分号typetype字符表字符表第17页,本讲稿共29页实型(实型(floatfloat)(double double)表达式值的类型表达式值的类型字符型(字符型(charchar、unsigned charunsigned char)整型(整型(intint、unsignedunsigned)typetype格式格式对应对应%c c、%d%d、%u%u、%o%o、%x%x%d d、%u%u、%o%o、%x%x、%c%c(longlong、unsgned unsgned longlong)%ld ld、%lu%lu、%o%o、%x%x、%c%c%f f、%e%e、%g%g%lf lf、%e%e、%g%g字符串(字符串(字符串常量、字符数组字符串常量、字符数组)%s s 在字符型和整型之间,输出的在字符型和整型之间,输出的typetype格式是可以互换的,而格式是可以互换的,而与实型及字符串型则不能。与实型及字符串型则不能。在在%与与typetype字符之间加一个字符字符之间加一个字符 l l 表示输出长整型或双精度表示输出长整型或双精度型数据的值。型数据的值。第18页,本讲稿共29页2.2.precprec%f f与与%lf lf的输出格式都是在小数点后保留六位数的输出格式都是在小数点后保留六位数字,有余四舍五入,缺少以字,有余四舍五入,缺少以0 0补足。补足。在在C C语言中,输出实数时可以用在语言中,输出实数时可以用在%与与typetype符之间符之间加入加入.precprec的格式来控制输出的小数位数。的格式来控制输出的小数位数。例:例:printf(“%.3f,%.2f”,3.1415926,3);printf(“%.3f,%.2f”,3.1415926,3);输出为:输出为:3.142,3.003.142,3.00 .precprec也可以加在也可以加在%与整型、字符型与整型、字符型typetype符之间,符之间,意义各不一样,此处不作介绍。意义各不一样,此处不作介绍。第19页,本讲稿共29页例:例:#includeinclude main()main()int a=65,i=-2;char c=a;int a=65,i=-2;char c=a;float b=1.34576;double d=4.65;float b=1.34576;double d=4.65;unsigned j=65535;unsigned j=65535;printf(“n%s”,”hello”);printf(“n%s”,”hello”);printf(“n%d,%c,%d,%u,%u,%d”,a,a,i,i,j,j);printf(“n%d,%c,%d,%u,%u,%d”,a,a,i,i,j,j);printf(“n%.3f,%.4lf”,b,d);printf(“n%.3f,%.4lf”,b,d);printf(“n%d,%d”,a+i,i+);printf(“n%d,%d”,a+i,i+);输出:输出:hellohello65,A,-2,65,A,-2,6553465534,65535,65535,-1-11.346,4.65001.346,4.650064,-264,-2 printf语句输出参数表中的表达式是先从右到左运算,再从左到右输出。注意注意第20页,本讲稿共29页格式输入函数一般形式格式输入函数一般形式scanf(“scanf(“格式控制字符串格式控制字符串”,”,地址列表地址列表););3.2.3 3.2.3 格式输入函数格式输入函数在在scanfscanf语句的格式控制字符串中,有两类字符:语句的格式控制字符串中,有两类字符:普通字符:按原样输入普通字符:按原样输入格式说明部分:由格式说明部分:由%引导的格式字符串组成引导的格式字符串组成 scanf scanf语句地址列表中的地址,用取址符语句地址列表中的地址,用取址符&加变量名加变量名的形式表示,指的是该变量所代表的内存空间的地址。的形式表示,指的是该变量所代表的内存空间的地址。scanf scanf语句在运行时,会停下来,等待从键盘输入语句在运行时,会停下来,等待从键盘输入值依次存入地址列表中的地址空间,即相当于从键盘值依次存入地址列表中的地址空间,即相当于从键盘给变量赋值。给变量赋值。第21页,本讲稿共29页 输入数据时要严格按照输入数据时要严格按照scanfscanf语句中格式控制字语句中格式控制字符串的形式输入。看下面的例子:符串的形式输入。看下面的例子:1.1.scanf(“%d%d”,&a,&b);scanf(“%d%d”,&a,&b);输入:输入:1 21 2回车回车 或者或者 1 1回车回车2 2回车回车2.2.scanf(“%d,%d”,&a,&b);scanf(“%d,%d”,&a,&b);输入:输入:1,21,2回车回车3.3.scanf(“a=%d,b=%d”,&a,&b);scanf(“a=%d,b=%d”,&a,&b);输入:输入:a=1,b=2a=1,b=2回车回车第22页,本讲稿共29页%*widthF|Nh|Ltypetypetype是必须的,表示输入后转换的数据类型。是必须的,表示输入后转换的数据类型。d(D)十进制整数o(O)八进制整数x(X)十六进制整数i(I)自动根据数头分辨十、八、十六进制u(U)无符号十进制整数c单个字符s字符串f(e,g,G)实数n不输入数据,将已读入的字符输送到对应的地址中%百分号typetype字符表字符表 scanfscanf语句格式说明部分的一般格式为:语句格式说明部分的一般格式为:第23页,本讲稿共29页3.3.使用使用scanfscanf应注意应注意:执行执行scanf()scanf()输入数据时,在两个数据之间允许以一输入数据时,在两个数据之间允许以一个或多个空格间隔,也可以用回车键、个或多个空格间隔,也可以用回车键、tabtab键分隔。键分隔。实数不许规定精度,像实数不许规定精度,像%.4%.4f f是不合法的。是不合法的。%后面有后面有*号时,该数据会被禁止使用。号时,该数据会被禁止使用。%后面有数字,可以自动截取该长度的数据作为输入后面有数字,可以自动截取该长度的数据作为输入值。值。如果输入时类型不匹配则停止处理,返回如果输入时类型不匹配则停止处理,返回0 0。第24页,本讲稿共29页3.3 3.3 程序举例程序举例 例例3.1 3.1 输入圆的半径,输出圆的周长和面积。输入圆的半径,输出圆的周长和面积。分析:分析:1.定义实型变量r、l、s用于存放半径、周长、面积;2.调用输入函数,输入r:3.分别利用周长公式和面积公式求出l、s;4.调用输出函数输出l、s。第25页,本讲稿共29页程序:程序:#include include main()main()float r float r,l l,s s;scanf(“%f”scanf(“%f”,&r)&r);l=2*3.14159*r l=2*3.14159*r;s=3.14159*r*r s=3.14159*r*r;printf(“n l=%.4f”printf(“n l=%.4f”,l)l);printf(“n s=%.4f”printf(“n s=%.4f”,s)s);第26页,本讲稿共29页分析:分析:1.输入小写字母存入变量a;2.转换成大写a=a-32;3.输出 a.例例3.2 3.2 从键盘输入一个小写字母,用大从键盘输入一个小写字母,用大写形式输出该字母。写形式输出该字母。第27页,本讲稿共29页#include“stdio.h”include“stdio.h”void main()void main()char a char a;程序:程序:思考:如何使程序可以处理任何字符的输入。即判断输入的是小写字思考:如何使程序可以处理任何字符的输入。即判断输入的是小写字母,才转换成大写;如果输入的其他字符,则直接输出。母,才转换成大写;如果输入的其他字符,则直接输出。printf(“Input a lowercase letter printf(“Input a lowercase letter:”)”);a=getchar()a=getchar();a=a-32 a=a-32;printf(“%c n”printf(“%c n”,a)a);printf(“input a letter:”);printf(“input a letter:”);a=getchar();a=getchar();a=a=a&a=z?a-32:a;a=a=a&a=z?a-32:a;printf(“%cn”,a);printf(“%cn”,a);第28页,本讲稿共29页本章结束再见!再见!同学们:第29页,本讲稿共29页