第6章 循环结构程序设计

合集下载

《谭浩强《C程序设计》(第4版)笔记和课后习题详解》读书笔记模板

《谭浩强《C程序设计》(第4版)笔记和课后习题详解》读书笔记模板

第11章常见错误分 析
1.1复习笔记 1.2课后习题详解
2.1复习笔记 2.2课后习题详解
3.1复习笔记 3.2课后习题详解
4.1复习笔记 4.2课后习题详解
5.1复习笔记 5.2课后习题详解
6.1复习笔记 6.2课后习题详解
7.1复习笔记 7.2课后习题详解
8.1复习笔记 8.2课后习题详解
作者介绍
这是《谭浩强《C程序设计》(第4版)笔记和课后习题详解》的读书笔记模板,暂无该书作者的介绍。
谢谢观看
目录分析
第2章算法——程 序的灵魂
第1章程序设计和C 语言
第3章最简单的C程 序设计——顺序程
序设计
1
第4章选择结构 程序设计
2
第5章循环结构 程序设计
3
第6章利用数组 处理批量数据
4 第7章用函数实
现模块化程序 设计
5
第8章善于利用 指针
第10章对文件的输 入输出
第9章用户自己建 立数据类型
9.1复习笔记 9.2课后习题详解
10.1复习笔记 10.2课后习题详解
11.1复习笔记 11.2课后习题详解
读书笔记
这是《谭浩强《C程序设计》(第4版)笔记和课后习题详解》的读书笔记模板,可以替换为自己的心得。
精彩摘录
这是《谭浩强《C程序设计》(第4版)笔记和课后习题详解》的读书笔记模板,可以替换为自己的精彩内容 摘录。
谭浩强《C程序设计》(第4版)笔记 和课后习题详解
读书笔记模板
01 思维导图
03 目录分析 05 精彩摘录
目录
02 内容摘要 04 读书笔记 06 作者介绍
思维导图
本书关键字分析思维导图
习题

VFP第六章课件2(循环结构)

VFP第六章课件2(循环结构)

