第四章。循环结构(while、do-while、for)

合集下载

c语言常用的循环结构

c语言常用的循环结构

c语言常用的循环结构1C语言循环结构C语言中拥有多种循环结构供我们使用,本篇文章将要介绍三种常用的循环结构:while循环、for循环、do-while循环。

1while循环while循环体的结构和逻辑表达式之间的关系是“当…时",它首先判断循环条件是否满足,如果满足就进入if语句块执行,然后执行完if语句块后继续判断循环条件是否满足,如果条件不满足while循环结束,程序执行else语句块或者后续语句。

例程:```x=0;while(x<10)//如果x小于10{x++;//x加1printf("x的值为:%d\n",x);}```2for循环for循环体的结构和逻辑表达式和for循环的三个部分,分别是初始化语句、循环条件语句和循环控制语句,当满足初始化条件时,执行for循环语句,每一次都会执行循环条件来判断for循环的退出条件,如果退出条件循环语句满足,for循环结束,执行后续语句。

例程:```for(int i=0;i<10;i++)//使用for循环循环10次{printf("i的值:%d\n",i);}```3do-while循环do-while循环体的结构和逻辑表达式之间的是“先做…再判断",它会先执行一次do-while循环,然后在根据逻辑表达式判断是否继续循环,如果满足执行条件继续循环,反之执行后续语句。

例程:```int x=0;do//循环开始{x++;//x的值增加printf("x的值为:%d\n",x);}while(x<10);//当x小于10时继续循环```以上就是C语言中常用的三种循环结构,由此可见在C语言中可以借助循环语句实现重复代码的执行,是程序开发中一大帮助。

while,do...while及for三种循环结构

while,do...while及for三种循环结构

