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