控制循环执行的方式
控制循环执行的方式
3)用记录指针控制循环 学院英语比赛成绩数据表SH.DBF SH.DBF中包 例2:学院英语比赛成绩数据表SH.DBF中包 括以下字段:姓名( ),班级 班级( 括以下字段:姓名(C,8),班级(C, 10),英语(N ),英语(N, 0)和备用(N, 和备用(N 10),英语(N,3,0)和备用(N,3,0) ;其 中除备用字段外,其他字段均已有值。 中除备用字段外,其他字段均已有值。 编程序统计各班英语的平均成绩, 编程序统计各班英语的平均成绩,并显示平 均分前三名的班级和平均成绩( 均分前三名的班级和平均成绩(假设平均成绩 都不相同)。 都不相同)。 ( 见“程序168.PRG” 程序文件 )
<内存变量>为循环变量,作为计数器控制循环。<数 内存变量>为循环变量,作为计数器控制循环。 值表达式1>为循环变量初值; 数值表达式2> 1>为循环变量初值 2>为循环 值表达式1>为循环变量初值;<数值表达式2>为循环 变量终值,循环变量超过终值循环结束。 变量终值,循环变量超过终值循环结束。 FOR语句每循环一次 语句每循环一次, FOR语句每循环一次,自身便改变一次循环变量的 STEP短语设置改变的增量 短语设置改变的增量, 数值表达式3> 值,STEP短语设置改变的增量,由<数值表达式3> 设置。正值为增加,负值为减少,缺省默认为1 设置。正值为增加,负值为减少,缺省默认为1。在 循环中允许使用赋值语句修改循环变量的值。 循环中允许使用赋值语句修改循环变量的值。 FOR语句可以嵌套 语句可以嵌套。 NEXT任选其一 任选其一。 FOR语句可以嵌套。ENDFOR 和NEXT任选其一。

C语言习题集参考答案

C语言习题集参考答案

第一章C语言概述一.选择题1.一个C程序的执行是从。

A.程序的main函数开始,到main函数结束B.程序文件的第一个函数开始,对本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束D.本程序文件的第一个函数开始,到本程序main函数结束2.以下叙述正确的是。

A.在C程序中,main函数必须位于程序的最前面B.C程序的每行中只能写一条语句C.C语言本身没有输入输出语句D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误3.以下叙述不正确的是。

A.一个C源程序可由一个或多个函数组成B.一个C源程序必须包含一个main函数C.C程序的基本组成单位是函数D.在C程序中,注释说明只能位于一条语句的后面二.填空题1.C源程序的基本单位是函数。

2.一个C源程序中至少应包括一个主函数或main函数。

3.在一个C源程序中,注释部分两侧的分界符分别为/*和*/ 。

第二章数据的存储与运算一.选择题1.若x、i、j和k都是int型变量,则计算下面表达式后,x的值为。

x=(i=4,j=16,k=32)A.4 B.16 C.32 D.482.下面正确的字符常量是。

A.”c” B.’\\’’C.’W’ D.’’3.下面不正确的字符串常量是。

A.’abc’ B.”12’12” C.”0” D.” “4.以下正确的叙述是。

A.在C程序中,每行中只能写一条语句B.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值C.在C程序中,无论是整数还是实数,都能被准确无误地表示D.在C程序中,%是只能用于整数运算的运算符5.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=’A’+’6’-‘3’后c2中的值为。

A.D B.68 C.不确定的值 D.C6.若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是。

大学Python学习课件第6讲-循环结构-while

大学Python学习课件第6讲-循环结构-while

示例3:程序和运行结果
注意: s的初始值设为0 i的初始值设为1 i的作用:
– 循环计数变量,控制循环次数 – 作为每次被累加的整数值
示例3思考
在示例程序中,第1条语句改成如下,会有什么后果?请
尝试
i, s = 0, 0
循环体中语句“i+=1”,还可以如何表示?
循环结束后,变量i的值是什么?
重点难点
程序设计的3种基本结构 While语句语法
程序设计的3种基本结构
顺序结构 程序流程按先后顺序执行,只有执行了前一步,才能执行后 一步。 例如火车在轨道上行驶,只有过了上一站点才能到达下一站 点。
分支结构 指程序流程可以分几条路径之一执行。 例如在一个十字路口处,可以选择向东、南、西、北几个方 向之一行走。

elif 表达式 n : 语句块 n
else: 语句块n+1
2
if 表达式1: 语句块1 … if 表达式11: 语句块11… else: 语句块12 …
else: 语句块2
上节回顾-P50-例3-4思考题
程序是给满足某些教育条件的求职者提供面试机会。同时 满足以下三个条件之一的求职者会接到面试通知:
例3-4思考题程序
上节回顾-P56-习题3
把例3-3改为单分支语句来实现
上节回顾- P56-习题7
注意: 能被4整除的年份并不一定是闰年,应该同时被100整除才是闰年。
教学目标、重点难点
教学目标
程序设计的3种基本结构 循环结构概述 While语句
• 解决不确定循环次数问题 • 解决确定循环次数问题
【分析】
本题使用循环结构解决,每循环一次 累加一个整数值,整数的取值范围为 1~100。

课后题答案-C语言程序设计(第2版)

课后题答案-C语言程序设计(第2版)

《C语言程序设计能力教程(第二版)》课后作业及实训题参考答案第1章进入C语言程序世界二、1. I love China!printf("we are students.\n")2. 6项目实训题参考答案1.编写一个C程序,输出以下信息:* * * * * * * * * * * * * * * * * * * *I am a student!* * * * * * * * * * * * * * * * * * * *main(){ printf("********************\n");printf(" I am a student!\n ");printf("********************\n");}2.已知立方体的长、宽、高分别是10cm、20cm、15cm,编写程序,求立方体体积。

解:main(){int a,b,c,v;a=10;b=20;c=15;v=a*b*c;printf("v=%d",v);}本程序运行结果为:v=3000第2章编制C程序的基础知识一选择题C B A B A C C二操作题,2,-8,23.000000,2.500000,-8.0000002. ABC DEFGHwhy is 21+35 equal 523.3 14 32 31 24. aa bb cc abcA N项目实训题1.定义一个符号常量M为5和一个变量n值为2,把它们的乘积输出。

#define M 5main(){ int n,c;n=2; c=M*n;printf("%d\n",c); }2.编程求下面算术表达式的值。

(1)x+a%3*(int)(x+y)%2/4,设x=2.5,a=7,y=4.7;(2)(float)(a+b)/2+(int)x%(int)y,设a=2,b=3,x=3.5,y=2.5。

机械工业出版社c语言各章节编程题参考答案(书中有)

机械工业出版社c语言各章节编程题参考答案(书中有)
else if((a==b)||(b==c)||(a==c)) printf(“This is a isoceles triangle\n”);
else if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))printf(“This is a
if(b>c){temp=b;b=c;c=temp;}
if(c>d){temp=c;c=d;d=temp;}/*d已经为最大的数*/
if(a>b){temp=a;a=b;b=temp;}
if(b>c){temp=b;b=c;c=temp;}/*c已经为次大的数*/
if(a>b){temp=a;a=b;b=temp;}/*a已经为最小的数*/
printf(“ *** ”);
printf(“ ***** ”);
printf(“ *** ”);
printf(“ * ”);
}
3参考答案
#include <stdio.h>
main()
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: day=31; break;
case 4:
case 6:
case 9:
}
结束
5 解答:
S0:i=0;
S1:判断gi是否大于80,若大于转S3;
S2:i=i+1;
S3:打印i,gi
S4:若i<10,返回S1否则继续执行。
6 解答:求两个整数的最大公约数、最小公倍数

c语言程序设计谭浩强第四版

c语言程序设计谭浩强第四版

c语言程序设计谭浩强第四版C语言程序设计是计算机科学与技术领域中非常重要的基础课程之一。

谭浩强教授所著的《C语言程序设计》自问世以来,以其通俗易懂的语言和丰富的实例,深受广大学生和编程爱好者的喜爱。

第四版在继承前三版优点的基础上,对内容进行了更新和完善,更加符合现代编程教育的需求。

