C语言程序设计 第6章循环结构程序设计
第6章 循环结构程序设计 C 语言程序设计
提出问题 如何根据收入,确定一个人的纳税比例必纳税额? 当一个公司有多名员工时,如何计算每个人的 纳税比例及纳税额? C语言:循环语句 问氯2 如何根据学生的分数判断是否及格? 如何根据全班学生的分数,分别 判断他们是否及格? 2021/2/24
2021/2/24 2 问题1: • 如何根据收入,确定一个人的纳税比例及纳税额? 当一个公司有多名员工时,如何计算每个人的 纳税比例及纳税额? 提出问题: C语言:循环语句 问题2 如何根据学生的分数判断是否及格? 如何根据全班学生的分数,分别 判断他们是否及格?
本章主要内容 用goto语句实现循环控制 while循环控制 do- while循环控制 for循环控制 循环结构中的跳转语句 循环的嵌套 循环结构程序设计举例 2021/2/24
2021/2/24 本章主要内容 3 ⚫ 用goto语句实现循环控制 ⚫ while循环控制 ⚫ do-while循环控制 ⚫ for循环控制 ⚫ 循环结构中的跳转语句 ⚫ 循环的嵌套 ⚫ 循环结构程序设计举例
62用goto语句实现循环 ●有兴趣的同学自学 ●不提倡使用goto语句 ●意: goto语句能实现程序无条件辂,苟編程 提供了便利。但是死隈制地使用,会破怀 程序的结构化程废。因此限制使用。 2021/2/24
2021/2/24 4 6.2 用goto语句实现循环 ⚫ 有兴趣的同学自学 ⚫ 不提倡使用goto语句 • 注意: goto语句能实现程序无条件转移,为编程 提供了便利。但是无限制地使用,会破坏 程序的结构化程度。因此应限制使用
63whil循环控制 语句一般格式 while(表达式)语句 般为关系表达式·称为内嵌语句, 或逻辑表达式,也 可以是基本语句、 可以是C语言其他 控制语句,也可 类型的合法表达式 以是复合语句 ●用来控制循环体是·是循环重复执行 否执行 的部分 2021/2/24
2021/2/24 5 6.3 while循环控制 ⚫ 语句一般格式 while (表达式) 语句 ⚫ 一般为关系表达式 或逻辑表达式,也 可以是C语言其他 类型的合法表达式 ⚫ 用来控制循环体是 否执行 ⚫ 称为内嵌语句, 可以是基本语句、 控制语句,也可 以是复合语句 ⚫ 是循环重复执行 的部分
功能 计算表达式的值,为非0(逻辑真)时,重复执 行内嵌语句,每执行一次,就判断一次表达式的 值,直到表达式的值为0时结束循环,转去执行 while后面的语句。 循环控制条件 流程图 NS结构图 当表达式为真 表达式求 语句 语句 循环体 2021/2/24
2021/2/24 功能: 6 ⚫ 计算表达式的值,为非0(逻辑真)时,重复执 行内嵌语句,每执行一次,就判断一次表达式的 值,直到表达式的值为0 时结束循环,转去执行 while后面的语句。 当表达式为真 语句 N-S结构图 N Y 流程图 表 达 式 非 0? 语句 循环控制条件 循环体
例如 【例61】编写程序,求100个自然数的和 即:s=1+2+3+…+100 思路:寻找加数与求和的规律 加数}从1变到100,每循环一次,使i增1, 直到值超过100。的初值设为1。 求和—设变量sum存放和,循环求 sum=sum+i,直至i超过100。 2021/2/24
2021/2/24 例如: 7 【例6.1】编写程序,求100个自然数的和 即: s=1+2+3+ … +100 思路:寻找加数与求和的规律 加数i——从1变到100,每循环一次,使i增1, 直到i的值超过100。i的初值设为1。 求和——设变量 sum 存放和,循环求 sum=sum+i,直至i超过100
算法和程序: 8 include 1, sum=0 void main( 当i<=100 fint i, sum sum=sum+i =1: sum=0 i+十 while(i<=100) 输出 sum I=sumti; ++; i:循环控制变量} sum:累加器 printf("sum=%dIn",sum) 程序输出结果:次 sUm=5050 2021/2/24
2021/2/24 算法和程序: 8 #include void main( ) { int i,sum; i=1; sum=0; while (i<=100) { sum=sum+i; i++; } printf("sum=%d\n",sum); } 程序输出结果: sum=5050 i: 循环控制变量 sum: 累加器 i=1,sum=0 当i <= 100 sum=sum+i i++ 输出sum
循环体如果包含一个以上的语句,应该用花括号 指起来,以复苔语句式出现。 在循环体中必须有使循环趋向结束的操作,否则 循环将芜限进行(死循环)。 ●如果whil的(表达式)值为0,则循环体一次也 不执行(例如当的 101)。 在循环体中,语句的先后位置必须符合逻辑,否 则会影响运算结果。 思考程序段的输出? while (i<=100) 运行后,输出: i++; sun=5150 sum=sum+;}原因是什么? 2021/2/24
2021/2/24 注意: 9 ⚫ 循环体如果包含一个以上的语句,应该用花括号 括起来,以复合语句形式出现。 ⚫ 在循环体中必须有使循环趋向结束的操作,否则 循环将无限进行(死循环)。 ⚫ 如果while的 (表达式) 值为0,则循环体一次也 不执行 (例如当i的初值=101) 。 ⚫ 在循环体中,语句的先后位置必须符合逻辑,否 则会影响运算结果。 思考程序段的输出? …… while (i<=100) { i++; sum=sum+i; } 运行后,输出: sum=5150 原因是什么?
不同的whie语句形式 10 设:sum=0; 运行结束后 (-)inti=1; whille(i≤=100 sum +s i++ i=101,sum=5050 (2)int i=0; while(++i<=100) sum +=l; i=101,sum=5050 int i=0; while(H+≤100) sum += i=101,sum=5050 (int i=0; while(i< 100) sum t Hp i=100,sum=5050 2021/2/24
2021/2/24 10 ⑵ int i=0; while ( ++i ++i; 判断 i 判断i ++i; sum+=i 不同的while 语句形式 设:sum=0; ⑴ int i=1; while ( i sum+=i; ++i ; 运行结束后: i、sum = ? 运行结束后: i=101,sum=5050 i=101,sum=5050 i=101,sum=5050 i=100,sum=5050