while,do...while及for三种循环结构循环结构while循环while (布尔表达式) {//循环内容}只要布尔表达式为true循环就会⼀直执⾏我们⼤多数情况会让循环停⽌下来,需要⼀个让表达式失效的⽅式来停⽌循环while循环⽰例public class whileDemo01 {public static void main(String[] args) {int i=0;int sum=0;//输出1-100while (i<100){i++;sum=i+sum;}System.out.println(sum);}}do...while循环do...while循环⾄少会执⾏⼀次do () {//代码语句} while (布尔表达式);while和do...while的区别while是先判断后执⾏,do...while是先执⾏后判断do...while总能保证循环⾄少被执⾏⼀次do...while循环⽰例public class dowhileDemo01 {public static void main(String[] args) {int i=0;int sum=0;do{sum=sum+i;i++;}while (i<=100);System.out.println(sum);}}public class dowhileDemo02 {public static void main(String[] args) {int a=0;while (a<0){System.out.println(a);}System.out.println("===========================");do {System.out.println(a);a++;}while (a<0);}}for循环for循环语句是⼀种⽀持迭代的通⽤结构,是最有效、最灵活的循环结构for循环执⾏的次数在执⾏前就确定for(初始化;布尔表达式;更新) {//代码语句}for循环⽰例public class forDemo01 {public static void main(String[] args) {int a=1;while (a<=100){System.out.println(a);a+=2;}for (int i=1;i<=100;i++){System.out.println(i);}System.out.println("for循环结束");}}分别输出0-100之间奇数及偶数的和public class forDemo02 {public static void main(String[] args) {//0-100之间奇数和偶数的和int sum1=0;int sum2=0;for (int i = 0; i <= 100; i+=2) {sum1=sum1+i;}for (int j = 1; j <=100; j+=2) {sum2=sum2+j;}System.out.println(sum1);System.out.println(sum2);}}输出1-1000的质数,每三个换⾏public class forDemo03 {public static void main(String[] args) {for (int i1 = 1; i1 <= 1000; i1++) {if (i1%5==0){System.out.print(i1+"\t");if (i1%(5*3)==0){System.out.println("\n");}}}}}数组的定义及遍历public class forDemo05 {public static void main(String[] args) {int[] number={10,20,30,40,50}; //定义了⼀个数组//遍历数组的元素for (int i = 0; i < 5; i++) {System.out.println(number[i]);}System.out.println("============================");for (int x:number){System.out.println(x);}}}打印九九乘法表public class forDemo04 {public static void main(String[] args) {//拆分问题,拆分成不同的⼩问题逐步化解//1.先打印第⼀列//2.把固定的1再⽤循环包起来//3.去掉重复项,i2<=i1//4.调整样式for (int i1 = 1; i1 <= 9; i1++) {for (int i2 = 1; i2 <= i1; i2++) {System.out.print(i2+"*"+i1+"="+(i1*i2)+"\t");}System.out.println();}}}输出三⾓形public class testDemo01 {public static void main(String[] args) {for (int i = 1; i <= 5; i++) {//输出的空格逐渐减少,可将初始值设为最⼤之后逐渐减⼩for (int i1 = 5; i1 >= i; i1--) {System.out.print(" ");}//输出的数字逐渐增多,可将初始值设为最⼩之后逐渐增⼤for (int i1 = 1; i1 <= i; i1++) {System.out.print(i1);}//输出的数字逐渐增多,将初始值设为最后之后逐渐增⼤for (int i1 = 1; i1 < i; i1++) {System.out.print(i1);}System.out.println();}}}break与continuebreak⽤于跳出当前循环结构,继续执⾏后续语句;continue⽤于结束本次循环,不再执⾏本次循环的后续语句,直接进⼊下次循环;。

第4章 循环结构(C++版)

第4章  循环结构(C++版)
例4.8 数据统计 输入一些整数,求出它们的最小值、最大值和平均值(保留3位小数)。输入保证这
些数都是不超过1000的整数。 样例输入:2 8 3 5 1 7 3 6 样例输出:1 8 4.375
【参考程序】 #include<cstdio> int main() {
int x,n=0,min,max,s=0; while (scanf("%d",&x)==1) {
(5)按所示数列改变控制变量值:99、88、77、66、55、44、33、22、11、0,增 量为-11
for(int j=99;j>=0;j-=11) (6)控制变量i和j共同进行循环控制,i从1变到99,j从2变到100,增量均为2。
for(int i=1,j=2;i<=99&&j<=100;i+=2,j+=2)
sum+=i; cout << sum; return 0; }
第一节 for语句
例4.3 利用for循环计算n!的值。
分析:n!=1*2*3…*n
#include <cstdio>
Байду номын сангаас
using namespace std;
int main ()
{
long long s;
//Noip2010开始C++语言中long long类型允许使用
int n;
//n不能定义为long long,否则for语句死循环
s=1;
scanf("%d",&n);
for (int i=1; i<=n ; ++i)

C语言程序设计课件 第4章 循环结构.ppt

C语言程序设计课件 第4章 循环结构.ppt
10
while语句
语法形式:
while (表达0(式假)) 表达式?循环体;
非0(真) 循环体
后续语句
11
执行过程:
step1:求解表达式,若 为0(假),则退出循 环执行后续语句。若 为非0(真),则执行 循环体。
step2: 转回step1继续 判断。
while语句应用实例
【例4.3】从键盘上读入一个非0的整数,统计该数的
语句功能
{count++; number=number/10;
?
}
printf ("It contains %d digits.\n",count);
}
12
while语句应用实例
【例4.4】计算表达式a+aa+aaa+…+aaa…a,其中a与x的值从 键盘上输入。
int a,x;
long sum=0,n=1,tn;
scanf("%d,%d", &a,&x);
tn=a; while(n<=x) {sum+=tn; tn=tn*10+a; n++;
循环次数 第1次 第2次 第3次 第4次
循环条件 1<=4为真 2<=4为真 3<=4为真 4<=4为真
}
第5次
5<=4为假
sum值
tn值
n值
0+2
2*10+2
2
2+22
C语言程序设计
第4章 循环结构
本章主要内容
1. 循环结构设计理念 2. for循环语句 3. while循环语句 4. do…while循环语句 5. 循环嵌套 6. 流程控制语句

《C语言程序设计教程》第三版课后习题参考答案

《C语言程序设计教程》第三版课后习题参考答案

《C语言程序设计教程》第三版课后习题参考答案C语言程序设计教程第三版课后习题参考答案第一章:C语言概述1.1 C语言的特点答案:C语言是一种通用的、面向过程的程序设计语言,具有高效、简洁、灵活等特点。

它提供了丰富的程序设计元素和功能,适用于各种不同的应用领域。

1.2 C语言程序的基本结构答案:C语言程序由预处理指令、函数声明、函数定义、变量声明和语句组成。

其中,预处理指令用来引入头文件或定义宏,函数声明用来声明函数的名称和参数,函数定义用来实现函数的功能,变量声明用来声明变量的类型和名称,语句用来表达具体的计算过程。

1.3 C语言的数据类型答案:C语言提供了多种数据类型,包括基本类型(整型、浮点型、字符型等)和派生类型(数组、指针、结构体等)。

每种数据类型在内存中占据一定的存储空间,并具有特定的取值范围和操作规则。

1.4 C语言的运算符和表达式答案:C语言支持各种运算符和表达式,例如算术运算符(+、-、*、/等)、关系运算符(>、<、==等)、逻辑运算符(&&、||、!等)等。

通过运算符和表达式可以进行各种数值计算和逻辑判断。

第二章:基本数据类型与运算2.1 整型数据类型答案:C语言提供了不同长度的整型数据类型,包括有符号整型(int、long等)和无符号整型(unsigned int、unsigned long等)。

整型数据类型可以表示整数值,并具有不同的取值范围。

2.2 浮点型数据类型答案:C语言提供了浮点型数据类型(float、double等),用来表示带小数部分的实数值。

浮点型数据可以表示较大或较小的数值,并具有一定的精度。

2.3 字符型数据类型答案:C语言提供了字符型数据类型(char),用来表示单个字符。

字符型数据可以用于表示各种字符(包括字母、数字、符号等)。

2.4 布尔型数据类型答案:C语言不直接支持布尔型数据类型,但可以使用整型数据类型来表示布尔值(0表示假、非零表示真)。

《C语言程序设计课件》第四章-循环语句

《C语言程序设计课件》第四章-循环语句
scanf("&d",&n); while(n!=0)
{ sum+=n; scanf("%d",&n); }
printf("The sum is :%d\n",sum);
return 0; }
从任意 n 个实数中选出最大数 和最小数
从任意 n 个实数中选出最大数和最小数
#include <stdio.h> int main( ) {
/*程序4-1*/ #include <stdio.h> int main() {
int i,sum=0; i=1; while(i<=100) {
sum += i; i++; } printf("sum=%d\n",sum); return 0; }
【例4-2】输入一行字符以回车键结束,分别 统计出其中英文字母、空格、数字和其它字符 的个数。
#include <stdio.h> int main( ) {
int i,n;
printf("This program prints a table of squares.\n"); printf("Enter number of entries in table:");
scanf("%d",&n); i=1; while (i<=n)
【例】求整数1~100的累加和,使用for语句实 现。
#include <stdio.h> int main() {
int i,sum=0; for(i=1;i<=100;i++)