第一章:C语言概述本章主要介绍了C语言的发展历程、特点以及C语言在计算机编程领域中的应用。

C语言以其高效、灵活和可移植性,成为系统编程、嵌入式开发等领域的首选语言。

第二章:C语言的基本概念本章详细讲解了C语言的基本组成元素,包括数据类型、变量、常量、运算符和表达式等。

这些是编写C程序的基础,也是理解程序逻辑的关键。

第三章:顺序结构程序设计顺序结构是最简单的程序结构,本章通过实例讲解了如何使用顺序结构编写程序,以及如何通过输入输出函数实现数据的交互。

第四章:选择结构程序设计本章介绍了条件语句if、switch等选择结构的使用,通过这些结构可以实现程序的分支逻辑,使程序能够根据不同的条件执行不同的代码块。

第五章:循环结构程序设计循环结构是程序设计中不可或缺的部分,本章详细讲解了for、while、do-while等循环语句的用法,以及如何使用循环结构实现重复操作。

第六章:数组数组是存储多个同类型数据的集合,本章介绍了一维数组和二维数组的定义、初始化和使用,以及如何通过数组实现数据的批量处理。

第七章:函数函数是程序模块化的基础,本章讲解了函数的定义、声明、调用以及参数传递机制,包括值传递和地址传递的区别和应用。

第八章:指针指针是C语言中非常强大的特性之一,本章详细介绍了指针的基本概念、指针与数组的关系、指针的运算以及指针在函数中的应用。

第九章:结构体与联合体本章介绍了如何使用结构体和联合体来定义复杂的数据类型,以及如何通过这些复合数据类型实现数据的组织和管理。

第十章:预处理命令预处理命令是C语言编译过程中的特殊指令,本章讲解了宏定义、文件包含、条件编译等预处理命令的用法。

第6章程序设计语言习题与答案

第6章程序设计语言习题与答案

第六章习题(1)复习题1、简述自然语言与形式语言的概念以及区别、汇编语言与机器语言的概念及区别。

自然语言是某一社会发展中形成的一种民族语言,而形式语言是进行形式化工作的元语言,它是以数学和数理逻辑为基础的科学语言。

用机器指令形式编写的程序称为机器语言,用带符号或助记符的指令和地址代替二进制代码成为语言进化的目标。

这些使用助记符语言的语言后来就被称之为汇编语言。

(P135P136)2、什么是高级程序设计语言?它有什么特点?高级语言是汇编语言的一种抽象。

高级语言的设计目标就是使程序员摆脱汇编语言细节的繁琐。

高级语言同汇编语言都有一个共性,那就是:它们必须被转化为机器语言,这个转化的过程称为解释或编译。

(1)高级语言接近算法语言,易学、易掌握;(2)高级语言设计出来的程序可读性好,可维护性强,可靠性高;(3)高级语言与具体的计算机硬件关系不大,其程序可移植性好,重用率高;(4)高级语言自动化程度高,开发周期短,利于提高程序的质量。

(P138)3、列举程序设计语言的几种范型。

程序语言大致分为命令式程序设计语言、面向对象的程序设计语言、函数式程序设计语言和逻辑型程序设计语言等范型。

(P138-140)4、简述语言虚拟机。

提示:语言虚拟机是某种语言的解释器。

语言虚拟机是建立在硬件和操作系统之上,针对不同的硬件和操作系统有不同的虚拟机,通过语言虚拟机屏蔽掉硬件的差异。

这样使得硬件系统能够支持这种语言编写的程序的有效执行。

目前最流行的语言虚拟机是Java虚拟机。

(P147)5、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么?提示:主要有编译、解释等方式,也有两种方式的混合使用的形式。

编译是使用编译器将高级语言编写的源程序转换成计算机可以执行的机器语言可执行程序,也可以理解为用编译器产生可执行程序的动作。

编译方式是一次编译,然后执行程序可以反复多次执行。

解释是另一种将高级语言转换为可执行程序的方式。

C语言程序设计教程李凤霞第三版课后答案

C语言程序设计教程李凤霞第三版课后答案

1 【C语言】《C语言程序设计教程(第二版)》习题答案说明1. 本文所指的《C语言程序设计教程(第二版)》是李凤霞主编、北京理工大学出版社出版的,绿皮。

2 第1章程序设计基础知识一、单项选择题(第23页)1-4.CBBC 5-8.DACA二、填空题(第24页)1.判断条件2.面向过程编程3.结构化4.程序5.面向对象的程序设计语言7.有穷性8.直到型循环9.算法10.可读性11.模块化12.对问题的分析和模块的划分三、应用题(第24页)2.源程序:main(){int i,j,k; /* i:公鸡数,j:母鸡数,k:小鸡数的1/3 */printf("cock hen chick\n");for(i=1;i<=20;i++)for(j=1;j<=33;j++)for(k=1;k<=33;k++)if (i+j+k*3==100&&i*5+j*3+k==100)printf(" %d %d %d\n",i,j,k*3);}执行结果:cock hen chick4 18 788 11 8112 4 843.现计算斐波那契数列的前20项。

