C语言第3章顺序程序设计.ppt

上传人:牧羊曲112 文档编号:6504246 上传时间:2023-11-07 格式:PPT 页数:46 大小:231.99KB
返回 下载 相关 举报
C语言第3章顺序程序设计.ppt_第1页
第1页 / 共46页
C语言第3章顺序程序设计.ppt_第2页
第2页 / 共46页
C语言第3章顺序程序设计.ppt_第3页
第3页 / 共46页
C语言第3章顺序程序设计.ppt_第4页
第4页 / 共46页
C语言第3章顺序程序设计.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《C语言第3章顺序程序设计.ppt》由会员分享,可在线阅读,更多相关《C语言第3章顺序程序设计.ppt(46页珍藏版)》请在三一办公上搜索。

1、C语言第3章 顺序程序设计,3.1 C语言的基本语句,C语言数据操作语句,简单语句,空语句(;)复合语句(一条或多条语句),表达式语句(表达式;),函数调用语句(函数名(参数表);),流程控制语句,结构化语句,条件语句(if语句,switch语句),循环语句,while语句,do-while语句,for语句,非结构化语句,break语句,continue语句,return语句,非限定转向语句,3.1.1 简单语句,1.表达式语句由表达式组成的语句称为表达式语句。一般形式为:表达式;注意:分号是C语言语句的结束标志。表达式语句可分为运算符表达式语句和赋值语句。(1)运算符表达式语句 运算符表达式

2、语句由运算符表达式后跟一个分号组成。例如:i+;语句的功能是,变量i的值增l。-j;语句的功能是,变量j的值减l。(2)赋值语句 赋值浯句由赋值表达式后跟一个分号组成。例如:xl;*给x赋值为l*x=x*3*cos(x);*计算表达式的值,并赋给x*,2函数调用语句函数调用语句由函数调用表达式后跟一个分号组成,其作用主要是完成特定的任务。例如:scanf(f,&x);*输入函数调用语句,输入变量x的值*printf(f,x);*输出函数调用语句,输出变量x的值*函数调用语句的一般形式是:函数名(参数列表);,(1)要在程序中包含相应的头文件例如:#include#include(2)库函数调用

3、规则 库函数调用的一般形式为:函数名(参数表);调用函数有的是为了得到函数的返回值,如数学函数等。这类函数的调用出现在表达式中,不作为函数调用语句,而是作为表达式语句的一部分。例如,求sin(x)的函数的语句:y1sin(1.7);y23*sin(3.14159*x180);y32*sin(+x*3.14159180)+10;,在表达式中调用函数,实际上是转去执行一段预先设计好的程序,求出结果后返回调用点。所以函数的值又称为函数的返回值。调用函数时,要特别注意函数的返回值、参数个数和类型以及参数的顺序。例如,将下列数学表达式写成C语言表达式。|3sinx+4 cosx|+ex 其对应的C语言表

4、达式如下:fabs(3*sin(x)+4*cos(x)+exp(x),在C语言中没有求绝对值的运算符,求绝对值必须调用函数fabs()。它的调用形式为fabs(参数)。上式中3*sin(x)+4*cos(x)作为函数fabs的参数。有时调用某些函数并不是为了得到返回值,而只是为了完成某项任务。调用这类函数时,可直接用函数调用语句。例如:scanf(f,&a);*输入变量a的值*printf(6.4f,b);*输出变量b的值*,3.空语句,空语句用一个分号表示,其一般形式为:;它在语法上占有一个简单语句的位置,而执行该语句不做任何操作。空语句常用于循环语句中,构成空循环。,3.1.2 复合语句,

5、复合语句是由花括号将多条语句组合在一起而构成的,在语法上相当于一条语句。复合语句的形式为:内部数据描述语句 数据操作语句1;数据操作语句n;使用复合语句应注意:(1)在复合语句的“内部数据描述语句”中定义的变量,是局部变量,仅在复合语句中有效。(2)复合语句结束的“”之后,不需要再加分号。,例3.1 复合语句。#include main()int xl,y2;int x2;int x3;printf(x=%d,y%dn,x,y);/*x3*/printf(x=%d,y%dn,x,y);/*x=2*/printf(x=%d,y=%dn,x,y);/*x=1*/程序运行结果为:x3,y2x2,y2

6、xl,y2,3.2 数据输入与输出,一般:C语言提供了一些标准的输入/出函数系统函数。3.2.1 字符输入输出函数1.字符输出函数,形式:putchar(c);,功能:向终端(一般为显示器)输出一个字符,其中c为 字符型或整型变量,注意:用该函数时,须用预编译命令:#include stdio.h,#include main()int i=97;char ch=a;putchar(i);*输出字符a*putchar(n);*换行,可以输出控制字符起控制作用*putchar(ch);*输出字符变量ch的值a*程序运行结果为:aa,2字符输入函数,函数原型:int getchar(void);功能

7、:从输入设备(一般为键盘)上输入一个字符,函数的返回值是该字符的ASCII编码值。例如:#include main()int ch;chgetchar();*从键盘输入字符,该字符的ASCII编码值赋给ch*putchar(ch);*输出ch对应的字符*运行该程序时,输入如下:a则变量ch的值为97。程序执行后输出的结果为:a,注意:(1)执行getchar()输入字符时,键入字符后需要敲回车键,回车后,程序才会响应输入,继续执行后续语句。(2)getchar()函数也将回车键作为一个回车符读入。因此,在用getchar()函数连续输入两个字符时要注意回车符。,再举例:#include std

8、io.h main()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(C);,结果:BOY,putchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);,*利用putchar还可输出其它转义字符,结果:B O Y,putchar(101);输出A,putchar();输出,putchar(015);输出,*若将最后一行改为:,3.2.2 格式输出函数printf,1.一般形式函数原型:int printf(char*format,argument,);功能:按规定格

