C语言程序设计的三种基本结构.ppt_第1页
C语言程序设计的三种基本结构.ppt_第2页
C语言程序设计的三种基本结构.ppt_第3页
C语言程序设计的三种基本结构.ppt_第4页
C语言程序设计的三种基本结构.ppt_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第2章C语言程序设计的三种基本结构,C语言程序设计,2019/11/25,2,2.1顺序结构程序设计2.2选择结构程序设计2.3循环结构程序设计,本章主要内容,2019/11/25,3,2.1.1C语句2.1.2字符数据的输入与输出2.1.3格式输入与输出2.1.4顺序结构程序设计应用举例,2.1顺序结构程序设计,返回,2019/11/25,4,2.1.1C语句,一个C程序由若干个源程序文件组成,一个源文件由若干个函数和预处理命令及全局变量声明部分组成,一个函数由数据声明部分和执行语句部分组成,执行语句部分就是由C语句组成的。C程序结构如图2-1所示。,图2-1,2019/11/25,5,C语句可分为以下5类:1表达式语句表达式语句由一个表达式加上分号“;”组成。执行表达式语句就是计算表达式的值。其一般形式为:在表达式语句中,最常用的是赋值语句。例如:a=7;将7赋给a。x=y+z;将y与z之和赋给x。,2.1.1C语句,表达式;,2019/11/25,6,2.1.1C语言基本语句,赋值运算符“=”右边的表达式也可以是一个赋值表达式,一般形式为:展开为:例如:a=b=c=9;与赋值语句不同的是,在声明变量时,不允许连续给多个变量赋初值。以下声明变量的方式是错误的:inta=b=c=9;,变量=(变量=表达式);,变量=变量=表达式;,2019/11/25,7,必须改为:inta=9,b=9,c=9;又如:i+;自增1语句,i值增1,相当于i=i+1。而a*b;因计算结果不能保留,没有实际意义。说明:1)一个C语句必须在最后添加分号,分号是C语句中不可缺少的一部分。2)任何表达式都可以加一个分号成为语句。,2019/11/25,8,2函数调用语句函数调用语句由函数名、实际参数加上分号“;”组成。其一般形式为:例如:printf(ThisisaCProgram);调用库函数,输出字符串ThisisaCProgram。max(a,b);调用自定义的max函数。,函数名(实际参数表);,2019/11/25,9,3控制语句控制语句用于控制程序的流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。语言有9种控制语句,可分成以下3类:条件判断语句:if语句、switch语句循环执行语句:do-while、while和for语句转向语句:break语句、goto语句、continue语句、return语句例如:if(a0)printf(OK);,2019/11/25,10,4复合语句把多个C语句用花括号“”括起来组成一个语句,该语句为复合语句。例如下述是一个复合语句:z=x;x=y;y=z;,2019/11/25,11,5空语句只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。下面是一个空语句:;在程序中空语句可用来作空循环体,空循环体什么也不做。例如:while(getchar()!=n);语句的功能是,从键盘输入的字符如果不是回车则重新输入,直到输入回车为止。,2019/11/25,12,2.1.2字符数据的输入与输出,输入/输出是以计算机为主体而言的。在语言中,所有的数据输入/输出都是由库函数完成的,因此都是函数语句。在使用语言库函数时,要用预编译命令#include将有关“头文件”包括到源文件中。#include或#includestdio.h,2019/11/25,13,2.1.2字符数据的输入与输出,1putchar函数(字符输出函数)putchar函数是字符输出函数,其功能是向终端(如显示器)输出单个字符。其一般形式为:例如:putchar(A);输出大写字母Aputchar(c);输出字符变量c的值也可以输出转义字符,如:putchar();输出字符“”,putchar(字符变量);,2019/11/25,14,【例2-1】编写程序,输出英文单词Good。#includevoidmain()chara=G,b=o,c=o,d=d;putchar(a);putchar(b);putchar(c);putchar(d);putchar(n);,程序运行结果:Good,2019/11/25,15,2.1.2字符数据的输入与输出,2getchar函数(字符输入函数)getchar函数的功能是从终端(如键盘)输入一个字符。getchar函数没有参数,其一般形式为:getchar函数只能接收一个字符,通常把接收的字符赋给一个字符变量或整型变量。如:charch;ch=getchar();,getchar();,2019/11/25,16,2.1.2字符数据的输入与输出,getchar函数也可以作为函数语句的一个参数被使用。如:printf(%c,getchar();putchar(getchar();如果通过键盘输入小写字母a,则以上两个函数语句均输出小写字母a。,2019/11/25,17,【例2-2】将输入的单个字符原样输出。#includevoidmain()charch;ch=getchar();putchar(ch);,程序运行情况如下:如果输入:A运行结果:A,2019/11/25,18,2.1.3格式输入与输出,1printf函数(格式输出函数)printf函数称为格式输出函数,其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。printf函数调用的一般形式为:,printf(“格式控制”,输出表列);,2019/11/25,19,2.1.3格式输入与输出,1)格式控制格式控制字符串用于指定输出格式,它包括两种信息:格式说明和普通字符。格式说明:由“%”和格式字符组成,说明输出数据的类型、形式、宽度、小数位数等。printf函数中使用的格式字符主要包括:,2019/11/25,20,2.1.3格式输入与输出,d格式符:以十进制形式输出带符号整数(正数不输出符号)。有以下几种用法:%d:按十进制整型数据的实际长度输出。%md:m为指定的输出字段的宽度,即输出数据在输出设备上所占的列数。如果数据的位数小于m,则左端补以空格;如果大于m,数据则按实际位数输出。例如:inta=123,b=456;printf(%5d,%2d,a,b);%ld:输出长整型数据。,2019/11/25,21,2.1.3格式输入与输出,o格式符:以八进制整数形式输出(不输出前缀0),输出的数据不带符号。x或X格式符:以十六进制形式输出无符号整数(不输出前缀0 x)。例如:inta=-1;printf(%d,%o,%x,a,a,a);输出结果为:-1,177777,ffffu格式符:以十进制形式输出无符号整数,输出长整型时用lu。c格式符:用来输出一个字符,也可以指定输出字符的宽度。例如:printf(%c,%3c,a,b);,2019/11/25,22,2.1.3格式输入与输出,s格式符:用来输出指定的字符串。s格式符有几种用法:%s:原样输出给定的字符串。例如:printf(%s,GOOD);%ms:m为输出字符串所占的列数。如果字符串的位数小于m,字符串左端补以空格;如果字符串的位数大于m,字符串将原样输出。例如:printf(%2s%6s,Good,Night);%-ms:如果字符串长度小于指定的宽度,字符串向左边靠,在字符串的右边补空格。例如:printf(%-6s,free);,2019/11/25,23,2.1.3格式输入与输出,%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,字符串的左侧补空格。%-m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的左侧,字符串的右侧补空格。如果n大于m,将保证n个字符全部正常输出。例如:printf(%5.4s,%-5.3s,%2.4s,Shang,Shang,Shang);,2019/11/25,24,2.1.3格式输入与输出,f格式符:以小数形式输出单、双精度实数,小数位数为6位。有以下几种用法:%f:不指定字段宽度,由系统自动指定,使整数部分全部输出,并输出6位小数。单精度实数的有效数字位数一般为7位,双精度实数的有效数字位数一般为16位。例如:floatx=11111.111;doubley=22222222222222.2222;printf(%f,%fn,x*2,y*3);输出结果:22222.220000,66666666666666.660000,2019/11/25,25,2.1.3格式输入与输出,%m.nf:指定输出的数据共占m列,其中有n位小数。如果数值长度小于m,将在输出的数值左端补空格。%-m.nf:与%m.nf基本相同。不同的是,如果数值长度小于m,将在输出的数值右端补空格。例如:floata=345.6789;printf(%7.1f,%-7.2fn,a,a);输出结果为:345.7,345.68,2019/11/25,26,2.1.3格式输入与输出,e或E格式符:以指数形式输出实数,用e时指数以e表示,如1.2e3,用E时指数以E表示,如1.2E3。g或G格式符:用来输出实数,它根据数值的大小,自动选f格式或e格式,且不输出无意义的零。用G时,若以指数形式输出,则指数以大写表示。p格式符:输出变量的内存地址。普通字符:在显示中起提示作用,输出时原样输出。例如:printf(a=%d,b=%dn,a,b);,2019/11/25,27,2.1.3格式输入与输出,使用printf函数时需要注意以下几点:(1)除了X、E、G外,其他格式字符必须用小写字母,如%d不能写成%D。(2)可以在“格式控制”字符串中包含转义字符,例如:printf(%dt%dn,123,789);(3)如果需要输出字符“%”,则应该在“格式控制”字符串中用连续两个%表示。,2019/11/25,28,2.1.3格式输入与输出,2)输出表列输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。如:printf(max=%d,min=%d,a,b);双引号中的两个“%d”是格式说明,表示指定的变量a和b按十进制整型输出,双引号中其余内容是普通字符,原样输出。“a,b”为输出表列,变量之间用逗号隔开。假设a和b的值分别是10和7,则输出为:max=10,min=7,2019/11/25,29,【例2-3】分析下面程序的输出结果。#includevoidmain()inta=65,b=66;printf(%d%dn,a,b);printf(a=%d,b=%dn,a,b);printf(%c,%cn,a,b);,程序运行结果:6566a=65,b=66A,B,2019/11/25,30,【例2-4】格式字符应用实例。#includevoidmain()inta=65;floatb=12.1234567;doublec=12345.1234567;chard=A;printf(a=%d,%4d,%-4d,%o,%x,%cn,a,a,a,a,a,a);printf(b=%f,%lf,%3.4f,%-6.1f,%en,b,b,b,b,b);printf(c=%lf,%f,%8.4lfn,c,c,c);printf(d=%c,%3c,%-4c,%dn,d,d,d,d);,运行结果:a=65,65,65,101,41,Ab=12.123457,12.123457,12.1235,12.1,1.21235e+01c=12345.123457,12345.123457,12345.1235d=A,A,A,65,2019/11/25,31,2.1.3格式输入与输出,使用printf函数时要注意输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右,也可从右到左。TurboC是按从右到左进行的。【例2-5】分析输出表列中的求值顺序。#includevoidmain()inti=6;printf(%d,%d,%d,%dn,-i,+i,i+,i-);,程序运行结果:6,7,5,6,2019/11/25,32,2.1.3格式输入与输出,2scanf函数(格式输入函数)scanf函数的功能是按指定的格式从终端输入数据,并将输入的数据存放到指定的变量中。scanf函数的一般形式为:如:scanf(%d%d,“%d%d”表示输入整型数据,,2019/11/25,33,2.1.3格式输入与输出,1)格式控制格式控制字符串用于说明数据的类型及格式。其中包括两部分内容:格式说明和输入数据分隔符。常用的格式字符如下:d,i:输入有符号的十进制整数。u:输入无符号的十进制整数。o:输入无符号的八进制整数。X,x:输入无符号的十六进制整数。f:输入实型数c:输入单个字符。s:输入字符串。,2019/11/25,34,2.1.3格式输入与输出,可用的附加字符有:l:用于输入长整型数据(如%ld,%lo,%lx)及double型数据(如%lf或%le)。h:用于输入短整型数据(如%hd,%ho,%hx)。m:指定输入数据所占宽度。例如:scanf(%3d%2d,若输入101112,将把10赋给变量a,11被跳过,12赋给变量b。“%*d”表示读入整数但不赋给任何变量。,2019/11/25,35,2.1.3格式输入与输出,2)地址表列地址表列中给出各变量的地址,地址是由地址运算符“,2019/11/25,36,2.1.3格式输入与输出,【例2-6】格式输入与格式输出函数的应用示例。#includevoidmain()inta,b,c;charch1,ch2;floatd,e;scanf(%d%d%d,程序运行情况如下:101612AB3.56a=10,b=161,c=2ch1=A,ch2=Bd=3.500000,e=6.000000,2019/11/25,37,2.1.4顺序结构程序设计应用举例,【例2-7】输入两个小写字母,输出其ASCII码和对应的大写字母。#includevoidmain()charch1,ch2;printf(inputcharacterch1,ch2:);scanf(%c%c,程序运行结果:inputcharacterch1,ch2:ab97,98A,B,2019/11/25,38,2.1.4顺序结构程序设计应用举例,【例2-8】已知圆的半径r10,试用C语言编程求圆的周长p=2r和圆的面积s=r2。#includevoidmain()floatpi,r,p,s;r=10;pi=3.14;p=2*pi*r;s=pi*r*r;printf(p=%.2fn,p);printf(s=%.2fn,s);,程序运行结果:p=62.80s=314.00,2019/11/25,39,2.1.4顺序结构程序设计应用举例,【例2-9】计算任意两个整数的和、差。#inclduevoidmain()inta,b,c,d;scanf(%d%d,程序运行情况如下:12912+9=21,12-9=3,2019/11/25,40,2.2选择结构程序设计,2.2.1关系运算符与关系表达式2.2.2逻辑运算符与逻辑表达式2.2.3if语句的3种形式2.2.4if语句的嵌套2.2.5条件运算2.2.6switch语句2.2.7选择结构程序设计举例,返回,2019/11/25,41,2.2.1关系运算符与关系表达式,1.关系运算符关系运算符是双目运算符,用来比较两个运算量之间的关系。关系运算的结果是“真”或“假”,且只能是二者之一。C语言提供6种关系运算符,它们分别是:(大于)=(大于或等于)=(等于)!=(不等于)前四种关系运算符(、=)的优先级高于后两种(=、!=)。关系运算符的优先级低于算术运算符。,2019/11/25,42,2.2.1关系运算符与关系表达式,2.关系表达式关系表达式就是指用关系运算符将两个表达式连接起来的式子。例如:1020、A+12为“真”,其值为1;表达式A+1b)scanf(%c%c,2019/11/25,58,2.2.5条件运算,在if语句中,当判断表达式的值为“真”或“假”时,都只执行单个的赋值语句且给同一个变量赋值,此时,可使用简单的条件运算来实现。条件运算符是一个三目运算符,它有3个参与运算的量。由条件运算符组成条件表达式的一般形式为:求值规则是:如果表达式1的值为真,则以表达式2的值作为整个条件表达式的值,如果表达式1的值为假,则以表达式3的值作为整个条件表达式的值。,表达式1?表达式2:表达式3,2019/11/25,59,图2-5条件表达式的执行过程,2019/11/25,60,例如:if(ab)max=a;elsemax=b;可用条件表达式写成:max=(ab)?a:b;其执行语义是:若ab为真,则把a赋给max,否则把b赋给max。,2019/11/25,61,【例2-15】用条件表达式实现:输出a、b、c三个变量中的最大值。#includevoidmain()inta,b,c,max;scanf(%d%d%d,如果输入:291679运行结果:max=79,2019/11/25,62,2.2.6switch语句,语言提供了另一种用于直接处理多分支选择的switch语句,其一般形式为:,switch(表达式)case常量表达式1:语句1;case常量表达式2:语句2;case常量表达式n:语句n;default:语句n+1;,2019/11/25,63,2.2.6switch语句,其语义是:计算switch后面表达式的值,将该值与逐个case后的常量表达式的值相比较,当表达式的值与某个常量表达式的值相等时,就执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句和default后的语句。如果表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。,2019/11/25,64,【例2-16】,在每一个case语句之后增加一个break语句,使每一次执行之后均可跳出switch语句,从而避免输出不应有的结果。程序如下:,#incdluevoidmain()inta;printf(pleaseinput1-7number:);scanf(%d,2019/11/25,65,2.2.7选择结构程序设计举例,【例2-11】输入3个整数,将它们按由小到大的顺序输出。请见教材中的实例。【例2-12】请见教材中的实例。【例2-13】请见教材中的实例。【例2-14】请见教材中的实例。,2019/11/25,66,2.3循环结构程序设计,2.3.1while语句2.3.2do-while语句2.3.3for语句2.3.4循环的嵌套2.3.5break语句和continue语句2.3.6循环结构程序设计举例,返回,2019/11/25,67,2.3.1while语句,while语句用来实现“当型”循环结构,其特点是:先判断循环条件,后执行循环体语句。其一般形式为:其语义是:先判断循环条件,如果循环条件成立(值为非0),执行循环体语句。当循环条件不成立(值为0)时,退出循环体,执行后继语句。,while(循环条件)循环体语句,2019/11/25,68,2.3.1while语句,while语句的流程图如图2-6所示。,图2-6,2019/11/25,69,【例2-20】编写程序,输出1100之间所有能被6整除的数。#includevoidmain()inti=1;while(i=100)if(i%6=0)printf(%d,i);i+;,程序运行结果:6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,2019/11/25,70,2.3.2do-while语句,do-while语句用来实现“直到型”循环结构,其特点是:先执行一次循环体语句,然后判断循环条件是否成立。do-while语句的一般形式:其语义:先执行一次循环体语句,再判断循环条件,如果循环条件成立(值为非0),将返回继续执行循环体语句,如此反复,直到循环条件不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论