递推法源程序:main(){long a,b;int i;a=b=1;for(i=1;i<=10;i++) /*要计算前30项,把10改为15。

*/ {printf("%8ld%8ld",a,b);a=a+b;b=b+a;}}递归法源程序:main(){int i;for(i=0;i<=19;i++)printf("%8d",fib(i));}fib(int i){return(i<=1?1:fib(i-1)+fib(i-2));}执行结果:1 123 5 8 13 21 34 5589 144 233 377 610 987 1597 2584 4181 6765 4.源程序:#include "math.h";main(){double x,x0,deltax;x=1.5;do {x0=pow(x+1,1./3);deltax=fabs(x0-x);x=x0;}while(deltax>1e-12);printf("%.10f\n",x);}执行结果:1.32471795725.源程序略。

循环结构习题有答案

循环结构习题有答案

第6章循环结构程序设计1.以下叙述正确的是()A、do-while语句构成的循环不能用其它语句构成的循环代替。

B、d o-while语句构成的循环只能用break语句退出。

C、用do-while语句构成的循环,在while后的表达式为非零时结束循环。

D、用do-while语句构成的循环,在while后的表达式为零时结束循环。

答案:D2.以下程序的输出结果是( )A、10,1 9,2B、9,8 7,6C、10,9 9,0D、10,10 9,1main( ){int x=10,y=10,i;for(i=0;x>8;y=++i)printf("%d,%d",x--,y);}答案:D注解:循环执行2次,由x控制循环的执行次数;输出值为两次循环过程中x每次的自减值和y在for语句的第三个表达式中得到的i自增变化后的值。

3.以下程序的输出结果是( )A、2 0B、3 1C、3 2 1D、2 1 0main( ){ int n=4;while(n--) printf("%d ",--n);}答案:A4.以下程序的输出结果是( )A、#*#*#B、#####C、*****D、*#*#*main( ){ int i;for(i=1;i<6;i++){ if(i%2) {printf("#");continue;}printf("*");}printf("\n");}答案:A注解:循环控制变量i的值从1变化到5,i为1、3、5时,i%2为1,if语句的条件为真,则执行if后的子句,输出#,然后执行continue语句,终止本次循环的执行,进入下一轮循环,i为2、4时,i%2为0,if语句的条件为假,则if后的子句并不执行,直接输出*,所以最后的输出为#*#*#。

5.以下程序的输出结果是( )A、编译不通过,无输出B、acegC、acegiD、abcdefghimain( ){ int i;for(i='A';i<'I';i++,i++) printf("%c",i+32);printf(" \n");}答案:B注解:循环控制变量i的取值为A、C、E、G,将它们转化为小写字母的格式输出。

第6章滚动条、计时器和循环程序

第6章滚动条、计时器和循环程序

2. Do Until…Loop形式
Do Until 逻辑表达式 循环体
[Exit Do]
Loop Do Until…Loop形式执行过程如下。 ① 计算逻辑表达式的值,若值为False,执行②;否则,执行④。 ② 执行循环体。 ③ 转向执行①。 ④ 执行Loop后面的语句,即退出Do Until…Loop循环。 使用Until关键字是当条件为False时执行循环体,直到当条件为True时终止
滚动条的属性
1. Value属性
Value属性标志滚动条的当前值(滚动滑块的位置),当滚动滑 块的位置移动时,Value属性值也随之改变。在程序中也可 以用代码设置,设置时滚动滑块的位置随之移动。其值为整 型,范围应在Min和Max之间。
2. Min属性
滚动滑块在最小位置的值,其值为整型,范围应在-32768和 32767之间。水平滚动条滚动滑块在最左边,垂直滚动条滚 动滑块在最上边,是滚动滑块在最小位置的值。
在For语句中初值、终值和步长为循环参数,他们都可以是 数值表达式,若省略Step选项,默认步长为1。循环变量是 数值变量,是循环计数器。
For循环执行次数为:(终值-初值)\ 步长 + 1。
Exit For的作用是退出循环。是可选项,当执行Exit For语句 时跳出本层For循环结构,执行Next的下一个语句。
4. Do … Loop Until形式
Do 循环体
[Exit Do] Loop Until 逻辑表达式 Do…Loop Until 形式执行过程如下。 ① 执行循环体。 ② 计算逻辑表达式的值,若值为False,转向执行①;否则,执行③。 ③ 执行Loop Until后面的语句,即退出Do…Loop Until循环。 该形式不进行任何检查便执行循环体,每次执行循环体后,检查逻辑表达 式的值,若值为False时再次执行循环体,直到逻辑表达式的值为True时终 止循环。 Exit Do的作用是退出循环。Exit Do是可选项,Exit Do语句用来跳出本层 Do循环,一般与If语句配合使用。

C语言考试

