资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,4,章,顺序程序设计,4.1 C,语句概述,C,语句用来发出操作命令,编译后产生若干机器指令,一个,C,程序应包含若干语句。,一、,C,程序的组成,.,程序由若干源程序,文件(模块)组成。,.,一个源文件可以由若干函数和预编译命令组成,.,.,一个函数由数据描述(声明部分)和数据操作(执行部分)组成。,其组成图见,69,图,4.1,本章重点:,1,。数据的输入与输出方法。,2,。,顺序程序设计的基本步骤与方法。,二、语句的分类,语句是构成程序(函数)不可缺少的部分是机器要完成任务的操作命令。语句是用,“,;,”,号结束,语句分为以下五类:,.,控制语句,:完成控制功能,如分支,转向,循环等。,.,函数调用语句,:在调用函数后加一个,“,;,”,号,如,:,printf,(,“,This is a,programe,”,),;,在输出函数后加“;”号,变为输出函数调用语句。,3.,表达式语句,:表达式后加,“,;,”,号如:,赋值表达式:,x=x+5,;,自加表达式,:i+;,逗号表达式:,a=1,b=2,c=a+b+3;,函数调用语句(如,sin(x),也可以看成是表达式语句。表达式语句是,C,中最多的语句,故有人称,C,语言为,“,表达式语言,”,4.,空语句:,;,只有一个,“,;,”,号什么也不做,。,5.,复合语句,(分程序):,将多个语句用,括起来。比如,i+;,x=(i+10)*5;,printf,(“%d”,x);,由三个语句构成一个复合语句,三 、程序的三种基本结构,C,是属于结构化程序设计:,结构化程序设计特点,:,(,1,)程序组成模块化,.,(,2,)程序走向靠控制结构来完成。,三种基本结构:,1.,顺序结构(从上到下一句句执行),2.,选择(分支)结构,3.,循环结构,4.2 *,数据的输入输出,C,没有输入与输出语句,其操作由输入输出函数实现。重点介绍在,标准函数库中的标准输入输出函数,。,一、字符数据的输入输出,(一)标准字符输出函数,-,putchar,(),形式:,putchar,(,变量,),;,如:,putchar,(,c,),;,作用:向终端(显示器,打印机)输出变量的值一次只能输出一个字符。,说明:(,1,)变量可以是,字符型变量或整型变量,。,(,2,),putchar,(),包括在标准,I/O,库中,使用前应先用预编译命令:,#include “,stdio.h,”,或,#include ,例,1,:,#include “,stdio.h,”,main(),char a,b;,int,y=65;,a=O;b=K;,putchar(a,);,putchar(b,);,putchar(n,);,putchar(y,);,运行结果:,OK,“n”,为换行的转义符。,65,还是,A,A,(一)标准字符输入函数,-,getchar,(),形式:,getchar,(),;,没有参数,作用:,从终端输入一个字符,。,getchar,(),也 包括在标准,I/O,库中,使用前应先用预编译命令。,例,2,:,从键盘输入一个大写字母,改用小写字母输出(大、小写间差,32,),char,;,printf,(”,请输 一大写 字母,:,”,),;,c1=,getchar,(),;c2=,;,(c2);,c1,c2,c1+32,putchar,#include ,char c1,c2;,printf,(”,请输入一个大写字母:,”,);,c1=,getchar,(),;,c2=c1+32;,printf,(“%,的,ASC,码值为:,%,n”,c1,c1);,printf,(“%,的,ASC,码值为:,%,n”,c2,c2);,c,d,运行:,请输入一个大写字母:,B (,回车),B,的,ASC,码值为:,66,b,的,ASC,码值为:,98,二、*格式输入与输出,(一)格式输出函数,-,printf,(),1.,一般格式:,p,rintf,(,格式控制,输出表列),作用:,向终端输出若干任意类型的数据。,如:,printf(“i,=%d,i*j=%dn”,i,i*j),说明:,(,1,),格式控制,,,包含三种信息,:,提示字符串,如,:“i=”,原样照印,.,格式说明,:,由“,%”,和格式字符组成,如,%d,%f,%c,等.其作用是将输出的数据转换为指定的格式输出.,%与格式符之间不能有空格,。,转义字符,如:,n,换行符,.,(2),格式控制要用,双引号引起来,.,(3),格式符,用小写,%d%c,.,2.,格式字符的用法,(1)d,格式符,:,以十进制形式输出整数,%,d,按整型数据实际长度输出,%,md,m,为指定的输出数据宽度,若数据宽度小于,m,左端填空格,若大于,m,则按实际输出,.,a=12345;printf(“%3d,%8d,”,a,a);,12345,_ _ _ 12345,%ld,输出长整型数据,也可用,%,mld,.,main(),long u=32768;,printf(“u,=%d,u);,getch,();,输出?,-32768,(2),o,格式符,以无符号,8,进制输出数据,也可以,%lo,%mo,输出长整型和指定输出宽度,.,(3),x,格式符,-,以无符号16进制输出整型数,也可以用%,lx,输出长整型和,%,mx,(4),u,格式符,-输出无符号十进制整型数,(5),c,格式符,-,用以输出一个字符,.,(6)s,格式符,-,输出一串字符,输出的字符串原样照印,.,如,:,printf,(“%s”,”How are you!”);,%ms,若实际小于,m,左补空格,大于,m,原样输出。,%-ms,若实际小于,m,右补空格,大于,m,原样输出。,(7)f,格式符,-,以小数形式输出实数,。,%f,不指定宽度,,,由系统决定,整数部分全输出,,,小数部分输出,6,位,。,double,用,%lf,%,m.nf,指定输出,m,列,,n,位小数,。,数值向右靠,左补空格。,%-,m.nf,输出,m,列,,,n,位小数,数值向左靠,右补空格,。,例,3,main(),float f=123.456;,printf(“%f,_ _%10f _ _%10.2f _ _%.2f_ _,%-10.2fn”,f,f,f,f,f);,m,列含小数点位,结果:,123.456001_ _123.456001_ _,_ _ _ _,123.46 _ _ 123.46,_ _ 123.46,_ _ _ _,(,8,),e,格式符,-,以指数形式输出实数。,(,9,),g,格式符,-,用来输出实数,根据数值大小,自选,f,格式或,e,格式。,选占位小的,不输出小数后无意义的零。,如:,l=654.321;,printf(“%f,%e,%g”,l,l,l,);,输出:,654.321000,6.543210e+2,654.321,6,位 去掉后面的零,(二)*格式输入函数,-,scanf,(),如:,int,x,y;,scanf(“%d,%d”,x 5,printf(“%d,%d,”,x,y);,运行:,5_8,(或,5 8,),y 8,5,,,8,&,为地址运算符,,&x,为,x,在内存中的地址,。,getchar,(),只能输入一个字符,,scanf,(),可以输任意类型的多个数据。,一般形式:,scanf,(,格式控制,地址表列),格式控制同,printf,类似,,地址表列为,若干地址,用“,”分开,,以,&,加变量形式,。,说明:,(,1,)格式控制中,%,和格式字符之外的字符,输入数据时,必输相应字符。如:,scanf(“%d,%d”,&x,&y,),;,中“,”是,%,和格式字符,d,之外的字符,因此,,输入数据时应输为:,5,,,8,若为,%d:%d,应输为:,5,:8,在定义,x,,,y,时,,c,在编译时,就给,x,y,分配了地址。执行,scanf,函数时,相当于将,x,y,赋值。比如:输,5,,,8,,相当于,x=5,y=8,。,(2),程序中最好,用,printf,函数,,,提示用户输入的信息与格式。,(,3,)若格式说明间无分隔符:,输入数字时,可用空格或,Tab,键分隔或回车,。,输入字符时,不能用空格分隔,。,如:,scanf(“%d%d”,&x,&y,);,输入:,5_ 8 5 8,scanf(“%c%c”,&x,&y,):,应,:,ab,若,a _ b ,则把,_,赋给,y.,scanf(“%c,%c,”,,,应:,a,b,(4),scanf,格式字符见,P83,,表,4.3,和表,4.4,。,与,printf,类似。,主要掌握:,%,d,%,ld,,,%,f,%,c,%,s,(,5,),输入数据时,不能规定精度,但可指定输入数据的宽度。,如:,scanf(“%8.3f”,是错的,。,但,scanf(“%5f%4d”,可以,输入时达到指定宽度则结束输入,如输入,:,123.456789,a b,例:输入两个实数,按从大到小输出,保留两位小数。,#include,main(),float,a,b,c,;,printf(input,:n);,scanf(%f,%f,&a,&b,);,if(a,b)c,=,a,a,=,b;b,=c;,printf(output:%.2f,%.2fn,a,b);,getch,();,4.3 *,顺序结构程序设计举例,例,4(4.10),输入三角形的三边,求三角形的面积,。,分析:,1.,定义?输入?,2.,计算公式:,area=s(s-a)(s-b)(s-c),s=(a+b+c)/2,3.,输出?,注意,:,要用求平方根函数,sqrt,(),求面积,要调用数学函数库的函数,要调用头文件,“,math.h”.,#include “math.h”,aera,=,sqrt,(),#,include “math.h”,main(),float a,b,c,s,area;,scanf(“%f,%f,%f,”,s=1.0/2*(a+b+c);,/*1.0,为实数,,1/2,整数为,0*/,area=,sqrt(s,*(s-a)*(s-b)*(s-c);,printf(“a,=%7.2f,b=%7.2f,c=%7.2fn”,a,b,c);,printf(“area,=%7.2fn”,area);,运行:,3,4,6,a=_ _ _3.00,b=_ _ _ 4.00,c=_ _ _ 6.00,area=_ _ _ 5.33,
展开阅读全文