第九&十讲循环结构
时间:2025-05-11
时间:2025-05-11
第四章
控制结构--循环结构
4.1 用格里高利公式求π的近似值 (while语句)
4.2 统计一个整数的位数 (do-while语句)4.3 判断素数 (break 和 continue 语句) 4.4 求1!+2!+...+100! (循环嵌套) 4.5 循环结构程序设计
本讲要点
什么是循环? 为什么要使用循环? 如何实现循环?
实现循环时,如何确定循环条件和循环体?怎样使用 while 和 do-while 语句实现次数不确定的 循环? while 和do-while语句有什么不同? 如何使用break语句处理多循环条件? 如何实现多重循环?
假设自动售货机出售4种商品,薯片 ( crisps)、 爆 米 花 ( popcorn)、 巧 克 力 (chocolate) 和可乐 (cola),售价分别是每份 3.0 、 2.5 、 4.0 和 3.5 元。在屏幕上显示以下菜单,用 户可以连续查询商品的价格,当查询次数超过 5 次时,自动退出查询;不到 5次时,用户可以选 择退出。当用户输入编号1~4,显示相应商品的 价格;输入 0,退出查询;输入其他编号,显示 价格为0。[1] Select crisps [2] Select popcorn [3] Select chocolate [4] Select cola [0] Exit
#include <stdio.h> Int main(void) { int choice, i; double price; for( i = 1; i <= 5; i++) { printf("[1] Select crisps \n"); printf("[2] Select popcorn \n"); printf("[3] Select chocolate \n"); printf("[4] Select cola \n"); printf("[0] exit \n"); printf("Enter choice: "); scanf("%d", &choice); if(choice == 0) break; switch (choice) { case 1: price=3.0; break; case 2: price=2.5; break; case 3: price=4.0; break; case 4: price=3.5; break; default: price=0.0; break; } printf("price = %0.1f\n", price); } printf("Thanks \n"); }
[1] Select crisps [2] Select popcorn [3] Select chocolate [4] Select cola [0] Exit Enter choice: 1 price = 3.0 [1] Select crisps [2] Select popcorn [3] Select chocolate [4] Select cola [0] Exit Enter choice: 7 price = 0.0 [1] Select crisps [2] Select popcorn [3] Select chocolate [4] Select cola [0] Exit Enter choice: 0 Thanks
for语句-循环语句for(表达式1;表达式2;表达式3) 循环体语句 实现C语句的重复执行3个表达式、循环体语句 !书写顺序和执行顺序不同 !表达式1只执行一次
for语句中的循环变量循环(控制)变量:for语句中,通过改变或判断某个 变量的值来控制循环的执行
for( i = 1; … }赋初值
i <= 5;
i++ ) {
判断其值
改变其值
for语句的说明表达式1:给循环变量赋初值,指定循环的起点。 表达式2:给出循环的条件,决定循环的继续或结束。 表达式 3 :设置循环的步长,改变循环变量的值,从而可改 变表达式2的真假性。 循环体语句:被反复执行的语句,一条语句。
练习:计算 1+2+……+100
指定次数的循环程序设计求 1+2+……+100 抽取具有共性的算式:sum = sum + isum初值为0,该算式重复100次,i从1变到100 设i为循环变量,则: 指定
循环起点的表达式1:i = 1 给出循环条件的表达式2:i <= 100 设置循环步长的表达式3:i++ 循环体语句:sum = sum + i; for(i=1; i<=100; i++)sum =sum+i;
4.1 用格里高利公式求π的近似值使用格里高利公式求π的近似值,要求精 确到最后一项的绝对值小于10–4。 4
1 3 5 7
1
1
1
4.1.1 程序解析
4.1.2 while语句4.1.3 输入一批学生的成绩,统计平均分
4.1.1 程序解析-求π的近似值#include <math.h> pi = 3.141613 int main(void) { int denominator, flag; item=0.0 ? double item, pi; flag = 1; denominator = 1 ; item = 1.0; pi = 0; while(fabs (item) >= 0.0001) { item = flag * 1.0 / denominator; fabs(item) < 0.0001 pi = pi + item; flag = -flag; denominator = denominator +2; } pi = pi * 4; printf ( “pi = %f\n”, pi); return 0; }
4.1.2 while 语句while (条件) 循环体语句;表达式 真 循环体语句 假
一条语句
循环条件 循环体
while下一条语句
while 语句说明while 语句和for语句都是在循环前先判断条件
把for语句改写成while语句for(表达式1; 表达式2; 表达式3) 循环体语句 表达式1; while (表达式2) { for的循环体语句; 表达式3; }
while 和 for 的比较for (i = 1; i <= 10; i++) sum = sum + i; i = 1; 循环变量赋初值
while (i <= 10){ 循环体} sum = sum + i; i++;
循环条件循环变量的改变
4.1.3 统计输入的一批学生的平均成绩例4-2 从键盘输入一批学生的成绩,计算平均 分。 分析: 求累加和 确定循环条件
不知道输入数据的个数,无法事先确定循环次数 用一个特殊的数据作为正常输入数据的结束标志, 比如选用一个负数作为结束标志。
#include <stdio.h> Int main(void) Enter grades: -1 67 88 73 54 82 { int num; Grade average mark is double grade, total; num = 0; total = 0; printf(“Enter grades: \n"); scanf("%lf", &grade); /* 输入第1个数*/ while (grade >= 0) { /* 输入负数,循环结束 */ total = total + grade; num++; Enter grades: 67 88 73 54 82 -1 scanf (“%lf”, &grade); Grade average is 72.80 } if(num != 0) printf(“Grade average is %.2f\n", total/num); else printf(" Grade average is 0\n"); return 0; }
4.2 统计一个整数的位数从键盘读入一个整数,统计该数的位数。 4.2.1 程序解析
4.2.2 do - while语句4.2.3 循环语句的选择
…… 此处隐藏:1348字,全部文档内容请下载后查看。喜欢就下载吧 ……上一篇:隧道进洞安全注意事项