第五章 循环结构的C程序设计 5.1 while循环语句 5.2 do-while循环语句 5.3 for循环语句 5.4 多重循环

Slides:



Advertisements
Similar presentations
While 迴圈 - 不知重複執行次數
Advertisements

CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
循环模式 流程图的画法: 条件 y 循环体 伪代码: n Do while 条件 循环体 loop 每个循环模式的结构都是一个入口,一个出口.
第六章 循环控制.
Loops.
第一章 C语言概述 计算机公共教学部.
数学建模与MATLAB 第五讲:循环结构(1) 2017/9/12.
第3章 While循环程序设计.
第一章 程序设计入门.
C#程序设计基础 $5 流程控制.
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
Class 2 流程控制-選擇敘述與迴圈.
C程序设计.
第3章 顺序结构程序设计 本章要点: 格式化输出函数──printf() 格式输入函数——scanf() 字符输出函数——putchar()
第 四 章 循环结构 while语句 do {} while 语句 break和continue语句
Chap 10 函数与程序结构 10.1 函数的组织 10.2 递归函数 10.3 宏定义 10.4 编译预处理.
If … else 選擇結構 P27.
Chap 2 用C语言编写程序 2.1 在屏幕上显示 Hello World! 2.2 求华氏温度 100°F 对应的摄氏温度
第八章 函数.
Introduction to the C Programming Language
第5章 循环结构程序设计 5.1 为什么需要循环控制 5.2 用while语句实现循环 5.3 用do---while语句实现循环
第六章 循环结构程序设计 概述 while 语句 do-while 语句 for 语句 循环的嵌套 几种循环的比较
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Chap 3 分支结构 3.1 简单的猜数游戏 3.2 四则运算 3.3 查询自动售货机中商品的价格.
1. 說明一個一維整數陣列passwd,下標範圍0至49 2. 在屏幕顯示 "Enter password"
C语言 程序设计基础与试验 刘新国、2012年秋.
Chap 3 分支结构 3.1 统计输入的一批字符中各类字符的数量 3.2 查询自动售货机中商品的价格 3.3 分支结构程序设计.
本章中將會更詳細地考慮有關重複的概念,並且會 介紹for和do…while等兩種用來控制重複的敘述 式。 也將會介紹switch多重選擇敘述式。 我們會討論直接和迅速離開某種控制敘述式的 break敘述式,以及用來跳過重複敘述式本體剩餘 部份的continue敘述式。 本章會討論用來組合控制條件的邏輯運算子,最後.
第二章 Java语言基础.
計數式重複敘述 for 迴圈 P
第六章 循环控制.
第3章 顺序结构程序设计 为了让计算机处理各种数据,首先就应该把源数据输入到计算机中;计算机处理结束后,再将目标数据信息以人能够识别的方式输出。C语言中的输入输出操作,是由C语言编译系统提供的库函数来实现。 3.1 格式化输出——printf()函数 3.2 格式化输入——scanf()函数.
2.1 C语言的数据类型 2.2 常量与变量 2.3 变量赋初值 2.4 各类数值型数据间的混合运算 2.5 C语言的运算符和表达式
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
第4章 顺序程序设计.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
第4章 PHP流程控制语句.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
C语言概述 第一章.
for 迴圈 while迴圈 do-while迴圈 break 與 continue goto 與 標籤 程式觀摩
C 语言程序设计 程序的循环结构 电大崇信县工作站 梁海亮.
目录 5.1循环结构程序设计的概述 5.2 用while语句实现循环结构程序设计 5.3 用do-while语句实现循环结构程序设计
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
Introduction to the C Programming Language
C语言程序设计 教案 崔武子制作
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
Chap 5 函数 5.1 计算圆柱体积 5.2 数字金字塔 5.3 复数运算.
第十四章 若干深入问题和C独有的特性 作业: 函数指针 函数作参数 函数副作用 运算 语句 位段 存储类别 编译预处理
C程序设计.
《计算机应用基础》 第9章 程序设计基础(二).
第2章 认识C语言 教学要点 2. 1 项目二C语言程序识读 2 .2 项目三班级成绩排名 2 .3 知识链接 返回.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第九节 赋值运算符和赋值表达式.
Introduction to the C Programming Language
第三章 基本的輸出與輸入函數 (Basic Output & Input Function)
1.2基本算法语句 1.2.3循环语句.
输入语句 输出语句 赋值语句 条件语句 循环语句
程序设计基础.
第4章 顺序结构程序设计 为了让计算机处理各种数据,首先就应该把源数据输入到计算机中;计算机处理结束后,再将目标数据信息以人能够识别的方式输出。C语言中的输入输出操作,是由C语言编译系统提供的库函数来实现。 4.1 格式化输出——printf()函数 4.2 格式化输入——scanf()函数.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
五 循环结构程序设计 厦大附中信息技术.
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
第三讲 程序设计准备知识 一、程序编辑器.
Chap 10 函数与程序结构 10.1 圆形体积计算器 10.2 汉诺塔问题 10.3 长度单位转换 10.4 大程序构成.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
函式庫補充資料 1.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