第四章 循环结构程序设计

第四章 循环结构程序设计

while(i<=100)
{ i++;
程序运行结果: sum=5050
sum=sum+i;
}
6
4.3 do-while语句
do-while语句的结构 do 语句 while(表达式);
例如: do
x-=1; while(x>0);
功能:
1)执行“语句”。 2)计算“表达式”的值。如果值为非0,转1);否则转3)。
}
8
4.3 do-while语句
1)循环体如果包含一个以上的语句,要用复合语句表示。 2)在循环体中应有使循环趋于结束的语句。 3)while语句的特点是先执行循环体,然后判断表达式的值。 4)一般情况下,用while语句和用do-while语句处理同一 个问题时,若二者的循环体部分一样,其结果也一样。但如
18
4.7 goto语句以及用goto语句构成循环结构
goto语句的一般格式:
goto 语句标号;
例如: goto loop;
功能:程序执行到goto语句时,将程序流程转到语句标号指定的 语句去执行。
有标号的语句的格式:
语句标号: 语句
例如: loop: sum=sum+i;
19
4.7 goto语句以及用goto语句构成循环结构
【例4-9】用goto语句实现求1~100累加和。
#include <stdio.h>
main() { int n=1, sum=0; loop: sum += n; n++;
if(n<=100) goto loop;
printf("sum=%d\n",sum); }

