高级程序语言设计第3章.ppt_第1页
高级程序语言设计第3章.ppt_第2页
高级程序语言设计第3章.ppt_第3页
高级程序语言设计第3章.ppt_第4页
高级程序语言设计第3章.ppt_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

,本章导读 C语言是一种结构化程序设计语言,程序的结构可以分为三种基本结构类型,即顺序结构、选择结构、循环结构。各种程序都是由这三种基本结构组成。本章主要介绍了这三种流程结构的语法规则和表现形式 。,返回本书目录,本章主要知识点 (1) 了解结构化程序设计的基本思想。 l (2) 掌握顺序结构的基本语句。 l (3) 掌握选择结构的语句和编程使用。 (4)掌握循环结构的语句和编程使用。,第3章 高级语言程序设计概述,返回本章导读,3.2 选择结构程序设计,3.3 循环结构程序设计,3.1 顺序结构程序设计,第3章 高级语言程序设计概述,3.4 综合举例,返回本章目录,第3章 高级语言程序设计概述,结构化程序设计的基本思想是:任何程序都可以通过顺序结构、选择结构、循环结构表示。 3.1.1 赋值语句 赋值语句是程序中最基本的语句。赋值语句通常由一个赋值表达式加上分号“;”组成,其一般形式为:赋值表达式; 例如: x=10 /* 赋值表达式,非表达式语句 */ x=10; /* 赋值语句 */ x=y=z=5; /* 连续赋值,等效于z=5; y=z; x=y; */,返回本章目录,第3章 高级语言程序设计概述,3.1.2 基本的输入、输出语句 在使用输入输出库函数时,应在源程序的开头使用如下语句: #include 或 #include “stdio.h“ 1格式输入输出(printf函数,scanf函数) (1)scanf函数 scanf函数用于输入指定类型的多个数据,函数的一般形式为: scanf(“格式控制字符串”,地址列表); 一定要注意,地址列表中直接给变量名将会出错,因为这是非法的参数。 scanf(“%d“,a); /* 非法的表示 */ scanf(“%d“, /* 合法的表示 */,返回本章目录,第3章 高级语言程序设计概述,【例3.1】整数的输入方法。 代码如下: #include “stdio.h“ void main() int a,b,c; scanf(“%d%d%d“, /*输出变量中的数据*/ 运行结果: 输入:10 20 30 输出:a=10,b=20,c=30,返回本章目录,第3章 高级语言程序设计概述,各种类型数据的输入方法如下: l 指定输入实数 scanf(“%f“, 输入:123456789 long类型的变量a被赋值为123456789;如果变量a定义的不是正确的数据类型(如int型)则a中数据不会是正确的输入数据。,返回本章目录,第3章 高级语言程序设计概述,l 指定数据所占字符数(宽度) scanf(“%3d%2d“, 输入:11 22 33,返回本章目录,第3章 高级语言程序设计概述,系统把11赋值给a,22被跳过,33赋值给b。 l 输入字符数据 scanf(“%c%c%c“, 输入:i j k 程序会把字符i赋值给变量a,空格 赋值给变量b,然后将字符j赋值给c。 输入:ijk 才能得到a=i,b=j,c=k的结果。 也就是说,如果格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。,返回本章目录,第3章 高级语言程序设计概述,【例3.2】字符的输入方法。. 代码如下: #include“stdio.h“ void main() char a,b; scanf(“a:%c,b:%c“, 运行结果: 输入:a:M,b:N,返回本章目录,第3章 高级语言程序设计概述,(2)printf函数 printf函数的作用是向默认的输出设备输出若干指定类型的数据,函数的一般形式为: printf(“格式控制字符串”,输出表列); 【例3.3】输出字符及其ASCII码。 代码如下: #include “stdio.h“ void main() int x=65,y=97; printf(“%d,%dn“,x,y); printf(“x:%c,y:%cn“,x,y); 运行结果: 输出:65,97 x:A,y:a,第3章 高级语言程序设计概述,2字符的输入输出 (1)getchar函数 getchar函数的功能是从键盘上输入一个字符,其一般形式为: getchar(); 【例3.4】输入单个字符. 代码如下: #include “stdio.h“ void main() char c; c = getchar(); /*取得用户键盘输入字符,赋给字符变量*/ putchar(c); /*将字符变量中的字符输出到屏幕*/ 运行结果: 输入:a /* 输入字符a,回车确定 */ 输出:a /* 输出字符 */,返回本章目录,第3章 高级语言程序设计概述,【例3.5】依次取回输入字符. 代码如下: #include “stdio.h“ void main() char c1,c2,c3; c1 = getchar(); /*取第一个输入字符*/ c2 = getchar(); /*取第二个输入字符*/ c3 = getchar(); /*取第三个输入字符*/ putchar(c1); putchar(c2); putchar(c3); putchar(getchar(); /*getchar函数直接作为表达式使用*/ 运行结果: 输入:abcdefg 输出:abcd,返回本章目录,第3章 高级语言程序设计概述,(2)putchar 函数 putchar 函数是字符输出函数,其功能是在显示器上输出单个字符,函数带有一个参数ch,可以是字符常量或字符型变量。其一般形式为: putchar(ch); 【例3.6】输出单个字符。 #include “stdio.h“ void main() char c1=H,c2=E,c3=L,c4=O; /*定义字符变量并赋值*/ putchar(c1); /*输出字符变量的值*/ putchar(c2);putchar(c3);putchar(c3);putchar(c4); putchar(t); /*输出Tab制表键*/ putchar(87); /*输出字符W,87是其ASCII编码值*/ putchar(!); /*输出字符*/ putchar(n); /*输出回车换行符*/ 运行结果: 输出:HELLO W!,返回本章目录,3.2 选择结构程序设计,3.2.1 复合语句 例如: int x; x=y+z; printf(“%d“,x); 是一条复合语句。复合语句内的各条语句都必须以分号“;”结尾,在括号“”外不能加分号。,返回本章目录,3.2 选择结构程序设计,3.2.2 关系运算符、逻辑运算符、条件运算符 1关系运算符和关系表达式,返回本章目录,3.2 选择结构程序设计,【例3.7】判断关系表达式是否为真,如果为真则输出1,不假则输出0。 #include “stdio.h“ void main() char c1=a,c2=b; int i=10,j=20,k=30; printf(“c1=%c, c2=%cn“,c1,c2); /* 显示变量c1和c2的值 */ printf(“result of c1c2 is: %dn“,c1c2); /* 比较两个字符变量 */ printf(“i=%d, j=%d, k=%dn“, i, j, k); /* 显示变量i、j和k的值 */ printf(“result of k=i+j is: %dn“,k=i+j); /* 比较整型数据,显示表达式 k=i+j的结果 */ printf(“result of c1c2 is: 0 i=10, j=20, k=30 result of k= =i+j is: 1 result of c1i is: 0 ,返回本章目录,3.2 选择结构程序设计,2逻辑运算符和逻辑表达式,返回本章目录,3.2 选择结构程序设计,高,返回本章目录,3.2 选择结构程序设计,例如: ac 等效于 (! a)& (bc) a & !b | c 等效于(a & (!b))| c c = a | b 等效于 c = (a | b) c = ! a + b 等效于 c = (! a)+ b),返回本章目录,3.2 选择结构程序设计,3.2.1 复合语句 3条件运算符和条件表达式 C语言中,条件运算符“?:”是一个唯一的三目运算符。由条件运算符和操作对象构成的条件表达式具有的一般形式为: 表达式1 ? 表达式2 :表达式3,返回本章目录,3.2 选择结构程序设计,3.2.1 复合语句 【例3.8】输入整数x,按下面的函数检验x的正负,并计算x的绝对值。 # include “stdio.h“ void main() int x, y; scanf (“%d“, /* 计算并输出x的绝对值 */ 运行结果: -21 y = -1 abs(x)= 21 ,返回本章目录,3.2 选择结构程序设计,3.2.3 选择结构的程序设计 1if语句 (1)简单if形式 一般语句表示形式为: if (表达式) 语句;,返回本章目录,3.2 选择结构程序设计,【例3.9】输入学生成绩,判断学生成绩是否及格,如果及格则输出“Good”。 # include “stdio.h“ void main() int grade; printf(“Please input your grade:“); /* 打印提示信息,提示输入成绩 */ scanf(“%d“, 运行结果: Please input your grade: 80 Good! ,返回本章目录,3.2 选择结构程序设计,3.2.3 选择结构的程序设计 (2)if else形式 一般语句表示形式为: if (表达式) 语句1; else 语句2;,返回本章目录,3.2 选择结构程序设计,【例3.10】判断两个整数的是否相等,如果相等则输出“Equal!”,否则输出“Unequal!”。 # include “stdio.h“ void main() int a,b; printf(“Please input two integer numbers: “); /* 提示用户输入两个整数 */ scanf(“%d%d“, 运行结果: Please input two numbers: 80 100 Unequal! ,返回本章目录,3.2 选择结构程序设计,(3)if else if形式 一般语句表示形式为: if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; else 语句n;,返回本章目录,3.2 选择结构程序设计,【例3.11】比较两个数的大小。 代码如下: # include “stdio.h“ void main() int a, b; printf(“Please input two integer numbers: “); /* 提示输入两个整数 */ scanf(“%d%d“,/* 如果不相等,当b小于a时 */ ,返回本章目录,3.2 选择结构程序设计,【例3.12】判断学生成绩的级别。 # include void main() int grade; printf(“Please input your grade(0-100):“); /* 提示用户输入一个成绩,要求在0到100范围内 */ scanf(“%d“,/* 如果grade60,显示NOT GOOD表示差 */ 运行结果: Please input your grade(0-100): 89 89 is GOOD! ,返回本章目录,3.2 选择结构程序设计,(4)if 语句的嵌套 if 语句还可以嵌套使用,即在if的分支语句中包括了一个或多个if 语句,例如图3-6所示的情况。,if (表达式1) if (表达式2) 语句1; else 语句2;,if (表达式1) if (表达式2) 语句1; else 语句2; else 语句3;,if (表达式1) if (表达式2) 语句1; else 语句2; else if (表达式3) 语句3; else 语句4;,if (表达式1) if (表达式2) 语句1;,返回本章目录,3.2 选择结构程序设计,【例3.13】比较两个数的大小。 #include “stdio.h“ void main() int a,b; printf(“Please input two numbers: “); /* 提示用户输入两个数 */ scanf(“%d%d“, /* a等于b 时*/ 运行结果: Please input two numbers: 80 100 a=100, b=80 ab ,返回本章目录,3.2 选择结构程序设计,【例3.14】求三个数中的最大数。 # include “stdio.h“ void main() int x, y, z, max; printf(“Please input three integer number:“); scanf(“%d%d %d“, 运行结果: Please input three number: 11 11 33 max =33 ,返回本章目录,3.2 选择结构程序设计,2switch语句 switch语句的一般形式如下: switch (表达式) case常量表达式C1: 语句组1; case常量表达式C2: 语句组2; case常量表达式Cn: 语句组n; default : 语句组m; ,返回本章目录,3.2 选择结构程序设计,2switch语句 【例3.15】输出一个星期七天中的某一天所对应的英文名称。 # include “stdio.h“ void main() int day; printf(“Please input a integer number between 1 and 7:”); scanf(“%d“, ,返回本章目录,3.2 选择结构程序设计,运行结果: Please input a integer number between 1 and 7:5 Friday Saturday Sunday Error,返回本章目录,3.2 选择结构程序设计,【例3.16】判断用户输入字符是数字还是空格或其他符号。 # include “stdio.h“ void main() char c; printf(“Please input a character:“); scanf(“%c“, /* 输入字符是其他字符 */ ,返回本章目录,3.3 循环结构程序设计,3.3.1 循环结构的程序设计 C语言提供了while语句、do-while语句和for语句等来实现循环结构。 1while语句 while语句是当型循环控制语句。while语句的一般形式为: while(表达式) 语句,返回本章目录,3.3 循环结构程序设计,【例3.17】使用while语句求5的阶乘5!。 #include “stdio.h“ void main() int i=1,mul=1; /*i是循环的控制变量,此处为它赋初值;mul为存放结果的变量。*/ while(i=5) /*表达式为循环的条件*/ mul=mul*i; /*花括号内为循环体*/ i+; printf(“mul=%dn“,mul); 运行结果: mul=120,返回本章目录,3.3 循环结构程序设计,2do-while语句 do-while语句是直到型循环控制语句。do-while语句的一般形式为: do 语句 while(表达式);,返回本章目录,3.3 循环结构程序设计,【例3.18】使用do-while语句求5的阶乘5!。 #include “stdio.h“ void main() int i=1,mul=1; /*i是循环的控制变量;mul为存放结果的变量。*/ do mul=mul*i; /*花括号内为循环体*/ i+; while(i=5); /*表达式为循环的条件,最后的分号;不能少*/ printf(“mul=%dn“,mul); 运行结果: mul=120,返回本章目录,3.3 循环结构程序设计,3for语句 for语句是循环控制结构中使用最广泛的一类循环控制语句,它特别适合循环次数事先能确定的情况。它的一般形式为: for(表达式1;表达式2;表达式3) 语句,返回本章目录,3.3 循环结构程序设计,【例3.19】使用for语句求5的阶乘5!。 #include “stdio.h“ void main() int i,mul=1; for(i=1;i=5;i+) mul=mul*i;/*循环体*/ printf(“mul=%dn“,mul); 运行结果: mul=120,返回本章目录,3.3 循环结构程序设计,4break与continue语句 以do-while语句为例说明break语句的作用如下: do 语句1 if(条件) break; 语句2 while(表达式);,返回本章目录,3.3 循环结构程序设计,【例3.20】从键盘输入一串字符,求其中小写字母的个数,当遇到回车时停止计数。 #include “stdio.h“ void main( ) char c; int i=0; do c=getchar(); /*读取一个字符*/ if (c=a 运行结果: 输入:abcdEEEF 输出:i=4,返回本章目录,3.3 循环结构程序设计,(2)continue语句 do 语句1 if(条件) continue; 语句2 while(表达式);,返回本章目录,3.3 循环结构程序设计,【例3.21】从键盘输入一串字符,求前10个字符中小写字母的个数。 #include “stdio.h“ void main() int i=0; int j=0; char c; do i+; c=getchar(); /*读取一个字符*/ if(c=a 运行结果: 输入:a00000a000a 输出:j=2,返回本章目录,3.3 循环结构程序设计,5goto语句 goto语句也被称为无条件转移语句,其一般形式为: goto语句标号 goto语句的作用是无条件转向“语句标号”处执行。 【例3.22】用if语句和goto语句构成循环,求5的阶乘5!。 #include “stdio.h“ void main() int i,mul=1; i=1; loop:if(i=5) /*loop为语句标号*/ mul=mul*i; i+; goto loop; /*无条件转向语句标号loop*/ printf(“mul=%dn“,mul); 运行结果: 输出:mul=120,返回本章目录,3.3 循环结构程序设计,3.3.2 循环结构类型的选择及转换 1几种循环语句的比较 (1)四种循环(while、do-while、for、goto)可以互相替换,但应尽量少用goto。 (2)while、do-while语句在while后面指定循环条件;for语句在“表达式2”中指定循环条件。 (3)while、do-while在循环前指定循环的初始条件;而for循环在“表达式1”中指定循环的初始条件。 (4)while、for循环先判循环条件,后执行;do-while循环先执行,后判循环条件。 (5)while、do-while、for循环均可用break语句跳出循环,用continue语句提前结束本次循环体的执行。,返回本章目录,3.3 循环结构程序设计,2循环结构类型的选择 一般情况下,while、do-while、for可以通用。但在实际情况中,何时选用何种语句仍然有微小的差别。 (1)如果循环的次数能够事先预见,那么一般采用for语句;如果循环的次数是根据循环体的执行情况而定,那么一般采用while或do-while语句。 (2)当循环体至少要被执行一次时,采用do-while语句,否则,采用while或for语句。 3循环结构的相互转换 在3.3.1节中分别采用while循环、do-while循环和for循环来解决5的阶乘5!的求解充分说明了一般情况下,这3类循环时可以互相转换的。,返回本章目录,3.3 循环结构程序设计,3.3.3 循环的嵌套 【例3.23】利用嵌套循环求5!+4!+3!+2!+1! #include “stdio.h“ void main() int i,j,b,sum=0; for(i=1;i=5;i+) /*外层循环*/ for(j=1,b=1;j=i;j+) /*内层循环*/ b=b*j; /*内层循环体*/ sum=sum+b; printf(“sum=%dn“,sum); 运行结果: 输出:sum=153,返回本章目录,3.4 综 合 举 例,【例3.24】输入圆的半径,求圆的周长和面积。 #include “stdio.h“ void main( ) float r; printf(“Please input the radius:n“); scanf(“%d“, 运行结果: Please input the radius: 30 circumference = 188.50 area = 2827.43,返回本章目录,3.4 综 合 举 例,【例3.26】判断输入的年份是否是闰年。 闰年是能被4整除但不能被100整除的年份,或可以被400整除的年份。 # include “stdio.h“ void main() char year, leap; printf(“Please input the year:“); scanf(“%d“, ,返回本章目录,3.4 综 合 举 例,【例3.27】已知某销售公司员工的底薪为500,员工每月的实际薪金为该月该员工实际销售提成加上底薪,按下面的利润提成方式,计算员工的当月薪水。 销售1000元以下:没有提成 销售10005000元:提成10% 销售500010000元:提成15% 销售1000050000元:提成20% 销售50000元以上:提成25%,返回本章目录,3.4 综 合 举 例,# include “stdio.h“ void main() float profit; double ratio; double salary = 500; printf(“Please input the profit:“); scanf(“%f“, 运行结果:Please input the profit: 35000 The salary is 7500.00 ,返回本章目录,3.4 综 合 举 例,【例3.28】从键盘输入任意两个数和一个运算符(+、-、*、/),根据输入的运算符对两个数进行计算,输出结果。 # include “stdio.h“ void main() float m, n, result; /* 存放两个操作数和结果的变量 */ char op; /* 存放运算符的变量 */ int tag = 0; /* 运算标志,值为0表示合法运算;值为1表示非法运算 */ printf(“Please input two number:“); scanf(“%f, %f “, /* 乘法运算 */,返回本章目录,3.4 综 合 举 例,case / : if(!n) printf(“Divisor is zero!n“); tag = 1; else /* 除数不为0 */ result = m / n; break; def

温馨提示

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

评论

0/150

提交评论