当前课程知识点:C语言程序设计 >  第6章 循环结构程序设计 >  6.1 while语句 >  while语句

返回《C语言程序设计》慕课在线视频课程列表

while语句在线视频

下一节:for语句

返回《C语言程序设计》慕课在线视频列表

while语句课程教案、知识点、字幕

同学们

大家好

本节我们来学习C语言中的循环语句

while语句

首先

我们来了解一下

为什么需要循环控制

在日常生活中或是在程序所处理的问题中

常常遇到需要重复处理的问题

例如

要向计算机输入 全班有50个学生的成绩

重复50次相同的输入操作

分别统计全班50个学生的平均成绩

重复50次相同的计算操作

求50个计算之和

重复50次相同的加法操作

检查50个学生成绩是否及格

重复50次相同的判别操作

要处理以上问题最原始的操作是

分别编写若干个相同或相似的语句

或程序段进行处理

例如

为了统计全班50个学生的平均成绩

可以先编写求一个学生的平均成绩的程序段

程序段如下

输入一个学生5门课的成绩

求该学生平均成绩

输出该学生平均成绩

然后再重复写49个同样的程序段

这种方法虽然可以实现要求

但是显然是不可取的

因为工作量大

程序冗长

重复

难以阅读和维护

相信每一位同学都会认为这是最笨的办法

实际上

几乎每一种计算机高级语言都提供了循环控制

用来处理需要进行的重复操作

大多数的应用程序都会包含循环结构

循环结构和顺序结构

选择结构是结构化程序设计的3种基本结构

它们是各种复杂程序的基本构成单元

因此熟练掌握选择结构和循环结构的

概念及使用是进行程序设计的最基本的要求

在C语言中

可以用循环语句来处理上面的问题

程序段如下所示

可以看到

用一个循环语句

while语句

就把需要重复执行50次程序段的问题解决了

流程图如图所示

下面我们来看看这个程序段的执行过程

开始时变量i的值为1

while语句首先检查变量i的值是否小于或等于50

如果是

则执行while语句的循环体

在本例中是花括号内的复合语句

在循环体中先输入第1个学生5门课的成绩

然后求出该学生的平均成绩

然后输出此平均成绩

请同学们想一想

最后一行i++

的作用

它使i的值加1

i的原值为1

现在变成2了

然后流程返回到while语句的开头

再检查i的值是否小于或等于50

由于i的值2小于50

因此又执行循环体

输入第2个学生5门课的成绩

然后求出第2个学生的平均成绩

并输出此平均成绩

i++又使变量i的值变为3

处理第3个学生的数据

以此类推

直到处理完第50个学生的数据后

i的值变为51

由于它大于50

因此不再执行循环体

while语句的一般形式如下

while(表达式)

语句

其中的语句

就是循环体

循环体只能是一个语句

可以是一个简单的语句

还可以是复合语句

用花括号包起来的若干语句

执行循环体的次数是由循环条件控制的

这个循环条件就是上面一般形式中的

表达式

它也称为循环条件表达式

在执行while语句时

先检查循环条件表达式的值

当为非0值

真时

就执行while语句中的循环体语句

当表达式为0

假时

不执行循环体语句

例如

i<=50

是一个循环条件表达式

它是一个关系表达式

它的值只能是

真或假

while语句可简单地记为

只要当循环条件表达式为真

即给定的条件成立

就执行循环体语句

流程图如下所示

注意

while循环的特点是

先判断条件表达式

后执行循环体语句

下面我们通过具体实例来学习

同样利用while语句

进行循环程序设计

例题

求1+2+3+

+100的和等于多少

解题思路

在处理这个问题时

先分析此题的特点

1

这是一个累加的问题

需要先后将100个数相加

要重复进行100次加法运算

因此可以用循环结构来实现

重复执行循环体100次

每次加一个数

2

分析每次所加的数有无规律

发现每次累加的数是有规律的

后一个数是前一个数加1

因此不需要每次用scanf语句从键盘临时输入数据

只须在加完上一个数i后

使i加1就可得到下一个数

程序传统流程图和N-S结构流程图如图所示

编写程序如图所示

运行结果如图所示

在本程序中

循环体如果包含一个以上的语句

应该用花括号括起来

作为复合语句出现

如果不加花括号

则while语句的范围只到while后面第1个分号处

例如

本例中while语句中如无花括号

则while语句范围只到

sum= sum+ i

请同学们想一想

这时程序运行结果会是什么

为什么

请上机进行验证

2

不要忽略给i和sum赋初值

这是未进行累加前的初始情况

否则它们的值是不可预测的

结果显然不正确

请同学们上机进行验证

3

在循环体中应有使循环趋向于结束的语句

例如

在本例中循环结束的条件是"i> 100"

因此在循环体中应该有

使i增值以最终导致i>100的语句