C语言考试
A. (***a=25,b=14,c=19) B. (***a=26,b=13,c=19)
C. (###a=25,b=14,c=19) D. (###a=26,b=13,c=19)
答案:D
4、以下程序的输出结果是( )。
main()
{
int i=010,j=10,k=0x10;
printf("%d,%d,%d\n",i,j,k);}
{
char c1='6',c2='0';
printf("%c,%c,%d,%d\n",c1,c2,c1-c2,c1+c2);
}
A.因输出格式不合法,输出出错信息B.6,0,6,102
C.6,0,7,6 D.6,0,5,7
答案:B
7、设有如下定义:int x=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));输出结果是( )。
}
答案:D
6、在C语言中,多分支选择结构语句为
switch(c)
{case常量表达式1:语句1;
……
case常量表达式n-1:语句n-1;
default语句n;}
其中括号内表达式c的类型( )。
A.可以是任意类型B.只能为整型
C.可以是整型或字符型D.可以为整型或实型
答案:C
7、当a = 1, b = 3 , c = 5, d = 4时,执行完下面程序段后x的值为( )。
答案:正确
3、健壮的算法不会因为非法输入而出现莫名其妙的状态。()
答案:正确
第三章数据类型运算符与表达式
一、单项选择题
1、下列字符串是标识符的是( )。

第六章 循环结构程序设计

第六章 循环结构程序设计

6-1.比较while语句、do–while语句和for语句的异同。

答:(1)while语句、do-while语句用于条件循环,for语句用于计数循环。

(2)while语句、for语句是先判断循环条件,后执行循环体,如果循环条件一开始就不成立,则循环体一次也不被执行;而do-while语句是是先执行循环体,后判断循环条件,所以循环体至少被执行一次。

(3)知道循环的次数可选用for语句实现循环,不知道循环的次数可选用while语句或do-while语句实现循环.(4)一般而言,三种循环语句可等价实现.6-2 仔细阅读下面的程序,指出程序的运行结果.#include<stdio.h>void main(){ int i;for(i=0;++i;i<5){ if(i==3){printf("%d\n",++i);break;}printf("%d\n",++i);}}答:24思考:语句“for(“i=0;++i;i<5”)在编译时为何会给出语法警告错误?当将其改为“for(i=0;i<5;++i)”时,运行结果又将如何?6-3 仔细阅读下面的语的程序,指出程序的运行结果。

#include"stdio.h"void main(){ int i, a=0;for(i=1;i<=5;i++){do{i++;a++;} while(i<3);}i++;printf("a=%d,i=%d",a,i);}答:a=3,i=7思考:在for循环中嵌套着do-while循环,那么do-while循环中对i的修改会对for循环产生影响吗?6-4编写程序,用1000个单词”computer”填充屏幕,每行60个 .解:#include<stdio.h>void main(){ int i;for(i=1;i<=1000;i++){ printf("computer.");if(i%60==0)printf("\n");}}思考:在for循环中,”if(i%60==0)printf(“\n”);”语句的作用是什么?没有此语句将会是什么状况?6-5输入一行字符(以$结束),统计其中的数字字符、空格字符出现的次数。

C语言第6章循环结构程序设计

C语言第6章循环结构程序设计

第6章循环控制本章要求:1、初步熟悉用计算机解决问题的思路。

2、掌握while、do-while、for语句的特点和使用方法。

3、掌握break、continue语句的用法。

4、熟悉一些常见问题的算法及其C语言实现。

§6.1 概述循环:反复执行称为“循环体”的程序段。

循环控制常用于数学迭代、对象遍历等问题的求解,几乎所有实用程序都包含循环。

特别是在现代多媒体处理程序(图像、声音、通讯)中,循环更是必不可少。

Intel公司为了加快循环程序的执行,在CPU硬件中加入多媒体扩展指令MMX(Multi-Media-eXtension );AMD在CPU中加入3D Now!指令。

循环结构是结构化程序三种基本结构之一。

(顺序结构、分支结构)。

根据开始循环的初始条件和结束循环的条件不同,C语言中用如下语句实现循环1、用goto语句和if语句构成循环。

2、用while语句。

3、用do-while语句。

4、用for语句。

§6.2 goto语句一般形式:goto 语句标号作用:无条件转向“语句标号”处执行。

“语句标号”是一个标识符,它表示程序指令的地址。

goto语句不符合结构化程序设计准则,因为无条件转向使程序结构无规律、可读性差。

一般应避免使用goto语句,但如果能大大提高程序的执行效率,也可以使用。

[例6.1] 用if语句和goto语句构成循环,求。

main(){int i,sum=0;i = 1;loop:if (i <= 100){ sum = sum + i;i++;goto loop;}printf("%d",sum);}§6.3 while语句一般形式:while(表达式) 语句作用:实现“当型”循环。

当“表达式”非0(真)时,执行“语句”。

“语句”是被循环执行的程序,称为“循环体”。

特点:先判“表达式(条件)”。

[例6.2]main(){int i,sum=0;i = 1;whie (i <= 100){sum = sum + i;i++;}printf("%d",sum);}注意:1、注意给出循环的初始条件,如本例中“sum=0、i=1”。

第六讲控制流-循环结构程序设计

第六讲控制流-循环结构程序设计