第五章 循环结构的C程序设计 5.1 while循环语句 5.2 do-while循环语句 5.3 for循环语句 5.4 多重循环 5.4 多重循环 5.5 break语句和continue语句 5.6 goto语句和标号 5.7 程序举例

5.1 while循环语句 while循环的一般形式如下:  while(表达式) 语句 图 5.1 while循环

while语句的执行过程是:先计算while后面圆括号内表达式的值,如果其值为“真”(非0),则执行语句部分(即循环体);然后再计算表达式的值,并重复上述过程,直到表达式的值为“假”(0)时,循环结束,程序控制转至循环结构的下一语句。  while循环中的表达式一般是关系表达式(如i<=100)或逻辑表达式(如a<b&&x<y),但也可以是数值表达式或字符表达式,只要其值非零, 就可执行循环体。

例 5.1 利用while语句实现:从键盘输入n(n>0)个数,求其和。

main() { int i, n, k, sum;  i=1; sum=0;  printf("Input n: ");  scanf("%d", &n);  while(i<=n) { scanf("%d", &k);  sum=sum+k;  i++;  } printf("\nsum is: %d\n", sum);  } 运行结果:  Input n: 6 12 34 2 11 9 5 sum is: 73

例 5.2 从键盘连续输入字符,直到输入“回车”符为止, 统计输入的字符个数。 图 5.3 统计输入字符的个数

#include <stdio.h>  main() { char ch;  int len=0;  puts("Type in a sentence, then press <Enter>\n");  while ((ch=getch())!=′\r′)  { putchar(ch);  len++;  } printf("\nSentence is %d characters long.\n", len);  运行结果:  Type in a sentence, then press <Enter> this is a sentence. Sentence is 19 characters long.

5.2 do-while循环语句 do-while循环的一般形式如下:  do  语句 while (表达式);

图 5.4 do-while循环

do—while语句的执行过程是:先执行循环体中的语句, 然后计算表达式的值。若表达式的值为“真”(非0), 则再次执行循环体。如此重复,直至表达式的值为“假”(0)时, 结束循环。

例 5.3 利用do—while语句重做例5.1。 图 5.5 求n个数的和

main() { int i, n, k, sum;  i=1; sum=0;  printf("Input n: ");  scanf("%d", &n);  do { scanf("%d", &k);  sum=sum+k;  i++;  } while(i<=n);  printf("sum is: %d\n", sum);  }  运行结果:  Input n: 6 12 3 7 11 23 34  sum is: 90

5.3 for循环语句 for循环语句的一般形式如下:  for (表达式1; 表达式2; 表达式3) 语句

图 5.6 for循环

其执行过程是:  (1) 首先求解表达式1。  (2) 求解表达式2, 若其值为“真”(非0), 则执行循环体中的语句, 然后执行第(3) 步。若为“假”(0), 则结束循环, 转至第(5)步。  (3) 求解表达式3。  (4) 转至第(2)步重复执行。  (5) 执行for循环语句的下一语句。

for语句的功能可用while语句描述如下:  表达式1;  while (表达式2) { 语句;  表达式3;  } for语句最简单的应用形式, 也是最容易理解的形式: for (循环变量赋初值; 循环条件; 循环变量增值) 语句 例如, for (i=1; i<=50; i++) sum=sum+i;