第4章 循环结构(C++版)_第二节 while语句-2019-01-04

第4章  循环结构(C++版)_第二节  while语句-2019-01-04

【上机练习】
2.角谷猜想【1.5编程基础之循环控制18】 /ch0105/21/ :8088/problem_show.php?pid=1086 谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以 2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算 过程分别为16、8、4、2、1。程序要求输入一个整数,将经过处理得到1的过程输出来。 输入: 一个正整数N(N <= 2,000,000) 输出: 从输入整数到1的步骤,每一步为一行,每一部中描述计算过程。最后一行输出"End"。 如果输入为1,直接输出"End"。 样例输入: 5 样例输出: 5*3+1=16 16/2=8 8/2=4 4/2=2 2/2=1 End
第二节 while语句
第2种方法也许更加常用(你再 最后,我们来更仔细地研究一下 也不用记住%d、%lf等恼人的占位符 输入输出。研究对象就是经典的“A+B” 问题:输入若干对整数,输出每对之和。 了): 假设每个整数不超过109,一共不超过 #include<iostream> 106个数对。 using namespace std; 第1种方法是: #include <cstdio> int main() { int a,b; while(scanf("%d%d",&a,&b)==2) printf("%d\n",a+b); return 0; } int main() { int a,b; while(cin >> a >> b ) cout << a+b <<endl; return 0; }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Top1.循环结构(while、do…while、for)1. 循环结构(while、do…while、for)1.1. 什么是循环结构在日常生活中,会有很多需要反复执行的事情,比如:每一年的4个季节,每一周的7天,每日的3餐,打印机每份文档打印50份,一圈跑道400米跑3圈,都是在反复执行的。

再看软件系统中的需求:问题1:输出100行语句,每行语句都一样,即:∙行动是成功的阶梯,行动越多,登得越高!∙行动是成功的阶梯,行动越多,登得越高!∙行动是成功的阶梯,行动越多,登得越高!…问题2:输出100行语句,每行语句都类似,即:∙第1,行动是成功的阶梯,行动越多,登得越高!∙第2,行动是成功的阶梯,行动越多,登得越高!∙第3,行动是成功的阶梯,行动越多,登得越高!∙…∙第100,行动是成功的阶梯,行动越多,登得越高!问题3:计算1到50乘以8.88的结果∙1×8.88 =8.88∙ 2 ×8.88 =17.76∙ 3 ×8.88 =26.64∙ 4 ×8.88 =35.52∙…∙50 ×8.88 =444诸如此类问题都是在反复执行的,在软件系统中可以通过循环这种语法结构来解决。

循环是程序设计语言中反复执行某些代码的一种计算机处理过程,是一组相同或相似语句被有规律的重复性执行。

对于循环来说,需要考虑两个要素,其一要素为循环体,也就是被反复执行的相同或相似的语句,其二要素为循环的条件,也就是循环得以继续执行下去的条件,常常以循环次数的方式体现。

常用的循环结构有:while、do-while、for。