9、式向输出设备(一般为显示器)输出数据,并返回实际输出的字符数;若出错,则返回负数。使用的一般形式为:printf(格式控制字符串,输出项列表);语句中:输出项列表 用“,”号隔开的变量或表达式序列,其变量的值按对应的格式控制符所指定的格式输出。,是C语言中使用得最多的一种输出函数,它可一次按格式输出多个不同类型的数据。,格式控制字符串用双引号“.”括起来的格式符序列。,格式控制字符串由格式说明符和普通字符组成。,2.普通字符 原样输出,1.格式说明符:由%接格式字符组成 如:%f,%d等,例:a=3;b=4;printf(a=%d,b=%d,a,b);,结果:a=3,b=4,无论 a,b中位数

10、多少,均为上述形式:,a=123 b=45,2.格式控制,格式控制由格式控制字符串实现。格式控制字符串由三部分组成:普通字符、转义字符、输出项格式说明。(1)普通字符。普通字符在输出时,按原样输出,主要用于输出提示信息。(2)转义字符。转义字符指明特定的操作,如n表示换行,t表示水平制表等。(3)格式说明部分由“”和“格式字符串”组成:格式字符串。它表示按规定的格式输出数据。格式说明的形式为:flagswidth.precF|N|h|Ltype,3.输出项列表,(1)%d%d的含义是按十进制整型数据格式输出,数据长度为实际长度,如直接用%d,则将出错。,(1)%d:按数据的实际长度输出。(2)

11、%md:m表示输出字段宽度。若实际位数m,左边补空格。(3)%ld:输出长整数,如要指定宽度,则用%mld即可。,例:long a=1234567;printf(%ld,a);,(2)%o:按整型数据的实际长度,以八进制数形式输出整数。,以1的补码形式,int a=1;printf(%d,%o,a,a);,则输出结果:1,177777,注:连符号位一起组成八进制数输出,特例:1存于int单元,如以长整型输出,在%加l,也可指定宽度m,%mo,(3)%x:按整型数据的实际长度,以十六进制数形式输出整数。,例:int a=1;printf(%x,%o,%d”,a,a,a),输出结果:ffff,17

12、7777,1,(4)%u:以十进制数形式输出unsigned型数据。,例:main()unsigned int a=65535;int b=2;printf(a=%d,%o,%x,%un,a,a,a,a);printf(b=%d,%o,%x,%un,b,b,b,b);,a=1,177777,ffff,65535,a=65535,b=2,b=2,177776,fffe,65534,运行结果为:,(5)%mc 以字符形式输出一个字符,m指定输出的宽度,左端补空格。,注:若有一整型变量,其值在0255之间,则可以字符形式输出.,一个字符型变量亦可以一个整型数据输出.,char c=a;printf(

13、%c,c);,例:main()char c=a;int i=97;printf(%c,%dn,c,c);printf(%c,%dn,i,i);,运行结果为:a,97 a,97,也可以指定输出字符宽度,如果有,则输出:a,即c变量输出占3列,前2列补空格.,print(%3c,c),(6)%s:输出一个字符串。,(1)%ms,输出的字符串占m列,如字符串本身长度大于m,则突破m的限制,将字符串全部输出。若串长小于m,则左补空格。,允许一定的编辑即允许%ms,%ms,%m.ns,%m.ns四种形式,每一形式的意义如下:,例:printf(%s,CHINA);,结果:CHINA,(3)%m.ns,输

14、出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。,(4)%ms,其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果nm,则m自动取n值,即保证n个字符正常输出。,(2)%ms,如果串长小于m,则在m列范围内,字符串向左靠,右补空格。,(7)f:按小数形式输出十进制实数,有以下几种形式。,%m.nf,指定输出的数据共占m列,其中有n位小数。如果值长度小于m,则左端补空格。,%mn.f,与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格。,%f,不指定字段宽度,由系统自动指定,使整数部分全部如数输出,并输出6位小数。,%f%m.nf%m.nf,(8

15、)%e 以指数形式按标准宽度输出十进制实数。标准输出宽度共占13位,分别为:尾数的整数部分为非零数字占l位,小数点l位,小数占6位,e占1位,指数正(负)号占l位,指数占3位。,结果:1.23456,共13列,6例,5例,可有%m.ne和%m.ne的形式,e+002,例:printf(%e,123.456),3.2.3 格式输入函数scanf,1.格式输入函数的一般形式函数原型:int scanf(char*format,argument,);函数功能:按规定格式从键盘输入若干任何类型的数据给argument所指的单元。返回读入并赋给argument的数据个数;遇文件结束返回;出错返回0。使用