16
6.4 循环语句嵌套
while(表达式 表达式1) 表达式 { …
while(表达式 表达式2) 表达式 { … … } } }
while(表达式 表达式1) 表达式 { … do{ …
while(表达式 表达式2) 表达式 …
}
while(表达式 表达式1) 表达式 { … for( …; …; …)
F
P
T
当P为真 为真 A A
4
6.1 while语句 语句
100
例3.9: 求 ∑ n
n=1
Байду номын сангаас
i=1 当i<=100 sum=sum+i i+ +
#include <stdio.h> void main(void) { int i,sum=0; i=1; 要点: 语句要么是单条语句,要么是复合语句。 要点 语句要么是单条语句,要么是复合语句。 while (i<=100) 循环体若不止一条语句时, 循环体若不止一条语句时, { sum=sum+i; 应用{…}括起来。 括起来。 应用 括起来 i++; 在循环体中应有使循环趋于结束的语句, 在循环体中应有使循环趋于结束的语句, } 以避免“死循环” 以避免“死循环”。 printf(“%d”,sum); }
9
求解表达式1 求解表达式 F
表达式2 表达式 T 语句
求解表达式3 求解表达式
for循环下面的语句 循环下面的语句
10
6.3 for语句 语句
例:求 ∑ n 求
n=1 100
#include <stdio.h> void main(void) { int i,sum=0; , ; for(i=1;i<=100;i++) sum=sum+i; ; printf(“%d”,sum); }

第六章循环程序设计案例

第六章循环程序设计案例

二、什么是循环

生活中的循环
打印50份试卷
10000米赛跑
锲而不舍地学习
旋转的车轮
循环结构的特点
循环结构 循环条件 循环操作
二、什么是循环
循环结构也称重复结构:程序中反复执行的一 组指令或程序段。 循环体:被反复执行的程序段。 循环变量:用来控制循环是否继续进行的变量。
三、循环语句
while 循环 do...while 循环 for 循环
for语句最简单的形式: for(循环变量赋初值;循环条件;循环变量增值) 例如: for(i=1;i<=100;i++) sum=sum+i; 用for语句 简单、方便。
main() {int i,sum=0; for(i=1;i<=100;i++)
sum=sum+i;
printf(“%d”,sum); }
初值(从什么情 况开始)
int i=1;
条件(结束值,什么 情况结束)
while (i<=5) {
循环体(重 复什么)
printf(“hello\n"); i++; } }
循环体中改变 循环条件的语 句)
例 求1+2+· · · · · ·+ 100
分析: 求和的过程为:
1) S=1 2) S=1+2 3) S=1+2+3 · · · · · · 100) S=1+2+ · · · +100 S=0 S =S+1 S =S+2 S = S+ 3 · · · · · · S= S+100
do-while、while的区别

第六讲 循环结构程序设计

第六讲 循环结构程序设计

图6 -1
循环语句, 的值, 【例6.1】利用 】利用while循环语句,计算 循环语句 计算1+1/2+…+1/50的值, 的值 并打印计算结果。 并打印计算结果。 本题可看作数列{a 的求和, 本题可看作数列 k = 1/k | k=1,2,…,50 }的求和,累加求和的 , , , 的求和 通项为: 通项为:sum+1/k—>sum,所以,可以用如下伪语言算法描述。 ,所以,可以用如下伪语言算法描述。
输出sum 输出
说明
1. while语句中循环体最少执行零次、最多执行无穷次,即 语句中循环体最少执行零次、 语句中循环体最少执行零次 最多执行无穷次, 死循环” “死循环”。 2. 如果循环体是一个空语句,表示不执行任何操作。 如果循环体是一个空语句,表示不执行任何操作。 3. 循环体中应有使循环趋于结束的语句。例如,在[例6.1] 循环体中应有使循环趋于结束的语句。例如, 例 循环结束条件是i<=50, 循环体中语句 ; 将最终导致 循环体中语句i++; 中 , 循环结束条件是 i<=50的发生。 如果无此语句 , i值始终不变, 则该循环将永 的发生。 值始终不变, 的发生 如果无此语句, 值始终不变 远执行下去,这种情况称为死循环。例如, 远执行下去,这种情况称为死循环。例如, while(1) sum + = i; ; 就是一个死循环。 就是一个死循环。
6.1 当型循环 当型循环while语句 语句
当型循环又叫while循环,其一般句型为: 循环,其一般句型为: 当型循环又叫 循环 while( 表达式 ) { 循环体语句; 循环体语句; } 其中: 循环体语句, 可以是一条语句, 其中 : 循环体语句 , 可以是一条语句 , 但通常 为复合语句。 为复合语句。 while循环执行时,先处理表达式,表达式的值 循环执行时,先处理表达式, 循环执行时 循环体语句被执行, 为“真”时,循环体语句被执行,然后再去判表达 式的值,如果表达式的值仍为“ 式的值,如果表达式的值仍为“真”时,则再次执 行循环体语句;如果表达式值为“ 行循环体语句;如果表达式值为“假”,则退出循 如图5-1所示 所示。 环,如图 所示。 假 表达 式 真 循环体语句

VisualFoxpro程序设计第6讲DOWHILE循环结构

