第四章循环结构 While语句 do{} while语句 break和 continue语句 xgliu@cadzu.edu.cn13858115132
第 四 章 循环结构 While语句 do { } while 语句 break和continue语句 xgliu@cad.zju.edu.cn 13858115132 1
41用格里高利公式求T的近似值 使用格里高利公式求π的近似值,要求精 确到最后一项的绝对值小于104。 357 特点: 1,3,5,7,分之 正负交替 xgliu@cadzu.edu.cn13858115132
4.1 用格里高利公式求π的近似值 使用格里高利公式求π的近似值,要求精 确到最后一项的绝对值小于10–4 。 1 1 1 1 4 3 5 7 = − + − + xgliu@cad.zju.edu.cn 13858115132 2 特点: 1,3,5,7,分之一 正负交替
41.1程序解析一求丌的近似值 flag=1; /* int * denominator =1:/ int item= 10: /* double * pi= 0 P double * while(fabs(item)>=00001) item= flag *1.0/denominator pi= pi item; flag=flag denominator denominator +2 pi= pi* 4 xgliu@cadzju.edu.cn13858115132
flag = 1; /* int */ denominator = 1; /* int */ item = 1.0; /* double */ pi = 0; /* double */ while(fabs (item) >= 0.0001) { item = flag * 1.0 / denominator; pi = pi + item; flag = -flag; denominator = denominator +2; } pi = pi * 4; 4.1.1 程序解析-求π的近似值 xgliu@cad.zju.edu.cn 13858115132 3
412 whille语句 Whle(条件表达式) 循环体语句; 表达式 假循环条件 真 循环体语句 循环体 whie下一条语句 xgliu@cadzu.edu.cn13858115132
4.1.2 while 语句 while (条件表达式) 循环体语句; 真 假 while下一条语句 表达式 循环体语句 循环条件 循环体 xgliu@cad.zju.edu.cn 13858115132 4
复合语句 for (i=1; i<n; i++) item 1.0 if(x<y sum= sum item;C temp=X; y y= temp xgliu@cadzu.edu.cn13858115132
复合语句 xgliu@cad.zju.edu.cn 13858115132 5 for ( i=1; i<n; i++) { item = 1.0/i; sum = sum + item; } if( x<y ) { temp = x; x = y; y = temp; }
41.1程序解析一求丌的近似值 flag=1; /* int * denominator =1:/ int item= 10: /* double * pi= 0 P double * while(fabs (item)>=00001) item s flag *1.0 /denominator; t item 循环体语句 flag=flag 复合语句 denomⅰ nator= denominator+2;由4个执行语句构成 pi= pi*4 xgliu@cadzu.edu.cn13858115132
flag = 1; /* int */ denominator = 1; /* int */ item = 1.0; /* double */ pi = 0; /* double */ while(fabs (item) >= 0.0001) { item = flag * 1.0 / denominator; pi = pi + item; flag = -flag; denominator = denominator +2; } pi = pi * 4; 4.1.1 程序解析-求π的近似值 xgliu@cad.zju.edu.cn 13858115132 6 循环体语句 复合语句 由4个执行语句构成
while和for的比较 ■都是在循环前先判断条件 可以互相转换 改写fo语句为whie语句 or(表达式1表达式2;表达式3) 循环体语句 表达式1; while(表达式2){ 表达式1、3→表达式语句 循环体语句; 表达式3;
◼ 都是在循环前先判断条件 ◼ 可以互相转换 while 和 for 的比较 for(表达式1; 表达式2; 表达式3) 循环体语句 改写 for语句 为 while 语句 表达式1; while (表达式2) { 循环体语句; 表达式3; } 表达式1、3➔表达式语句
while和for的比较 for(i=1;i<=10;i++) sum〓sum+ 循环变量赋初值 while(i<=10)循环条件 sum sum I ++; 循环变量的改变 xgliu@cadzu.edu.cn13858115132
while 和 for 的比较 for (i = 1; i <= 10; i++) sum = sum + i; i = 1; 循环变量赋初值 while (i <= 10){ 循环条件 sum = sum + i; i++; 循环变量的改变 } xgliu@cad.zju.edu.cn 13858115132 8
4.1.3统计输入的一批学生的平均成绩 例42从键盘输入一批学生的成绩,计算平均 分。 分析: 口求累加和 □确定循环条件 ■不知道输入数据的个数,无法事先确定循环次数 用一个特殊的数据作为正常输入数据的结束标志 比如选用一个负数作为结束标志。 xgliu@cadzju.edu.cn13858115132
例4-2 从键盘输入一批学生的成绩,计算平均 分。 分析: 求累加和 确定循环条件 ◼ 不知道输入数据的个数,无法事先确定循环次数 ◼ 用一个特殊的数据作为正常输入数据的结束标志, 比如选用一个负数作为结束标志。 4.1.3 统计输入的一批学生的平均成绩 xgliu@cad.zju.edu.cn 13858115132 9
int num: double grade, total num =0 total =0 scanf(“%P’& grade);/输入第1个数* Whle( grade>=0)/约定如果是负数,结束* total total t grade numa scanf(“%y,& grade) xgliu@cadzu.edu.cn13858115132
int num; double grade, total; num = 0; total = 0; scanf(“%lf”, &grade); /* 输入第1个数*/ while (grade>= 0) /* 约定如果是负数,结束 */ { total = total + grade; num++; scanf (“%lf”, &grade); } xgliu@cad.zju.edu.cn 13858115132 10