1.2. while语句1.2.1. while语句的执行逻辑while语句是循环的一种常见语法结构,语法如下:1.while(boolean表达式){语句块;2.}while语句的执行过程为,首先计算boolean表达式的值,而后进行判断,若值为true则执行语句块,语句块执行完后再次判断boolean表达式的值,如果为true则继续执行语句块,如此循环往复,直到boolean表达式的值为false时退出while循环而执行while之后的语句。

1.2.2. while语句的流程图while语句的流程图如图- 11所示,需要注意的是,一般情况下,循环操作中会存在使得循环条件不满足的可能性,否则该循环将成为“死循环”。

“死循环”意味着会一直执行循环体操作,循环后面的语句永远不会被执行,“死循环”在软件系统中是需要避免的。

图- 111.2.3. while语句用于处理循环逻辑while语句在实际应用中应用比较广泛,通过如下示例体会while语句的执行逻辑:1.int age =1;2.while(age<=100){3.System.out.println(“马上有钱”);4.age++;5.}上面的语句执行过程如下,首先声明整型变量age并赋初始值为1,而后判断age是否小于等于100,条件为真,输出“马上有钱”并将age的值增1变为2,再次判断条件,此时age为2,依然小于100,再一次输出“马上有钱”并将age 的值再增1变为3,以此类推,直到age等于101时,判断条件为false,循环结束。

1.2.4. 使用break语句跳出循环break用在循环体中用于退出循环结构。

看如下示例代码:1.int x =0;2.while( x <10){3.if(5== x )4.{5.break;6.}7.System.out.println(x);8.x ++;9.}分析上面的代码得出结论,输出结果为0 1 2 3 4,因为当x等于5时执行break 语句直接退出循环结构了,即if语句块后面的输出x的值以及x++不再被执行。

1.3. do-while语句1.3.1. do-while语句的执行逻辑do-while语句也是循环的一种常见语法结构,语法如下:1.do{2.语句块3.}while(boolean表达式);do-while语句的执行过程为,先执行语句块,再判断boolean表达式,如果为true则再次执行语句块,如此循环往复,直到boolean表达式的值为false时止。

也就是说,do-while语句,无论boolean表达式是否为true,都先执行一次语句块。

1.3.2. do-while语句的流程图do-while语句的流程图如图- 12所示,与while语句一样,do-while语句也要避免“死循环”的发生。

图- 121.3.3. do-while语句用于处理循环逻辑do-while语句在实际应用中应用比较广泛,通过如下示例体会do-while语句的执行逻辑:1.int pwd ;2.do{3.System.out.print(“请输入密码”);4.pwd = scanner.nextInt();5.}while(123!= pwd);上面的语句执行过程如下,首先声明整型变量pwd,在do语句中提示“请输入密码”,接收用户输入的数据赋给pwd,而后判断123是否不等于pwd,若为true则执行do语句块,以此类推,直到123等于pwd时,循环结束。

1.3.4. while和do-while语句的区别while与do-while都是用于执行循环结构的语句,区别在于,while循环先判断再执行,而do-while循环先执行一次,再判断。

那么,当初始情况不满足循环条件时,while循环就一次都不会执行,而do-while循环不管任何情况都至少会执行一次。

注意:while和do-while语句的不同仅仅体现在第一次就不满足条件的循环中;如果不是这样的情况,while与do-while可以互换。

请看如下两段示例程序:1.示例1:while循环方式2.int pwd =0;3.while(123!= pwd){4.System.out.print(“密码:”);5.pwd = scanner.nextInt();6.}7.示例2:do-while循环方式8.int pwd ;9.do{10.System.out.print(“密码”);11.pwd = scanner.nextInt();12.}while(123!= pwd);分析示例1与示例2得出结论,运行结果完全一样。

这是因为两段代码第一次的while条件都满足,此时while与do-whlie可以互换,所以结果完全一样。