VisualFoxpro程序设计第6讲DOWHILE循环结构
中国矿业大学计算机学院 李向群
第四章 Visual FoxPro 程序设计基础 第6讲 DO WHILE 循环
1
循环结构程序设计
中国矿业大学计算机学院 李向群
循环结构是指从程序的某处开始有规律的重复执行某一 程序段的程序结构。
三种循环结构: FOR 循环
DO WHILE 循环
SCAN 循环
两个命令: EXIT
中国矿业大学计算机学院 李向群
第四章第6讲 DO WHILE循环结构 讲课结束 谢谢收看
CLEAR
USE js.dbf EXCLUSIVE
STORE 0 TO t1, t2, t3, t4
DO WHILE .NOT. EOF()
DO CASE
??????稠浣?
教授
t1=t1+1
??????稠浣?
副教授
t2=t2+1
8
????稠浣?
讲师
中国矿业大学计算机学院 李向群
t3=t3+1
OTHERWISE
称为循环条件,循环 体是需要多次重复执 行的程序段。
ENDDO
3
DO WHILE 循环结构
中国矿业大学计算机学院 李向群
?语句执行时,若循环条件的值为.T.,则执行 循环体
?一旦程序执行遇到ENDDO就自动返回到循环条 件部分,DO WHILE会重新判断循环条件是否为. T.,以决定是否再次执行循环体。
t4=t4+1
ENDCASE
SKIP
ENDDO
@1,10 SAY 教授的人数:+STR(t1)
??‰?? 副教授的人数:+STR(t2)
??‰?? 讲师的人数:+STR(t3)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第6章循环结构程序设计【计划课时】授课6课时+上机4课时6.1 概述循环是在循环条件为真时计算机反复执行的一组指令(循环体)。

循环控制通常有两种方式:·计数控制——事先能够准确知道循环次数时用之用专门的循环变量来计算循环的次数,循环变量的值在每次执行完循环体各语句后递增,达到预定循环次数时则终止循环,继续执行循环结构后的语句。

·标记控制——事先不知道准确的循环次数时用之由专门的标记变量控制循环是否继续进行。

当标记变量的值达到指定的标记值时,循环终止,继续执行循环结构后的语句。

在C语言中可用以下语句构成循环:if … gotowhiledo … whilefor6.2if … goto语句循环结构P106goto是一种无条件转向语句。

一般形式:goto标号;if … goto 可构成当型/直到型循环结构(尽量少用,以提高程序可读性/结构性)。

【例一】{int n=0,sum=0;loop: sum+=n;++n;if (sum<=10000) goto loop;printf(“n = %d\n”,n);}6.3 while 语句循环结构 P107一般形式 while (条件表达式) 循环体;用于构成当型循环:先判断后执行/条件为真继续循环,直到条件为假时结束循环。

【注意】条件表达式或循环体内应有改变条件使循环结束的语句,否则可能陷入“死循环”。

【例一】main() { int n=0; while (n<=2) { n++;printf(“%d”,n); } }结果:123【讨论】若去while 语句中的{},结果:3;若将n++移到printf 语句中,结果:012【例二】int n=0;while (n++<=2); printf(“%d”,n); 结果:4【讨论】n=3时,while 条件为假,结束循环,但比较后n 自加了一,所以n=4。

【例三】main() {int i=0; while (1) {printf(“*”); i++;【例二】 main() {int n=0,sum=0;loop: if (sum>=10000) goto end;sum+=n; ++n;goto loop;end: printf(“n = %d \n”,n);}if (i<3) break; }printf(“\n”);}}结果:*【讨论】若将if (i<3)改为if (i>3),结果:****【例四】编程实例研究:求解全班平均成绩问题描述:某个班中有n个学生,已知他们参加某次考试的成绩(0至100之间的整数),编程求全班学生在这次考试中的平均成绩。

思路:使用用自顶向下、逐步求精的技术,先用伪码表示问题的顶层:Determine the class average for the quiz (求解全班平均成绩)顶层只有一句(描述程序的整个功能,但未给出足够的细节)。

第一步求精——initialize variables (初始化变量)input,sum,count the quiz grades (输入各人成绩,求其总和,计数键入次数) calculate and print the class average (计算并输出全班的平均成绩)这里只用到顺序结构,即所列出的步骤是按顺序一个接一个执行的。

说明:如果用total表示总成绩,用counter表示键入成绩的次数,则使用前这两个变量应先初始化(设置为0)。

第二步求精:①伪码语句 initialize variables可作如下求精:initialize total to zeroinitialize counter to zero讨论:为什么只对这两个变量进行初始化?②伪码语句 input,sum,count the quiz grades可作如下求精:input the first gradewhile the user has not as yet entered the sentineladd this grade into the running totaladd one to the grade counterinput the next grade(possibly the sentinel)因为本例不知道要输入多少个成绩,所以程序必须能够处理任意个数的成绩。

程序如何判断何时终止输入成绩呢?方法之一是使用一个专门的值来指示数据输入的结束。

这个值称为“标志值”(sentinet value)。

由于考试成绩是非负的整数值,本例中将取-1为标记值。

