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

3 while语句
例1:输出1~200中所有能被4整除的整数。
i=1 i<=200
i % 4==0 T 输出 i i++ F
#include <stdio.h> void main() { int i=1; while(i<=200) { if( i%4==0) printf(“%d,”,i); i++;
2 循环结构算法设计
例1:输出1~200中所有能被4整除的整数。
i=1 i<=200
i % 4==0 T 输出 i i++ F
2 循环结构算法设计
直到型循环结构设计 (1)赋初值 (2)执行循环操作的语句序列 (3)判断循环条件是否为真,是则转(2) 否则转(4) (4)结束循环
2 循环结构算法设计
执行语句 语句 执行表达式3
循环体
for语句等价于下列语句: 语句等价于下列语句: 语句等价于下列语句 表达式1; 表达式 ; while (表达式 ) 表达式2) { 语句; 语句; 表达式3; 表达式 ; }
执行for循环之后的语句
5 for语句
for语句使用最多的情况:
for(循环变量赋初值;循环条件;循环变量增量) 语句; 例如:for( i=1;i<100;i++ ) for( sum+=i; 注意:for语句后边括号中的三个表达式可以省略, 可是括号中的两个分号不能省略
5 for语句
3.省略表达式3 for(i=0;i<10; ) i的值不变,也是 sum+=i; 死循环
5 for语句
例2:求4的10次方 …… int a=1,b=4,i; for(i=0;i<10;i++ ) a=a*b; ……
6 循环结构程序设计

执行 循环 后面的语句
例如:1~100的累加 for(i=1;i<=100;i++)
sum=sum+i;
它相当于以下语句: i=1; 表达式1; while(表达式2) 表达式3;
第六章 6.3 for 语句
while (i<=100)
{ sum=sum+i; i++; }
3、 说明
三个表达式都可以是逗号表达式。
【例1】输入一系列整数,判断其正负号,当 输入0时,结束循环。
#include "stdio.h" void main() { int x; scanf(" %d ",&x);
输入数据,为第 一次判断做准备
判断是否结束 判断正负号
while(x!=0) { if(x>0) printf(" + "); else printf(" - "); scanf(" %d ",&x); }
第六章 循环结构程序设计
6.1 goto语句构成的循环
1、语句形式:
例如: goto label; …… 2. 在程序执行过程中,如果 label: …... goto 语句标号;
遇到goto语句,则程序执行 流程无条件地转向语句标号 后的语句继续执行。
语句标号用标识符 表示,它的定名规 则与变量名相同。
思考
求n!=1 × 2 × 3 × …n
累乘器赋初值
整数连乘结果一定 是整数,而本例中 结果数值相当大, 用long型都无法存 放,因此将存放累 乘结果的变量s定义 为double型。
第六章 6.3 for 语句
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任选其一。
大学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。
程序设计基本结构

第6章程序设计基本结构著名计算机科学家Niklaus Wirth提出程序定义的著名公式:程序=数据结构+算法。
数据结构表示数据之间的关系,算法指明了对数据处理的步骤和方法。
在C语言程序设计中,数据类型描述数据结构,语句描述算法,程序由一系列语句组成。
也就是说,程序是一组能够完成特定任务的指令序列,按照特定的逻辑关系以一定的结构组织在一起,并以文件的形式存储在计算机的外部设备上。
程序设计是根据特定的问题,使用某种程序设计语言编写程序,让计算机自动执行。
程序设计包括结构化程序设计和面向对象程序设计。
结构化程序设计是传统的程序设计方法,通过自顶向下、逐步细化的模块化编程方式进行编程,层次清晰;面向对象程序设计通过编程语言提供的辅助工具设计用户界面,自动生成应用程序,用户只需编写少量的过程代码,通过事件驱动方式运行程序。
C语言是结构化的程序设计语言,本章将采用Visual C++作为编程环境,详细介绍结构化程序设计的基本结构和使用C语言进行结构化程序设计的基本方法。
6.1 概述按照结构化程序设计的观点,任何算法功能都可以通过程序模块组成的三种基本程序结构即顺序结构、选择结构(又称分支结构)和循环结构来组合实现。
结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构。
“自顶向下、逐步求精”的程序设计方法从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图;“单入口单出口”的思想认为一个复杂的程序,如果它仅是由顺序结构、选择结构和循环结构三种基本程序结构通过组合、嵌套构成,那么这个新构造的程序一定是一个单入口单出口的程序。
6.1.1 三种基本结构的流程图表示1.顺序结构顺序结构是最简单最基本的程序控制结构,程序中的的语句将自顶向下逐条执行,即按语句的排列顺序从第一条顺序执行到最后一条,如果要执行第n条语句,必须首先执行第n-1条语句,且每个语句只执行一遍,无需专门的控制语句实现。
C语言循环结构程序设计

i=-i;
//然后对i取负,得到它的绝对值
}
if(i==0)
printf("%d",i);
while(i!=0)
{
r=i%10;
printf("%d",r);
i=i/10;
}
printf("\n");
}
注意:循环体的有效范围 例: i=1; while(i<=100)
putchar(‘*’); i++;
i++;
i=10,iSum=55 1+2+3+...+10=55
} while(i<=10);
printf("1+2+3+...+10= %d\n",iSum);
}
例5.7 将一个给定的整数反序输出。
#include "stdio.h"
void main()
{
int i,r;
printf("\nInput an integer:");
{
****
for(j=1;j<=i;j++)
*****
putchar('*');
putchar('\n');
}
}
例5.12 求100以内的全部素数。
void main() {
int m,n,i,prime; i=0; for(m=2;m<=100;m++) {
void main()
{
int m,n,r;
printf("please input two positive integers:");
循环结构习题有答案
第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,将它们转化为小写字母的格式输出。
C语言循环结构程序设计实验报告
while语句:
main()
{ float n=1,s=0,t=1;
while(n<=25)
{ t=t*n;
s=s+t;
n++;
}
printf(“1!+2!+3!+…+25!=%e\n”,s);
}
do-while语句:
main()
{ float n=1,s=0,t=1;
(3)计算并输出Σ(2n+1)超过1000的第一个n值。
n=1
main()
{ int n=1,sum=0;
for(; ; n++) sum=sum+(2*n+1);
if(sum>2000) break;
printf(“n=%d,sum=%d\n”,n,sum);
}
if(sum>1000)break;for中的表达式2不能省去
while语句do-while语句
#include<stdio.h>#include<stdio.h>
void main() void main()
{{
int i=1,sum=0; int i=1,sum=0;
while(i<=100) do
{ {
sum=sum+i; sum=sum+i;
i++;i++;
5.某班有学生n人,从终端读入n及n个人学生的成绩,试编程实现以下功能:
①印出前3个最好成绩及取得每个最好成绩的人数;
第六章 循环结构程序设计
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输入一行字符(以$结束),统计其中的数字字符、空格字符出现的次数。
10.22_循环结构(嵌套_循环语句的程序设计)
为什么需要循环控制
在日常生活中或是在程序所处理的问题中 常常遇到需要重复处理的问题
要向计算机输入全班50个学生的成绩 教师检查30个学生的成绩是否及格
大多数的应用程序都会包含循环结构
循环结构和顺序结构、选择结构是结构化 程序设计的三种基本结构,它们是各种复 杂程序的基本构造单元
用break语句提前终止循环
#include <stdio.h> #define SUM 100000 int main() { float amount,aver,total; int i; for (i=1,total=0;i<=1000;i++) { printf("please enter amount:"); scanf("%f",&amount); total= total+amount; if (total>=SUM) break; } 实际捐款人数 aver=total / i ; printf(“num=%d\naver=%10.2f\n“,i,aver); return 0;}
语句 表达式 ;
Y
循环体语句 表达式 N
用do---while语句实现循环
例用 语句求: ,即
n
n 1
100
用do---while语句实现循环
解题思路:
Y N
i=1; sum=0; do { sum=sum+i; i++; }while(i<=100);
#include <stdio.h> int main() { int i=1,sum=0; do { sum=sum+i; i++; }while(i<=100); printf("sum=%d\n",sum); return 0; }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本程序的运行结果为 5 6 7 8 9 10 该例中当i<5时通过continue退出本次循环,所以运 行结果中不显示1、2、3、4数字。
章节目录
上一页
下一页
6.5 列表框和组合框 6.5.1 列表框(ListBox) ListBox控件为用户提供了选项的列表,用户可以从 列表中进行选择输入。如果项目数目超过列表框 可显示的数目,控件上将自动出现滚动条,它是 一种规范输入的好工具。 1. 列表框的常用属性、方法和事件 2. 列表框应用实例 【例6-11】计算并输出从sum=1+…+(k-1)+k。满足 sum>1000是退出循环。
章节目录 上一页 下一页
程序的运行结果如图6-2所示的左图,单击“计 算”按钮,将在标签上显示运行结果。
图6-2 程序运行结果
章节目录
上一页
下一页
【例6-2】计算n!,假设n=10。 分析:该例实现阶乘的运算,可以使用改变乘数的 值进行实现,使用循环可以方便的实现该类问题。 程序的运行结果如图6-3左图所示。
上一页
在编写程序过程中,往往出现相同类型操作需 要重复出现,如实现1+2+…+100,则需要做99次 加法,这类问题使用循环语句解决,可以使问题 变得简单。即循环语句用于实现语句块的重复执 行。根据问题的具体情况,C#中提供了四种不同 的循环机制:for循环、while循环、do…while循环 和foreach循环。这里介绍前三种循环机制, foreach循环将在数组中介绍。 6.1 for循环语句 for循环常常用于已知循环次数的情况,使用该循 环时,测试是否满足某个条件,如果满足条件, 则进入下一次循环,否则,退出该循环。
章节目录
上一页
下一页
do { sum=sum+k; k=k+1; }while(k<=100); label1.Text="从1加到100值为"+sum.ToString(); // 将sum显式转换为字符串
}
章节目录
上一页
下一页
6.5 循环的嵌套 当一个循环(称为“外循环”)的循环语句序列内 包含另一个循环(称为“内循环”),称为循环 的嵌套,这种语句结构称为多重循环结构。内循 环中还以包含循环,形成多层循环(循环嵌套的 层数理论上无限制)。三种循环(while循环、 do…while循环、for循环)可以互相嵌套。在多重 循环中,需要注意的是循环语句所在循环的层数。 如以下代码: int sum=0; for(int i=1;i<=10;i=i+1) for(int k=1;k<=i;k=k+1) sum=sum+k;
章节目录 上一页 下一页
流程图如图6-1所示。 该结构中,表达式1、 表达式2、表达式3是可选的, 但应该注意死循环的发生。 如表达式2省略,并且不采 用转移语句,会导致死循环 的发生。可以在循环体中的 任何位置放置break语句来强 制终止for循环——随时跳出 图6-1 for循环流程图 for循环。break语句通常包 含于if语句中。
} 章节目录
上一页 下一页
6.4 跳转语句 使用跳转语句,可以使程序执行跳转到程序中其它 部分。C#中提供四种转移语句:goto语句、break 语句、continue语句、return语句。 1. goto语句 goto语句可以将程序控制直接转移给标签制定的 语句。但由于goto语句改变了程序的正常流程,使 得程序特别容易出错,所以尽量不要用。而且, 用goto语句实现的循环完全可以用循环语句实现, 因此,goto语句很少使用。
章节目录 上一页 下一页
本例使用控制台程序实现。【计算】按钮的Click (单击)事件代码为: static void Main(string[] args) { for(int i=1;i<=10;i=i+1) { if(i<5) continue; Console.WriteLine(i); } Console.ReadLine( ); }
条件表达式 True 循环语句序列 False
图6-4 while程序流程图 章节目录 上一页 下一页
6.2.2 while循环语句的使用 【例6-3】设有一张厚为x mm,面积足够大的纸,将 它不断地对折。试问对折多少次后,其厚度可达 珠穆朗玛峰的高度(8844.43 m)。 设对折后纸的厚度为h mm,计数器为n。在没有对 折时,纸厚为x mm,每对折一次,其厚度是上一 次的2倍,在未到达8844.43 m时,重复对折。在程 序中,纸的厚度就是对折后纸的厚度,所以用一 个变量h。
章节目录 上一页 下一页
for(int i=1;i<10;i=i+1) { s=""; for(int k=1;k<=i;k=k+1) { sum=k*i;
s=s+k.ToString()+"×"+i.ToString()+"="+sum.To String()+";"; } label1.Text+=s+"\n"; // 显示并换行 }
Visual C#程序设计教程
第1章 程序设计语言与程 序设计方法 第2章 Visual C#概述 第3章 C#语法基础 第4章 顺序结构程序设计 第5章 选择结构程序设计 第6章 循环结构程序设计 第7章 面向对象编程技术 第8章 继承 第9章 数组与自定义类型 第10章 菜单、工具栏与状态 栏 第11章 文件操作 第12章 数据库技术 第13章 ActiveX控件 第14章 异常处理与跟踪调试 第15章 开发Web应用程序 第16章 部署应用程序 下一页
章节目录 上一页 下一页
在窗体设计图上,双击按钮button1编写【计算】按 钮的Click(单击)事件代码为: private void button1_Click(object sender, System.EventArgs e) { int sum; sum=0; for(int k=1;k<=100;k=k+1) { sum=sum+k; } label1.Text="从1加到100值为"+sum.ToString();}
章节目录 上一页 下一页
说明如下: ① 布尔条件表达式是一个具有boolean值的条件表达 式,为循环的条件。 ② 作为循环体的语句序列可以是简单语句、复合语 句和其他结构语句。 ③ while循环的执行过程:首先计算条件表达式的值, 如果为真(True),则执行后面的循环体,执行 完后,再开始一个新的循环;如果为假(False), 则终止循环,执行循环体后面的语句。
章节目录
上一页
下一页
建立应用程序用户界面与设置对象属性,如图6-5所 示。
图6-5 用户界面及程序运行结果
章节目录
上一页
下一页
章节目录
上一页
下一页
【计算】按钮的Click(单击)事件代码为: private void button1_Click(object sender, System.EventArgs e) { int n=0; float h; h=float.Parse(textBox1.Text); while (h<8844430) { n = n + 1; h=2*h; } textBox2.Text = n.ToString(); } 章节目录 上一页 下一页 程序运行结果如图6-5所示。
表达式1 表达式2 True False 循环语句序列 表达式3
章节目录
上一页
下一页
6.1.2 for循环语句的使用 根据下面的实例,了解for语句的工作流程及实现方 法。 【例6-1】计算1+2+3+…100。使用for语句实现。 分析:该问题属于重复执行加法的问题,并且参与 运算的两个操作数不断的按规律增加。该类问题 可以通过循环进行解决。 (1) 建立项目 (2) 设计窗体 (3) 设计代码
6.3 do…while循环 do…while循环非常类似于while循环。一般情况下, 可以相互转换使用。它们之间的差别在于while循 环的测试条件在每一次循环开始时执行,而 do…while循环的测试条件在每一次循环体结束时 进行判断。同样的,do…while可以解决一些循环 问题,但使用的频率较少。 6.3.1 do…while的语法格式 do…while语法的一般格式为: do { 语句序列; } while (布尔条件表达式)
章节目录章中介绍了break在switch中的用法,break语 句也可以用于退出所在的最近循环,使用break语 句时,将结束循环,执行后面的语句。break不能 放在循环语句或switch语句后,否则发生错误。 3. continue语句 continue语句用于循环语句中,类似于break语句, 但仅从当前的循环迭代中退出,然后执行下一次 迭代循环。 【例6-10】使用计数器循环语句了解continue语句的 使用,要求输出大于5的数
章节目录
上一页
下一页
④ 可以在循环体中的任何位置放置break语句来强制 终止while循环——随时跳出while循环。break语 句通常包含于if语句中。 ⑤ 可以在循环体中的任何位置放置continue语句, 在整个循环体没有执行完就重新判断条件,以决 定是否开始新的循环。continue语句通常包含于if 语句中。
图6-3 计算n! 章节目录 上一页 下一页
编写【计算】按钮的Click(单击)事件代码为: private void button1_Click(object sender, System.EventArgs e) { int sum,k; sum=1; for(k=1;k<=10;k++) { sum=sum*k; } textBox1.Text=sum.ToString(); }