16、的一般形式为:scanf(格式控制字符串,地址列表);,例:main()int a,b,c;scanf(%d%d%d,运行,机器等待你输入:3 4 5,结果 3,4,5,2.格式控制 格式控制由格式控制字符串实现。(1)格式字符格式字符串形式为:*widthF|Nh|1type与printf函数的格式符有相同之处,也有不同之处。*为输入赋值抑制字符,表示该格式说明要求输入数据,但不赋值,也即在地址列表中没有对应的地址项。例如,语句:scanf(%3d%*5d%f,如果执行时输入:2001200 4.1 则200传给a,1200传给b,4.1传给x,3d控制第一个数据只取3个字符,所以将前面3个

17、字符转换成整型数200;5d控制第二个数据,但从输入流中截取了4个字符后,遇到空格,因此第二个数据只得到了4位数。(2)普通字符 与printf函数的普通字符不同,scanf的格式控制字符串中普通字符是不显示的,而是规定了输入时必须输入的字符。例如:scanf(i=%d,输入格式应为:10,0.3 d,%f说明输入一个整型数和一个浮点数之间要输入一个逗号。,3.地址列表,地址列表是由若干个地址组成的列表,可以是变量的地址、字符串的首地址、指针变量等,各地址间以逗号(,)间隔。格式输入函数执行结果是将键盘输入的数据流按格式转换成数据,存入与格式相对应的地址指向的存储单元中。所以下列scanf函数

18、的调用是错误的:scanf(%d%d,a,b);scanf(%d%d,a+b);a,b表示的是变量a和b的值,不是地址。这种错误是初学者最容易犯的,这也是scanf函数和printf函数不同之处。printf(%d,i);/*将变量i的值输出;*/scanf(%d,&i);/*从键盘输入数据,存放变量i代表的内存空间。*/,4.scanf运行时注意事项,(1)输入数据分隔处理 输入时,数据之间需要用分隔符,例如语句 scanf(%d%d,若输入为:1223100函数截取二位数的整数12存入地址 scanf(%d%c%3d,&a,&ch,&b);若输入为:12 a 23则函数将12存入地址&a,

19、空格作为字符存入地址&ch,字符a作为整型数读入。因此,以上数据为非法输入数据,程序将被终止。,从结构化程序设计角度出发,程序有三种结构:,顺序结构,选择结构,循环结构,3.3 程序举例,这一章介绍顺序结构程序,在顺序结构程序中,一般包括以下几个部分:1.编译预处理命令2.函数:在函数体中,包含着顺序执行的各部分语句。主要有以下几个部分:(1)变量类型的说明部分;(2)提供数据部分;(3)运算部分;(4)输出部分。,表示,先执行A,再执行B.,例3.1 输入圆的半径,输出圆的周长和面积。分析:(1)定义实型变量r、l、s用于存放半径、周长、面积;(2)调用输入函数,输入r;(3)分别利用周长公

20、式和面积公式求出l、s;(4)调用输出函数输出l、s。程序:#include void main()float r,l,s;scanf(%f,/*输出面积,数据共占8个字符宽,4位小数*/,例3.2 输入三个字符,将它们反向输出。分析:(1)定义三个字符变量ch1,ch2,ch3;(2)调用字符输入函数,输入三个字符依次存于ch1,ch2,ch3;(3)按ch3,ch2,ch1顺序输出三个字符。程序:#include void main()char ch1,ch2,ch3;ch1=getchar();ch2=getchar();ch3=getchar();/*依次输入三个字符*/putchar

21、(ch3);putchar(ch2);putchar(ch1);/*反向输出三个字符*/,例3.3 用格式输入函数输入三个字符,并用输出函数反向输出三个字符和它们的ASCII码。分析:处理流程同例3.2。程序:#include void main()char ch1,ch2,ch3;scanf(%c%c%c,例3.4 输入任意三个整数,求它们的和与平均值。分析:(1)输入三个整数存入变量num1,num2,num3;(2)求三个整数的平均值,赋给变量average;(3)输出average。程序:void main()int num1,num2,num3,sum;float average;p

22、rintf(Please input three numbers:);scanf(%d,%d,%d,/*输出平均值*/,例3.5 求方程ax2+bx+c=0的实数根。分析:(1)输入实型数a,b,c,要求满足a0且b2-4ac0;(2)求判别式;(3)调用求平方根函数sqrt(),求方程的根;(4)输出。程序:#includemath.h/*为了使用求平方根函数sqrt()*/void main()float a,b,c,disc,x1,x2;printf(input a,b,c:);scanf(%f,%f,%f,例3.6 从键盘输入一个小写字母,用大写形式输出该字母。分析:(1)输入小写字母存入变量a;(2)转换成大写a=a-32;(3)输出a。程序:#include stdio.h void main()char a;printf(input a lowercase letter:);a=getchar();a=a-32;/*将大写字母转换成对应的小写字母*/printf(%cn,a);,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号