例 5.4 利用for语句重做例5.1。 main() { int i, n, k, sum=0;  printf("Input n: ");  scanf("%d", &n);  for (i=1; i<=n; i++) { scanf("%d", &k);  sum=sum+k;  } printf("sum is: %d\n", sum);  运行结果:  Input n: 6 7 11 20 5 2 19 sum is: 64

例 5.5 计算1至50中是7的倍数的数值之和。 运行结果:  sum=196 main() { int i, sum=0;  例 5.5 计算1至50中是7的倍数的数值之和。 main() { int i, sum=0;  for (i=1; i<=50; i++) if (i%7==0) sum+=i;  printf("sum=%d\n", sum);  } 运行结果:  sum=196

5.4 多重循环 当一个循环体内又包含另一个完整的循环结构时,称为多重循环或循环嵌套,其循环结构可用上述三种循环语句的任意一种。 例如,下面是两种循环嵌套的示意图。 (1) while ( ) {  while ( ) } … …

(2) for (; ; ) {  do {  } while( );   } … … …

例 5.6 输出九九表。

5.5 break语句和continue语句 5.5.1 break语句 其形式为  break;

使用break语句应注意如下几个问题:  (1) break语句只能用于switch结构或循环结构, 如果在程序中有下列语句:  if (…) break;  则此时的if语句一定位于循环体中或switch结构中, break语句跳出的也不是if语句,而是跳出包含此if语句的循环结构或switch结构。

(2) 在循环语句嵌套使用的情况下, break语句只能跳出(或终止)它所在的循环,而不能同时跳出(或终止)多层循环,如:  for (…) { for (…) { … break;  } … /* 注1 */ }

例 5.7 计算r=1到r=10时的圆面积,直到面积area大于100为止。 #define PI 3.1415926 main() { int r;  float area;  for (r=1; r<=10; r++) { area=PI*r*r;  if (area>100) break;  printf("r: %d area is: %f\n", r, area);  }

运行结果:  r: 1 area is: 3.1415930 r: 2 area is: 12.566370 r: 3 area is: 28.274334 r: 4 area is: 50.265480 r: 5 area is: 78.539818

5.5.2 continue语句 continue语句的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,直接进行下一次是否执行循环的判定。 continue语句的一般形式如下:  continue;  其执行过程是:终止当前这一轮循环,即跳过循环体中位于continue后面的语句而立即开始下一轮循环;对于while和do-while来讲,这意味着立即执行条件测试部分,而对于for语句来讲,则意味着立即求解表达式3。

例 5.8 把100到150之间的不能被3整除的数输出,要求一行输出10 个数。 例 5.8 把100到150之间的不能被3整除的数输出,要求一行输出10 个数。 main() { int n, i=0;  for (n=100; n<=150; n++) { if (n%3==0)  continue;  printf("%4d", n);  i++;  if (i%10==0) printf ("\n");  }  }

运行结果:  100 101 103 104 106 107 109 110 112 113 115 116 118 119 121 122 124 125 127 128 130 131 133 134 136 137 139 140 142 143 145 146 148 149

5.6 goto语句和标号 goto语句为无条件转向语句,程序中使用goto语句时要求和标号配合, 它们的一般形式为  … 标号: 语句;

C语言规定,goto语句的使用范围仅局限于函数内部, 不允许在一个函数中使用goto语句把程序控制转移到其它函数之内。  (1) 与if语句一起构成循环结构。  (2) 退出多重循环。

5.7 程 序 举 例 例 5.9 用 公式求出π的近似值, 直到最后一项的绝对值小于10-6为止。 具体程序如下: 5.7 程 序 举 例 例 5.9 用 公式求出π的近似值, 直到最后一项的绝对值小于10-6为止。 具体程序如下: #include <math.h> main() {int s;  float n, t, pi;

例 5.10 从键盘输入一个大于2的整数n,判断n是不是素数。 具体程序如下: #include <stdio.h> #include <math.h> main() {int n, k, i, flag; do { printf("Input a number: ");  scanf("%d", &n); } while(n<=2);  k=sqrt((double)n);  flag=1;  for (i=2; i<=k; i++)

if (n%i==0) {flag=0;  break; /* 有一数能整除就不是素数, 不再循环 */ } if (flag) printf("%d is a prime number.\n", n);  else printf("%d is not a prime number.\n", n); } 运行结果:  Input a number: 35 35 is not a prime number.

例 5.11 用牛顿迭代法求方程2x3-4x2+3x-6=0的根,要求误差小于10-5。 从图5.7可以看出: 因此, 令f(x)=2x3-4x2+3x-6 可写成以下形式:  f(x)=((2x-4)x+3)x-6

图 5.7 用牛顿迭代法求方程的根

具体程序如下: #include <stdio.h> #include <math.h> main() {float x, x0, f, f1;  printf("Enter the first approch x: ");  scanf("%f", &x);  do {x0=x;  f=((2*x0-4)*x0+3)*x0-6; /* 求f(x0) */ f1=(6*x0-8)*x0+3; /* 求f′(x0) */  x=x0-f/f1;  }

while(fabs(x-x0)>=1e-5);  printf("The root of equation is: %10.7f\n", x);  } 运行结果:  Enter the first approch x: 1.5 The root of equation is: 2.0000000

例 5.12 从键盘输入4个9以内的数字字符,将其转换为4位十进制数后显示出来。 分析:  (1) 将每个数字字符c变成对应的数字,即将以ASCII码表示的数字字符变成一位十进制数,方法为:c-′0′,如c=′8′时,c-′0′=8。转换中若遇非′0′~′9′字符则结束转换。  (2) 将每次变换的一位十进制数,从高位开始,按位加权, 变成多位的十进制数,放在变量data中。如输入1,2,3,4, 则 结果应是按%d格式显示的1234。

具体程序如下: #include <stdio.h> main() {char c;  int i, data=0;  printf("Input char : ");  for (i=0; i<4; i++) {c=getchar(); /* 输入一数字字符 */ if (c<′0′ ||c>′9′) /* 判断输入字符是否在′0′~′9′范围内 */ break;  data=data*10+c-′0′; /* 计算当前data值 */ } printf("data=%d\n", data);  } 运行结果:  Input char: 1463  data=1463