今用

i++

语句来达到此目的

如果无此语句

则i的值始终不改变

循环永远不结束

请同学们上机进行验证

本节的内容就讲到这里

同学们再见

C语言程序设计课程列表:

第1章 C语言程序设计预备知识

-计算思维与计算机

--计算思维与计算机

--计算思维与计算机

--计算思维和计算机

第2章 C语言程序设计基础

-2.1 程序设计语言的发展及其特点和应用

--程序设计语言的发展及其特点和应用

--程序设计语言的特点及发展

- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤

-- C语言程序的基本结构及编制C语言程序的基本步骤

--C语言程序的结构和编制步骤

第3章 基本数据类型、运算符与表达式

-3.1 C语言的数据类型

--C语言的数据类型

--C语言的数据类型

-3.2 常量

--常量

--常量

-3.3 什么是变量

--什么是变量

--什么是变量

-3.4 如何进行算术运算

--如何进行算术运算

--如何进行算术运算

-3.5 赋值运算符和逗号运算符

--赋值运算符和逗号运算符

--赋值运算符和逗号运算符

-3.6 数据类型转换

--数据类型转换

--数据类型转换

第4章 基本输入输出和顺序程序设计

-4.1 格式化输出printf

--格式化输出printf

--格式化输出

-4.2 格式化输入scanf及字符数据的非格式化输入输出

--格式化输入scanf及字符数据的非格式化输入输出

--格式化输入

第5章 选择结构程序设计

-5.1 关系运算符和关系表达式

--关系运算符和关系表达式

--关系运算符和关系表达式

-5.2 逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

-5.3 条件运算符和条件表达式

--条件运算符和条件表达式

--条件运算符和条件表达式

-5.4 if语句

--if语句

--if语句

-5.5 switch语句

--switch语句

--switch语句

第6章 循环结构程序设计

-6.1 while语句

--while语句

--while语句

--do-while语句

-6.2 for语句

--for语句

--for语句

-6.3 循环的嵌套

--循环的嵌套

--循环的嵌套

-6.4 break语句和continue语句

--break语句和continue语句

--break和continue语句

第7章 数组

-7.1 一维数组的定义和引用

--一维数组的定义和引用

--一维数组的定义和引用

-7.2 一维数组的赋值

--一维数组的赋值

--一维数组的赋值

-7.3 二维数组的定义和引用

--二维数组的定义和引用

--二维数组的定义和引用

-7.4 二维数组的赋值

--二维数组的赋值

--二维数组的赋值

-7.5 字符串的本质

--字符串的本质

--字符串的本质

-7.6 字符串操作的常用函数

--字符串操作的常用函数

--字符串常用函数

-7.7 字符串数组

--字符串数组

--字符串数组

第8章 函数

-8.1 函数概述

--函数概述

--函数概述

-8.2 有参函数

--有参函数

--有参函数

-8.3 函数参数的传递方式

--函数参数的传递形式

--函数参数的传递方式

-8.4 变量的作用域和生存期

--变量的作用域和生存期

--变量的作用域和生存期

-8.5 变量的存储类型

--变量的存储类型

--变量的存储类型

-8.6 函数的嵌套和递归调用

--函数的嵌套和递归调用

--函数的嵌套和递归调用

-8.7 函数的作用域与封装

--函数的作用域与封装

--函数的作用域与封装

第9章 指针

-9.1 指针变量的概念(上)

--指针变量的概念(上)

--指针变量的概念(上)

-9.2 指针变量的概念(下)

--指针变量的概念(下)

--指针变量的概念(下)

-9.3 指向一维数组的指针变量

--指向一维数组的指针变量

--指向一维数组的指针变量

-9.4 指向二维数组的指针变量(上)

--指向二维数组的指针变量

--指向二维数组的指针变量(上)

-9.5 指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

-9.6 动态内存分配

--动态内存分配

--动态内存分配

第10章 预处理命令

-10.1 编译预处理

--编译预处理

第11章 复杂数据类型

-11.1 用户自己建立数据类型

--用户自己建立数据类型

--用户自己建立数据类型

-11.2 定义结构体类型变量

--定义结构体类型变量

--定义结构体类型变量

-11.3 结构体变量的引用与初始化

--结构体变量的引用与初始化

-11.4 结构体数组

--结构体数组

--结构体数组

-11.5 指向结构体类型数据的指针

--指向结构体类型数据的指针

--指向结构体类型数据的指针

第12章 文件

-12.1 文件的基本概念和文件指针

--文件的基本概念和文件指针

--文件的基本概念和文件指针

-12,2 文件的打开和关闭

--文件的打开和关闭

--文件的打开和关闭

-12.3 文本文件读写

--文本文件读写

--文本文件读写

-12.4 二进制文件读写

--二进制文件读写

--二进制文件读写

while语句笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。