③伪码语句 calculate and print the class average可作如下求精:if the counter is not equal to zeroset the average to the total divided by the counterprint the averageelseprint “No grades were entered”说明:被0除是一种致命的错误,如果不能明确检测并在程序中作适当的处理,将会导致程序执行失败(“崩溃”)。

当伪码算法详细到能够把伪码转换为C程序时,即可着手编写程序了。

参考程序如下:/*用标记控制的循环求全班平均成绩的程序*/#include <stdio.h>main( ){float average; /*变量声明*/int counter,grade,total;/*初始化阶段*/total=0;counter=0;/*处理阶段*/printf(“请输入成绩(用-1结束输入):”);scanf(“%d”,&grade);while (grade!=-1) {total=total+grade;counter=counter+1;printf(“(“请输入成绩(用-1结束输入):”);scanf(“%d”,&grade);}/*终止阶段*/if (counter!=0){average=(float)total/counter;printf(“全班平均值是%.2f”,average);}elseprintf(“还没有输入成绩!\n”);return 0; /*表明程序成功地结束*/}6.4 do … while语句循环结构P108一般形式 do {循环语句(组)} while (条件表达式);用于构成直到型循环:先执行后判断/条件为真继续循环,直到条件为假时结束循环。

【例一】main(){int n=0;do n++;while(n<5);printf(“%d”,n);}结果:5【讨论】如果将最后两句合成:do printf(“%d”,n++);while(n<5); 结果:01234【例二】求∑i =1+2+3+4…+99+100 (i=0~100)main(){int i=1,sum=0;do{ sum=sum+i;i++;} while (i<=100);printf(“Sum=%d\n”,sum);}【例三】从键盘输入一个整数,分析以下程序运行结果。

思路:若X为整数,则X%10可得X的个位数 X/10可得X的个位数移去后形成的新数如:125%10=5 → 125/10=12 → 12%10=2 → 12/10=1 → 1%10=0 → 1/10=0(结束)main(){int num,c;printf(“请输入一个整数:“);scanf(“%d”,&num);do{c=num%10; /*取得num的个位数*/printf(“%d”,c); /*输出num的个位数*/} while((num/=10)>0); /*直到num/10为0*/printf(“\n”);}结果:输入12456,输出65421(将各位数字反序显示出来)【讨论】如果while(num/=10>0),结果如何?陷入无限循环(输出无数个6)。

原因:num/=10>0中赋值号优先级最低,而num/(10>0)的结果除num=0(输出0)外均真。

6.5 for语句循环结构 P110一般形式 for (表达式1;条件表达式;表达式3){循环语句(组);}用于构成当型循环:先判断后执行/条件为真继续循环,直到条件为假时结束循环。

表达式1: 整个循环中只执行1次,常用来对循环变量设置初值条件表达式(表达式2): 其值为真(非0)时继续执行循环语句(组),否则结束循环表达式3: 常用于循环变量值的更新(循环体的一部分每次循环语句组执行完后执行一次)以下程序中执行几次循环?main(){ int i;for (i=2;i==0; )printf(“%d”,i++); }结果:0次【讨论】若i==2,结果为2,循环执行一次。

i为其他值时,同i==0。

【例二】求∑i =1+2+3+4…+99+100 (i=0~100)main(){ int i , sum=0;for (i=1;i<=100;i++) sum=sum+i;printf(“Sum=%d\n”,sum);}【例三】for ( a=1,i=-1; -1<=i<1;i++){ a++;printf(“%d”,a);}printf(“%d”,i);结果:-1【讨论】-1<=i<1为假(从左到右,-1<=i的值为1)【例四】for (i=0;i<3;i++)printf(“*”);printf(“%d”,i);结果:***3【例五】main(){ int a,i;for (i=0;printf(“a=”),scanf(“%d”,&a);i++) printf(“H”);}结果:a=1Ha=2Ha=6Ha=…(不管a为何整型数值,包括0,循环均不停止,但a为实型数值或字符等时,循环终止)scanf() 函数的返回值见P386。

正确输入时,返回数据个数,错误输入时返回0。

如c=scanf(“%d,%d,%d”,&a,&b,&c);如果a、b、c输入正确,c=3,否则c=0。

【讨论】如果for (i=0;printf(“a=”),scanf(“%d”,&a),a=a;i++) printf(“H”);则当a为0或-0时,循环结束(表达式2为逗号表达式,其值为最后赋值表达式的值。

【例七】下列程序段的for循环语句int i,x;for (i=0,x=0;i<=9&&x!=876;i++) scanf(“%d”,x);A)最多执行10次B)最多执行9次C)是无限循环D)循环体一次也不执行【例八】以下程序的输出结果是:main(){int y=10;while (y--);printf("y=%d\n",y);}A)y=0 B)y=1 C)y=随机值D)y=-16.8 break语句和continue语句 P114break在switch中退出switch结构/在循环中结束循环【例一】Array main(){int a,y;a=10,y=0;do { a+=2;y+=a;if (y>50) break;}while (a=14); /*每次循环到此 a值都为14*/printf(“a=%d,y=%d\n”,a,y);}结果:a=16,y=60②continue 循环“短路”(跳过循环体后面的语句,开始下一循环)。

相关文档
最新文档