1.4. for语句1.4.1. 考虑如下循环问题的相同之处请考虑如下三个题目的相似之处:1.计算从1加到100的值;2.计算1+1/3+1/5+…+1/999;3.找出从第1号学员到第500号学员中成绩大于90的学员。

通过上面的问题可以看出,如上三个题目都是在有规律的重复执行某个操作,在程序中考虑使用循环结构来解决。

首先需要先找到前面介绍的循环变量,此循环变量在每一次的循环中有规律的发生变化,并且常常作为判断是否继续循环的条件。

首先,看第1个题目,设计循环变量i ,i的值为1,2,…,100,即:从1开始,每次增1。

第二个题目,设计循环变量i , i的值为1,3,5,…,999,即:从1开始,每次增2。

第三个题目,设计循环变量i , i的值为1,2,…,500,即:从1开始,每次增1。

通过上面的分析,可以看出,如上的循环都是固定次数的循环,这种情况,优先考虑使用for语句来实现。

1.4.2. for语句的执行逻辑for语句是循环中最最常用的一种方式。

for循环用于将某个语句或语句块重复执行预定次数的情形。

语法如下:1.for(表达式1;表达式2;表达式3){2.语句块(循环体)3.}可以看出,for循环的三个表达式之间通过分号;进行分隔,其执行逻辑如下所示:1.计算表达式1的值,通常为循环变量赋初值;2.计算表达式2(表达式2为逻辑表达式)的值,即判断循环条件是否为真,若值为真则执行循环体一次(语句块),否则跳出循环;3.执行循环体;4.计算表达式3的值,此处通常写更新循环变量的赋值表达式;5.计算表达式2的值,若值为true则执行循环体,否则跳出循环;6.如此循环往复,直到表达式2的值为false。

1.4.3. for语句的流程图for语句流程图如图-1所示:图- 1简单示例如下:1.for(int i =1; i <=10; i ++){2.System.out.println( i );3.}如上程序的输出结果为:1 2 3 4 5 6 7 8 9 10分析如上程序的执行过程:首先,初始化i的值为1,判断i是否小于等于10,结果为true,其次,输出i的值1,然后,执行i的自增1,再判断i是否小于等于10,结果为true,执行输出i的值2,以此类推……输出i的值10后,执行i的自增1,此为i为11,判断结果为false,程序终止。

1.4.4. for语句用于实现固定次数循环for语句常常用于解决固定次数循环的处理,比如说累加和,想求1+2+3+…+100的结果,次数固定执行100次,可以考虑使用for循环处理,参见如下代码:1.int sum =0;2.for(int i =1; i <=100; i ++){3.sum += i ;4.}5.System.out.println(“1到100的和为:”+ sum );分析上面代码的执行过程,首先,声明一个变量用于保存累加和,此变量命名为sum,赋初始值为0,而后,for循环从1开始,每次增1,执行100次,循环体中将i的值累加到sum变量中。

注意:每次都是在sum的基础之上加上i,所以使用了sum += i。

循环结束后,输出结果“1到100的和为:5050“。

了解了如上题目之后,问:想求10的阶乘,即1*2*3*…*10,可不可以使用for循环来解决,如果可以的话要如何解决呢?当然可以,try!!!1.4.5. for语句三个表达式特殊用法首先回顾for语句的语法:1.for(表达式1;表达式2;表达式3){2.语句块}通过上面的代码可以看出,for语句实现循环时需要3个表达式并且使用分号;分隔,在实际使用时,for语句可以有几种特殊的使用方法:特殊方式1:表达式1位置内容为空,看如下代码:1.int sum =0;2.int i =1;3.for(; i <=10; i ++){4.sum += i ;5.}6.System.out.println(“1到10的和为:”+ sum );通过上面的代码可以看出,虽然省略了表达式1,但只是将它放在了for循环的外面进行声明,只是位置不同而已。

在此需要注意一点,即使for语句中不写表达式1了,表达式2前面的分号;也不能省略。

相关文档
最新文档