C语言程序设计
项目二 商场购物 任务3:商品购买总值的统计 要求: 消费者购买了多种商品,输入每种商品的应付价格,计算最后的应付总额并输出。 解决问题需要的知识点: 1、多条信息的输入与输出; 2、对多条输入的信息的多次处理。
引例: 求1+2+……+100之和。 1
循环 结构 引例1:求1+2+……+100之和。 问题分析及解决方案: 1、高斯公式; 2、循环结构。
项目二 商场购物 —— 第5章 循环结构程序设计 章节主要内容 5.1 循环概述 5.2 while语句 5.3 do while语句 5.1 循环概述 5.2 while语句 5.3 do while语句 5.4 for语句 5.5 循环嵌套 5.6 跳转语句
5.1 循环概述 循环结构的应用场合:可以处理各类重复操作,主要用于递推与穷举算法。 S=1+2+3+……+100 ??
C语言提供三种构成循环的语句。 可实现循环的控制语句: while 语句 do ~ while 语句 for 语句 *用goto 结合 if 构成循环 给定的条件(表达式)称为循环条件,反复执行的程序段称为循环体
项目二 商场购物 —— 第5章 循环结构程序设计 章节主要内容 5.1 循环概述 5.2 while语句 5.3 do while语句 5.1 循环概述 5.2 while语句 5.3 do while语句 5.4 for语句 5.5 循环嵌套 5.6 跳转语句
while语句——超市收费系统 【问题思路】:顾客 从超市购物出来要付款的时候,顾客把购买的东西递给收银员后, 收银员对所有的商品条形码扫描,扫描一个就得到该商品的价格并 自动累加,最后扫描完,收银员一打回车,总价钱就得到了。如何实现此超市的收费系统? 【问题分析】:此过程最关键的即为价格的重复累加的操作,可通过循环来实现。
5.2 while语句 while(表达式) 循环体; 2、 while循环执行过程: 1 、while循环的一般形式: 循环体 非0
特点:先判断表达式,后执行循环体 说明: while是C语言的关键字 while后面的表达式可以是C的任意合法的表达式,其值作为逻辑值,圆括号不能少,且后面没有分号“;” 循环体在结构上是一条语句(即:可以是一条语句,此时后面必须加“;”,也可以是复合语句,此时必须加花括号,否则循环体只到第一个“;”处) 循环体有可能一次也不执行 循环体可为任意类型语句 下列情况,退出while循环 条件表达式不成立(为零) 循环体内遇break,return,goto 循环体内应有能使循环趋向于结束的语句即有能改变表达式值的语句 无限循环: 不能结束的循环
#include <stdio.h> main() { int i,sum; i=1; sum=0; while(i<=100) { sum=sum+i; i++; } printf("%d",sum); 例:用while循环求 循环条件 循环初值 循环终值 循环体 循环变量增值
å 例:用while循环求 n! #include <stdio.h> void main(void) { int n=0; 100 1 n n! #include <stdio.h> void main(void) { int n=0; long t=1,sum=0; while(n<10) { n++; t*=n; /*t中存放的是n!*/ sum+=t; } printf("%ld\n",sum); 运行结果: 403713
项目二 商场购物 —— 第5章 循环结构程序设计 章节主要内容 5.1 循环概述 5.2 while语句 5.3 do while语句 5.1 循环概述 5.2 while语句 5.3 do while语句 5.4 for语句 5.5 循环嵌套 5.6 跳转语句
do-while语句——登陆邮箱 【问题思路】:你打开网页准备登陆你的邮箱,假设密码验证给你3次机会,3次中间如果有某次回答正确了,你就可以进去系统,并且系统显示“登陆成功”,如果3次都没有回答正确,系统将显示“密码错误”。你能编写个程序实现这个功能吗? 【问题思路】:大家肯定想到要用循环,但是这个循环有一个特点就是输入密码和判断密码的操作至少要执行一次,所以我们要选择另外一种循环“do-while”。
5.3 do~while语句 do 循环体; while(表达式); 2 、do~while循环的执行过程: 非0 表达式 while 循环体 do
特点:先执行循环体,后判断表达式 说明: do、while都是C语言的关键字,do必须与while联合使用 由do开始while结束,while后面的表达式可以是C的任意合法的表达式,其值作为逻辑值,括号不能少,且括号后的“;”千万不能省。 循环体在结构上是一条语句 至少执行一次循环体 循环体内应有能使循环趋向于结束的语句 do~while可转化成while结构
例:用do while循环求 #include <stdio.h> main() { int i=1,sum=0; do { sum+=i; i++; }while(i<=100); printf("%d",sum); }
#include <stdio.h> main() { int i,sum=0; scanf("%d",&i); do while和do~while的比较 #include <stdio.h> main() { int i,sum=0; scanf("%d",&i); do { sum+=i; i++; }while(i<=10); printf("%d",sum); } #include <stdio.h> main() { int i,sum=0; scanf("%d",&i); while(i<=10) { sum+=i; i++; } printf("%d",sum); 当输入不大于10的整数时,两程序效果一样;当输入大于10的整数时,第一个程序会输出这个数,而第二个程序会输出0。
do-while语句——密码验证 【解决方案】 #include<stdio.h> void main() {long pw; int i=0,flag=0; do {printf(“请输入密码:"); scanf("%ld",&pw); i++; if(pw==123456) {flag=1;break;} }while(i<3); if(flag==1) printf("登陆成功!\n"); else printf("密码错误!\n");}
项目二 商场购物 —— 第5章 循环结构程序设计 章节主要内容 5.1 循环概述 5.2 while语句 5.3 do while语句 5.1 循环概述 5.2 while语句 5.3 do while语句 5.4 for语句 5.5 循环嵌套 5.6 跳转语句
5.4 for语句 1、for语句的一般形式: 2、for循环的执行过程: for(表达式1;表达式2;表达式3) 循环体; for 循环体 非0 表达式2 表达式1 for 2、for循环的执行过程:
for(循环变量赋初值;循环条件;循环变量增值) 循环体; #include <stdio.h> main() { int i,sum=0; for(i=1;i<=100;i++) sum+=i; printf("%d",sum); } 例:用for循环求
3、 有关for语句的说明 for语句中表达式1,表达式2 ,表达式3 是C的任意合法的表达式,其中表达式2的值作为逻辑值,用来作为循环条件。三个表达式都可省略,但分号“;”不可省略 循环体在结构上是一条语句 无限循环: for(;;) 循环体; for语句可以转换成while结构 表达式1; while(表达式2) { 循环体语句; 表达式3; }
因表达式1是置初值,整个循环只做一次,可将其放在循环之前,省略表达式1,但必须保留其后的分号 。 (1)省略表达式1 因表达式1是置初值,整个循环只做一次,可将其放在循环之前,省略表达式1,但必须保留其后的分号 。 #include <stdio.h> void main() { int i=1,sum=0; for( ; i<=100;i++) sum+=i; printf("sum=%d\n",sum); } 省略表达式1,在循环之前完成 例:用for循环求
(2)省略表达式2 省略表达式2则相当于此值始终为“真”。在这种情况下,如果循环体中没有能终止循环的语句,将成为死循环,为了使程序仍能正确终止,一般循环体中应有判别语句,即用break语句退出循环。 #include <stdio.h> void main() { int i,sum=0; for(i=1; ;i++) { if(i>100) break; sum+=i; } printf("sum=%d\n",sum); 省略表达式2 例:用for循环求 当i>100时用break退出循环
因表达式3在执行循环体之后再执行,所以可将其放入循环体中,从而省略表达式3,效果一样,但其前的分号不能省。 (3)省略表达式3 因表达式3在执行循环体之后再执行,所以可将其放入循环体中,从而省略表达式3,效果一样,但其前的分号不能省。 #include <stdio.h> void main() { int i,sum=0; for(i=1;i<=100;) sum+=i++; printf("sum=%d\n",sum); } 省略表达式3 例:用for循环求 当i++放在此处
最极端情况,省略全部表达式,将其应有功能由其他语句来代替。 (4)同时省略若干表达式 最极端情况,省略全部表达式,将其应有功能由其他语句来代替。 #include <stdio.h> void main() { int i=1,sum=0; for( ; ;) { if(i>100) break; sum+=i++; } printf("sum=%d\n",sum); 例:用for循环求 表达式均省略
当循环体比较简单时,可把其放到表达式3中去,从而使循环体本身成为空语句。 (5)省略循环体 当循环体比较简单时,可把其放到表达式3中去,从而使循环体本身成为空语句。 例:用for循环求 #include <stdio.h> void main() { int i,sum=0; for(i=1;i<=100;sum+=i++) ; printf("sum=%d\n",sum); } 省略循环体 用空语句 循环体语句放在此处
(6)for 后一对括号中的表达式可以是任意有效的c语言表达式。 void main() { int i,sum; for(i=1,sum=0;i<=100;sum+=i,i++) ; printf("sum=%d\n",sum); } 逗号表达式 逗号表达式
几种循环的比较 三种循环结构的使用原则: 如果循环次数已知,用for 如果循环次数未知,用while 如果循环体至少要执行一次,用do-while 这只是“一般”原则,不是“原则”
第5章 循环结构程序设计——总结 内 容 总 结 知 循环思想(处理重复性的操作、循环条件、循环体); 循环语句。 识 点 重 循环语句(while、do while、for)。 重 难 点