版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一讲 练习 第二讲 练习 2 第三讲 练习 3 第四讲 练习 4 第五讲 练习 5 第六讲 练习 6,第四章 C程序流程设计,4.1 C语句概述 C语句:以“ ;”作分隔符,编译后产生机器指令. C语句分类 表达式语句:表达式加分号构成。,空语句: ;,程序控制语句(9种):,如 total=total+limit; a=3; func( ); printf(“Hello,world!n”);,复合语句:用 括起来的一组语句 一般形式: 数据说明部分; 执行语句部分; 说明: “”后不加分号 语法上和单一语句相同 复合语句可嵌套 用途: 用于语法上只允许单个语句而处理上需要多个语句的地方,主
2、要用做 if 语句的子句及循环语句的循环体。 如 if(ab)t=a;a=b;b=t; 用于改变嵌套 if-else 语句的配对规则,4.2 程序的三种基本结构 结构化程序设计 基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto) 结构化程序:由三种基本结构反复嵌套构成的程序叫 优点:结构清晰,易读,提高程序设计质量和效率 三种基本结构 顺序结构,if,0(假),非0(真),if,4.3 选择型程序设计 if语句(条件选择语句) if语句的三种形式 形式一: 格式:if (expression) statement 执行过程:,例:if (xy) printf(“%d
3、”,x);,if.else.,0(假),非0(真),如果表达式为真(非0),电脑将执行语句1,if.else.,然后跳过语句2,执行下面的语句,if.else.,如果表达式为假,电脑将跳过语句1,执行语句2,然后继续执行下面的语句,4.3 选择型程序设计 if语句(条件选择语句) if语句的三种形式,形式二: 格式:if (expression) statement1 else statement2 执行过程:,例:if (xy) max=x; else max=y;,形式三: 格式:,if ( expr1 ) statement1 else if (expr2 ) statement2 el
4、se if (expr3 ) statement3 . else statementn ,执行过程:,例:if (salary1000) index=0.4; else if (salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0;,如:if(a=b,说明: if后面的表达式类型任意,语句可以是复合语句 if(x) if(x!=0) if(!x) if(x=0),例 考虑下面程序的输出结果: #include main() int x,y; scanf(“
5、%d,%d”, ,Compile Error!,/*ch4_1.c*/ #include main() int x,y; printf(Enter an integer:); scanf(%d, ,例 求一个数的绝对值,运行:Enter an integer:-12 integer:-12-absolute value :12,可用条件运算符代替此判断,/*ch4_2.c*/ #include main() int a,b; printf(Enter integer a:); scanf(%d, ,例 输入两个数并判断两数相等否,运行:Enter integer a:12 Enter inte
6、ger b:12 a=b,运行:Enter integer a:12 Enter integer b:9 a!=b,/*ch4_3.c*/ #include main() char c; printf(Enter a character:); c=getchar(); if(c=0 ,例 判断输入字符种类,运行:Enter a character: The character is a control character,运行:Enter a character:8 The character is a digit,运行: Enter a character: D The character
7、is a capital letter,运行: Enter a character: h The character is a lower letter,运行: Enter a character:, The character is other character,if语句嵌套: 一般形式:,例 输入两数并判断其大小关系,/*ch4_4.c*/ #include main() int x,y; printf(Enter integer x,y:); scanf(%d,%d, ,运行:Enter integer x,y:12,23 XY Enter integer x,y:12,12 X=Y,
8、if else 配对原则:缺省 时,else总是和它上面离它最近的未配对的if配对,例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);,修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);,实现if else 正确配对方法:使用复合语句,加 ,例 考虑下面程序输出结果: main() int x=100,a=10,b=20; int v1=5,v2=0; if(ab) if(b!=15) if(!v1) x=1; else if(v2) x=10; x=-1; pri
9、ntf(“%d”,x); ,结果:-1,习题:第四章 15,17,19,22,25,26,61,65,6872,7983,上机练习 1: 在 E: 盘建立学号(后 3 位)文件夹 在此文件夹下编辑下列程序验证结果,保存文件名与题号一致:,课件下载: 7 /pub,习题 第四章:65,68,69,72,79,编程:第四章 119,120,121,122 上传作业: (1)保证学号文件夹中有相应的 exe 文件 (2)将学号文件夹复制到: /incoming/上传作业,习题:第四章 8486,1
10、02,switch语句(开关分支语句) 一般形式:,switch( 表达式) case E1: 语句组 1; break; case E2: 语句组 2; break; . case En: 语句组 n; break; default: 语句组 ; break; ,执行过程:,说明: switch,case 和 default 是关键字。Switch 是多分支选择语句的标志,case 和 default 只能在 switch 语句中使用( case 子句和 default 子句) switch 后面的表达式是选择条件(简称选择表达式)。选择表达式可以为任何整型表达式、字符型表达式或枚举型表达式
11、 case 后面的常量表达式(简称 case 常量)的值是选择表达式可能的取值,通常为常量或符号常量,类型应与选择表达式的类型一致(整型) 括起来的部分是 switch 语句体, 不能省略。switch 语句体由多个 case 和至多一个(可以没有)default 组成,说明: E1,E2,En是常量表达式,且值必须互不相同 case 与 E1,E2,En 之间的空格不可缺 语句标号作用,必须用break跳出 case后可包含多个可执行语句,且不必加 switch可嵌套 多个case可共用一组执行语句,如: case A: case B: case C: printf(“score60n”);
12、 break; .,例 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); ,break; break; break; break;,运行结果:score为5时,输出: Very good! Good! Pass! Fail! data error!,运行结果:score为5时,输出: Very good!,例 #include void mai
13、n() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;b+; break; case 3: a+;b+; printf(“na=%d,b=%d”,a,b); ,运行结果:a=2,b=1,/*ch4_5.c*/ #include main() int c; printf(Enter m or n or h or other:); c=getchar(); switch(c) case m: printf(nGood morning!n);break
14、; case n: printf(nGood night!n); break; case h: printf(nHello!n); break; default : printf(n?n); break; ,例 根据输入字母输出字符串,习题:第四章 108,109,112,115,116,117,126,转 61,4.4 循环型程序设计 概述 C语言可实现循环的语句: 用goto 和 if 构成循环 while 语句 do while 语句 for 语句 goto语句及用goto构成循环 goto语句一般格式:,goto 语句标号; . 标号:语句;,功能:无条件转移语句 说明: 标号是标识符
15、 标号只能出现在goto所在函数内,且唯一 标号只能加在可执行语句前面 限制使用goto语句,例 用if 和goto语句构成循环,求,/*ch5_1.c*/ #include main() int i,sum=0; i=1; loop: if(i=100) sum+=i; i+; goto loop; printf(%d,sum); ,sum=0+11 sum=1+23 sum=3+36 sum=6+410 sum=4950+100=5050,例 从键盘输入一组数据,以0结束输入,求数据和,/*ch5_11.c*/ #include main() int number,sum=0; read_
16、loop: scanf(%d, ,while语句 一般形式:,while(表达式) 循环体语句;,执行流程:,特点:先判断表达式,后执行循环体 说明: 循环体有可能一次也不执行 循环体可为任意类型语句 下列情况,退出while循环 条件表达式不成立(为零) 循环体内遇break,return,goto 无限循环: while(1) 循环体;,例 用while循环求,/*ch5_2.c*/ #include main() int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum); ,例 显示110的平方,/*ch5_21.c*/ #
17、include main() int i=1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i+; ,运行结果: 1*1=1 2*2=4 3*3=9 4*4=16 5*5=25 6*6=36 7*7=49 8*8=64 9*9=81 10*10=100,习题: 第五章 1,2,3,811,13,dowhile语句 一般形式:,do 循环体语句; while(表达式);,执行流程:,特点:先执行循环体,后判断表达式 说明: 至少执行一次循环体 dowhile可转化成while结构,例 用dowhile循环求,/*ch5_3.c*/ #include main()
18、 int i,sum=0; i=1; do sum+=i; i+; while(i=100); printf(%d,sum); ,例 while和dowhile比较,/*ch5_4.c*/ #include main() int i,sum=0; scanf(%d, ,main() int i,sum=0; scanf(%d, ,习题: 第五章 14,1922,for语句 一般形式:,for(expr1 ; expr2 ; expr3) 循环体语句,执行流程:,for语句一般应用形式:,for(循环变量赋初值;循环条件;循环变量增值) 循环体语句 ,说明: for语句中expr1, expr2
19、 ,expr3 类型任意,都可省略,但分号;不可省 无限循环: for(;) for语句可以转换成while结构,expr1; while(expr2) 循环体语句; expr3; ,例:#include main( ) int i=0; for(i=0;i10;i+) putchar(a+i); ,运行结果: abcdefghij,例:#include main( ) int i=0; for(;i10;i+) putchar(a+i); ,例:#include main( ) int i=0; for(;i10;) putchar(a+(i+); ,例:#include main( ) i
20、nt i=0; for(;i10;putchar(a+i),i+) ,;,;,main() int i,j,k; for(i=0,j=100;i=j;i+,j-) k=i+j; printf(%d+%d=%dn,i,j,k); ,#include main() char c; for(;(c=getchar()!=n;) printf(%c ,c); ,#include main() int i,c; for(i=0;(c=getchar()!=n;i+=3) printf(%c,i+c); ,运行结果: 0+100=100 1+99=100 . 50+50=100,运行结果: 123 159
21、,上机练习 2: 在 E: 盘建立学号(后 3 位)文件夹 在此文件夹下编辑下列程序验证结果,保存文件名与题号一致:,课件下载: 7 /pub,习题 第四章:108,117,124,128,/*ch5_2.c*/ #include main() int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum); ,/*ch5_21.c*/ #include main() int i=1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i+;
22、 ,/*ch5_3.c*/ #include main() int i,sum=0; i=1; do sum+=i; i+; while(i=100); printf(%d,sum); ,例ch5_4.c 用for循环求,#include main() int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(%d,sum); ,例 ch5_101.c: #include main( ) int i=0; for(i=0;i10;i+) putchar(a+i); ,/* ch5_102.c */ main() int i,j,k; for(i=0,j=100
23、;i=j;i+,j-) k=i+j; printf(%d+%d=%dn,i,j,k); ,/* ch5_103.c */ #include main() char c; for(;(c=getchar()!=n;) printf(%c ,c); ,请输入一串字符后回车 观察程序的运行结果,/* ch5_104.c */ #include main() int i,c; for(i=0;(c=getchar()!=n;i+=3) printf(%c,i+c); ,上传作业: (1)保证学号文件夹中有相应的 exe 文件 (2)将学号文件夹复制到: /incom
24、ing/3班第4章练习2,习题: 第五章 1,2,3,811,13,14,1922,上机练习 3: 在 E: 盘建立学号(后 3 位)文件夹 在此文件夹下编辑下列程序验证结果,保存文件名与题号一致:,课件下载: 7 /pub,习题 第五章:8,9,10,11,13,19,20,21 22:如何设计,能打印出所有可能的取值?,2. 上传作业: (1)保证学号文件夹中有相应的 exe 文件 (2)将学号文件夹复制到: /incoming/3班第4章练习3,for语句 一般形式:,for(expr
25、1 ; expr2 ; expr3) 循环体语句,循环的嵌套 三种循环可互相嵌套,层数不限 外层循环可包含两个以上内循环,但不能相互交叉 嵌套循环的执行流程,嵌套循环的跳转 禁止: 从外层跳入内层 跳入同层的另一循环 向上跳转,例 循环嵌套,输出九九表,/*ch5_5.c*/ #include main() int i,j; for(i=1;i10;i+) printf(%4d,i); printf(n-n); for(i=1;i10;i+) for(j=1;j10;j+) printf(j=9)?%4dn:%4d,i*j); ,for(i=1;i10;i+) for(j=1;j10;j+)
26、printf(j=9)?%4dn:%4d,i*j);,4.5 辅助控制语句 break语句 功能:在循环语句和switch语句中,终止并跳出循环体或开关体 说明: break只能终止并跳出最近一层的结构 break不能用于循环语句和switch语句之外的任何其它语句之中,例 break举例:输出圆面积,面积大于100时停止,#include #define PI 3.14159 main() int r; float area; for(r=1;r100) break; printf(r=%d,area=%.2fn,r,area); ,例 break举例:小写字母转换成大写字母,直至输入非字母
27、字符,#include main() char c; while(1) printf(“小写转大写程序n”); c=getchar(); if(c=a ,continue语句 功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断 仅用于循环语句中,P.106. 例4.18 求输入的十个整数中正数的个数及其平均值,/*ch5_12.c*/ #include main() int i,num=0,a; float sum=0; for(i=0;i10;i+) scanf(%d, ,程序举例,分子:1,-1,1,-1 分母:1,3,5,7,.,例 迭代产生 Fibonacc
28、i 数列,有趣的古典数学问题: 有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假设所有兔子都不死,问每个月的兔子总数为多少?,例 迭代产生 Fibonacci 数列,1,1,2,3,5,8,13,21,34. 从第3数起,每数是前2数之和,f1,f2,f1=f1+f2,f2=f2+f1,f1=f1+f2,f2=f2+f1,f1=f1+f2,f2=f2+f1,例 求Fibonacci数列:1,1,2,3,5,8,的前40个数,例4.10 判断m是否素数 P.93.,谭P.119.例6.10 译密码,例如 Hello,world! 译成密码:Lipps,
29、asvph!,习题: 第五章 2629,33,35,36,37,39,上机练习 4: 在 E: 盘建立学号(后 3 位)文件夹 在此文件夹下编辑下列程序验证结果,保存文件名与题号一致:,课件下载: /pub,/*ch5_5.c*/ #include main() int i,j; for(i=1;i10;i+) printf(%4d,i); printf(n-n); for(i=1;i10;i+) for(j=1;j10;j+) printf(j=9)?%4dn:%4d,i*j); ,ch5_5.c ch5_99.c ch5_100.c ch5_12.c c
30、h5_6.c ch5_7.c ch5_8.c ch5_10.c 第五章: 35,36, 37,39,/* ch5_99.c */ #include #define PI 3.14159 main() int r; float area; for(r=1;r100) break; printf(r=%d,area=%.2fn,r,area); ,/* ch5_100.c */ #include main() char c; while(1) printf(“小写转大写程序 n”); c=getchar(); if(c=a ,/*ch5_12.c */ #include main() int i,
31、num=0,a; float sum=0; printf(“输入 10 个整数,求出其中正整数的个数及平均值 n”); for(i=0;i10;i+) scanf(%d, ,/*ch5_6.c*/ #include #include main() int s; float n,t,pi; t=1; pi=0; n=1.0; s=1; while(fabs(t)=1e-6) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(pi=%10.6fn,pi); ,/*ch5_7.c*/ #include main() long int f1,f2; int i;
32、 f1=1; f2=1; for(i=1;i=20;i+) printf(%12ld %12ld ,f1,f2); if(i%2=0) printf(n); f1=f1+f2; f2=f2+f1; ,/*ch5_8.c*/ #include #include main() int m,i,k; printf(“请输入一个整数,以判断其是否为素数 n”); scanf(%d, ,/*ch5_10.c 译密码*/ #include main() char c; printf(“循环译密码程序 n”); while(c=getchar()!=n) if(c=a ,习题 第五章:35,36,37,39
33、,2. 上传作业: (1)保证学号文件夹中有相应的 exe 文件 (2)将学号文件夹复制到: /incoming/3班第4章练习4,共 12 题,习题: 第五章 40,41,45,49,57,5962,64,6770,72,76,题 5.40 1000!=1235.9991000 k i i=1000 m=i while(m%5=0) k+ m=m/5 i+=5 0 5 1 5 1 1 1 10 1 10 1 2 2 15 1 15 1 3 3 20 1 20 1 4 4 25 1 25 1 5 5 1 6 1 30 .,题 5.60 如: 62 24 2,求正整数m,n的最大公因子,当r=0时,n为最大公因子,m (被),r (余),n (除),本次:,下次:,m (被),n (除),欧几里德算法-辗转相除法,迭代算法:当r 0 时 1. m % n - r 2. m - n (除数作被除数) n - r (余数作除数) 3. 重复1. (当r=0时,停止。n为最大公因子),程序: 求非负整数X,Y的最大公因子,main() int r,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GA/T 1723.2-2025国家网络身份认证公共服务认证服务第2部分:真实身份认证服务接口要求
- GA/T 1482-2026机动车驾驶人安全教育内容和方法
- 放射科三严三基培训考试题及答案
- 2026年重庆市风景园林职称考试(风景园林工程与技术)强化训练试题及答案
- 2026年上半年遵义全国英语等级考试(PETS)一级B全真模拟试题及答案解析
- 2026年全国成人高等学校招生考试(教育理论-专升本)经典试题及答案
- 执业药师资格考试药学专业知识(一)试题及答案
- 延吉素养考试题及答案
- 小学二升三试题及答案
- 投资管理师试题及答案
- 2025-2026学年北京市海淀区七年级(上)期中英语试卷
- 三方协议退货合同模板
- 港口码头消防巡检机器人应用分析方案
- 数控机床质量管理规范
- 2025云南丽江玉龙县急需紧缺教师“回引计划”8人考试参考试题及答案解析
- 2025-2030中国废旧锂离子电池正极材料修复再生技术进展报告
- 调离岗位日常谈话记录范文大全
- TCQFX001-2024四川省机动车维修工时定额标准
- 灵活用工模式-洞察及研究
- 早产儿的医院感染管理
- 口腔市场部新员工培训
评论
0/150
提交评论