c++ 6循环结构
第7次课--循环结构

《C语言与数据结构》
第7次课----循环结构 次课----循环结构 次课----
第2章 章
循环结构举例5 循环结构举例
是否为素数。 【问题5】编程实现:判断m是否为素数。 问题5 编程实现:判断 是否为素数 分析 流程图 让m被2到 m 除,如果 被 到 都不能整除, 都不能整除,则m是素 是素 否则不是素数。 数;否则不是素数。 源程序
编制一个简单的成绩管理程序, 编制一个简单的成绩管理程序,输入班中所有 学生的某门课成绩,要求:( :(1 计算平均成绩; 学生的某门课成绩,要求:(1)计算平均成绩; 完成百分制和等级制的转换, (2)完成百分制和等级制的转换,并统计取得各等 级成绩的学生人数。 级成绩的学生人数。
《C语言与数据结构》
《C语言与数据结构》
第7次课----循环结构 次课----循环结构 次课----
第2章 章
当型循环的另一种C语言实现 当型循环的另一种 语言实现
可以用for语句实现。 语句是 语言的特色, 语句是C语言的特色 可以用 语句实现。for语句是 语言的特色,也是 语句实现 一种“当型循环语句”。 一种“当型循环语句” 其一般格式为: 其一般格式为: for (表达式1;表达式2;表达式3) 表达式1 表达式2 表达式3 表达式 语句P; 语句 ; for语句的执行过程 语句的执行过程: for语句的执行过程:
《C语言与数据结构》
第7次课----循环结构 次课----循环结构 次课----
第2章 章
当型循环的另一种C语言实现 当型循环的另一种 语言实现
最简单的应用形式或者说最易理解的形式如下: 最简单的应用形式或者说最易理解的形式如下: for (循环变量赋初值;循环条件;循环变量增值) 循环变量赋初值;循环条件;循环变量增值 循环变量赋初值 语句P; 语句 ; for语句的执行过程: 语句的执行过程: 语句的执行过程 等价的while语句: 等价的while语句: while语句 循环变量赋初值; 循环变量赋初值; (循环条件 循环条件) while (循环条件) 语句P { 语句P 循环变量增值; 循环变量增值; }
c语言循环结构三种形式

c语言循环结构三种形式
c语言循环结构主要有三种形式:for, while和do-while循环。
for循环应用最为广泛,最开始就非常有效地在程序中实现循环,具有如下优点:
(1)for循环可以方便地设置初始值、循环条件和自增步长;
(2)可以轻松实现多次循环;
(3)for循环可以轻松实现多次跳转,提高代码效率。
while循环移植性很强,可以在各种编程环境中使用,其特点如下:
(1)while循环这种结构可以在完成迭代后进行求和、求交集等操作;
(2)while循环操作符号简单,只有while、break、continue;
(3)while循环可以满足常见的迭代需求,如逐行读取文件、拆分字符串以及连接字符串等。
do-while循环最大的优势在于可以保证循环至少执行一次,其优点如下:
(1)执行流程不会因外部影响而受到损害;
(2)循环条件位于循环末尾;
(3)可以简单实现多次迭代,可以根据条件来完成不同的功能。
总的来说,c语言的循环结构非常灵活,根据实际需求可以采用for、while或者do-while结构进行编程。
对于开发者来说,掌握这三种循环结构将可以帮助你更加方便有效地完成程序编写任务。
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 语句
C语言程序设计:第5章 循环结构

12
do...while语句(cont...)
课堂练习: 1.输出1---n之间的数,其中n从键盘输入。
int main(void) {
//1.定义变量i和n //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:输出i的值 return 0; }
} 相当于 while(1) {
}
26
小结
❖for(i=m;i<n;i++)//循环次数:n-m次 ❖for(i=m;i<=n;i++)//循环次数:n-m+1次
27
循环语句的练习
课堂练习: 1.输出n---1之间的数,其中n>1且n从键盘输入。 2.计算1*2*3*...*n的值(n的阶乘n!), 其中n从键盘输入。 3.计算10- 1/2 - 1/3 -....1/n的值 以上练习分别以while、do...while、for语句实现
int main(void) {
//1.定义变量i,n,sum //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:累加i的值 //7.输出计算结果 return 0; }
24
for语句(cont...)
{
sum = sum + i;
if(sum > 100)break;
C语言程序设计:第5章-循环结构-课件教案

C语言程序设计课件教案第五章循环结构教学目的掌握循环结构中的while语句、dowhile语句、for语句的用法,掌握中断语句中break和continue语句的用法。
教学要求1.熟练掌握while语句、dowhile语句、for语句2.熟练掌握break语句、continue语句重点和难点1.while语句、dowhile语句、for语句的使用2.break语句、continue语句的使用教学支撑环境与教学资源:1.笔记本电脑2.VC20103.投影仪教学方法讲授法、练习法、讨论法授课课时6课时教学过程AM一、课程引入计算1+2+3+...+n有几种方法,需要多少步骤?、循环结构语句什么时候用到循环结构:处理重复的问题的时候。
循环结构的三大语句:while语句、dowhile语句、for语句。
1.while语句while(循环条件表达式)循环体语句;执行过程:只有循环条件表达式的值为真就执行循环体语句,先判断后执行。
1.输出1---n之间的数intmain(void){inti=1;intn=0;printf("请输入n的值:");scanf("%d",&n);//1015while(i<=n)15printf("%d\n",i);i++;}return0;}2.计算m+...+n 的值intmain(void){inti=1;intn=0;intm=0;intsum=0;printf("请依次输入m 和n 的值:");scanf("%d%d",&m,&n);//m+...n10while(m<=n){sum=sum+m ;m++;}printf("sum=%d\n",sum);return0;}2.do...while 语句do循环体语句;}while(循环条件表达式);执行过程:先执行循环体语句,再检查循环条件表达式的值是否为真,如果为真则继续执行循环体语句,否则结束循环。
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:");
C语言循环结构-break、continue语句PPT课件
while语句中的continue
#include"stdio.h" main( ) { int i=1;
while(i<=10) {
printf(“i=%d\n",i); if(i==3)
continue; printf(“circle %d\n", i); i++; } printf("over"); }
{
for(j=1;j<=i;j++)
printf(“%d”,i);
printf(“\n”);
}
printf(“game over!”);
}
东软信息学院计算机系 2021年4月6日星期二
break语句
东软信息学院计算机系 2021年4月6日星期二
switch 语句中的break
• 例子 main() { int i=2;
default: printf("default");}
}
结果:i=2 i=3
东软信息学院计算机系 2021年4月6日星期二
循环语句中的break
功能:跳出该break所在的那层循环语句,提前 终止当前循环。
main()
{ int i;
for(i=1;i<=10;i++)
{ printf(“%d “,i);
东软信息学院计算机系 2021年4月6日星期二
课前回顾
在屏幕上输出如下图形: 1 12 123 1234 12345 123456 . . .
其中行数由键盘输入。
东软信息学院计算机系 2021年4月6日星期二
[计算机软件及应用]计算机基础2C语言第6章循环结构
2021/8/26
2
while语句
(1)一般格式 while(循环继续条件) { 循环体语句组;}
while语句的语义是:计算表达式的值,当值为真(非 0)时, 执行循环体语句。
2021/8/26
3
#include <stdio.h>
main()
{ int n=0; printf("input a string:\n"); while(getchar()!='\n') n++; printf("%d",n); }
重循环
2021/8/26
5
当输入a的值为5时,分析以下程序 的结果
main() {
int a,n=0; scanf(“%d”,&a); while(a=5)
printf("%d ",n++); }
2021/8/26
6
以下程序的输出结果是2 0。
#include <stdio.h> void main() {
char c; c=getchar( ); while((getchar())!='?')
putchar(++c); }
jhiu
2021/8/26
9
#include <stdio.h> void main() {
输入:2473<CR>(<CR>代表回车符), 程序的输出结果是
int c;
while((c=getchar())!='\n')
for(n=7;n<=100;n+=7)
C语言循环结构程序设计PPT课件
知识点精讲
printf(″%d\n″,fun(″056a0″)); } 【解析】 while循环是先判断条件,如果条件成立就执行语句,然后回到条件继续判断,直 到条件不成立就结束循环。while后的表达式为“*s<=′9′&&*s>=′0′”,当表达式的值为0时 循环结束,可以看出这道题就是把连续的数字字符转换成对应的数值,遇到非数字字符就结束, 所以最后的输出结果是56。 【答案】 56
知识点ቤተ መጻሕፍቲ ባይዱ讲
L7 i++; L8 } L9 printf("%f",s); L10 }
答案:第6行改成:{ s=s+1.0/i; //若不使用1.0/i,那么会把小数部分丢掉//
4.下列程序的运行结果是______2_,_-_1_____ #include "stdio.h" main) {int i=2,a=0; while ( i一) a++; printf ("% d,%d",a,i); }
第四章 循环结构程序设计
考纲要求
结构化程序的设计方法,for语句、while语句编程方法。
知识准备
高频考点:当型循环与直到型循环、循环控制变量、利用循环设计算法。 重难点分析:利用循环设计算法。
知识点精讲
知识点1 while循环
真题回顾 (2019年真题)下列程序的运行结果是___________ #include″stdio.h″ int fun(char s[]){ int n=0; while(*s<=′9′&&*s>=′0′) { n=10*n+*s-′0′; s++; } return n; } main(){
c语言循环结构的要素组成
c语言循环结构的要素组成一、循环条件循环条件是循环结构中的判断条件,用于决定是否执行循环体。
在C语言中,循环条件通常使用关系运算符(如<、>、<=、>=、==、!=)或逻辑运算符(如&&、||、!)来表达。
循环条件的结果必须是一个布尔值,即true或false。
二、循环体循环体是循环结构中需要重复执行的语句块。
循环体可以包含多个语句,用花括号{}括起来,形成一个代码块。
循环体中的语句将按照循环条件的判断结果执行多次,直到循环条件为false时跳出循环。
三、循环变量循环变量是循环结构中用于控制循环次数的变量。
循环变量一般在循环开始前进行初始化,然后在每次循环结束时更新其值,以便满足循环条件。
循环变量的类型可以是整型、浮点型或字符型,通常使用整型变量作为循环变量。
四、循环控制语句循环控制语句用于控制循环结构的执行流程,包括break、continue和goto语句。
1. break语句:当在循环体内遇到break语句时,循环立即终止,跳出循环体,执行循环后的语句。
break语句通常用于满足某个条件时提前结束循环。
2. continue语句:当在循环体内遇到continue语句时,循环将立即跳过当前循环的剩余语句,开始下一次循环。
continue语句通常用于在满足某个条件时跳过本次循环的执行。
3. goto语句:goto语句用于无条件地跳转到程序中的标记位置,从而改变程序的执行顺序。
虽然goto语句可以实现跳出多层循环的功能,但过多使用goto语句会导致程序的可读性和可维护性降低,因此应尽量避免使用。
C语言循环结构的要素包括循环条件、循环体、循环变量和循环控制语句。
循环条件用于判断是否执行循环体,循环体是需要重复执行的语句块,循环变量用于控制循环次数,循环控制语句用于控制循环的执行流程。
合理运用这些要素可以实现各种复杂的循环逻辑,提高程序的效率和灵活性。
同时,在编写循环结构时需要注意避免死循环和过度使用循环控制语句,以确保程序的正确性和可读性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三节 do-while语句
三、实例 例4.9 对于求两个正整数m,n的最大公约数可以用do—while实现。 代码如下,请完善: #include <iostream> using namespace std; int main () { int m,n,r; cin>>m>>n; do // 辗转相除法 { r =m % n; m=____; n=_____; } while ( _______ ); cout<<"the greatest common divisor is:"<<______; return 0; }
第三节 do-while语句
例4.10 求1992个1992的乘积的末两位数是多少? 【分析】积的个位与十位数只与被乘数与乘数的个位与十位数字有关,所以本题相当于求 1992个92相乘,而且本次的乘积是下一次相乘的被乘数,因此也只需取末两位参与运算就 可以了。
#include<iostream> using namespace std; int main() { int a=1,t=0; do { ++t; a=(a*92)%100; }while (t!=1992); cout<<a<<endl; return 0; }
第一节 for语句
例4.3 利用for循环计算n!的值。 分析:n!=1*2*3…*n #include <cstdio> using namespace std; int main () { long long s; int n; s=1; cin>>n; for (int i=1; i<=n ; ++i) s*=i; cout << s; return 0; } 【说明】:
第二节 while语句
例4.5 求s=1 +2 +3……+n,当加到第几项时,s的值会超过1000?
程序如下: #include <iostream> using namespace std; int main () { int n=0,s=0; while (s<=1000) { ++n; s+=n; } cout<<n; system(“pause"); return 0; }
第一节 for语句
例4.4 利用for循环,分别计算1—100中奇数的和、偶数的和。
#include <iostream> using namespace std; int main ( ){ int jssum=0; int ossum=0; for (int js=1,os=2;js<=99&&os<=100;js+=2 ,os+=2 ) { jssum+=js; ossum+=os; } cout << "the sum of odd numbers 1 to 100 is : " <<jssum<<endl; cout << "the sum of even numbers 1 to 100 is : " <<ossum<<endl; return 0; } 说明: 我们也可以在for循环初始化或增值表达式部分中放一条以上的语句,中间用逗号隔开。
system(“pause");
return 0;
第二节 while语句
例4.7 编一程序求满足不等式1+ 1/2 + 1/3 …+1/n >=5的最小n值。 分析:此题不等式的左边是一个求和的算式,该和式中的数据项个数是未知的,也正是要 求出的。对于和式中的每个数据项,对应的通式为1/i,i=1,2,…n。 所以可采用循环累加的方法来计算出它的值。设循环变量为i,它应从1开始取值,每次增 加1,直到和式的值不小于5为止,此时的i值就是所求的n。设累加变量为s,在循环体内 把1/i的值累加到s上。 根据以上分析,采用while循环编写出程序如下: #include <iostream> 若采用for循环来写,则如下所示: using namespace std; #include <iostream> int main () using namespace std; { int main () int i=0; { float s=0; int i; while(s<5) //当s的值还未超过5时 float s=0; { for(i=1;s<5;++i) ++i; s+=1.0/i; s+=1.0/i; cout<<i-1; } system(“pause"); cout<<i; return 0; system(“pause"); } return 0; }
【上机练习4.1】
• • • • • • • • • 1、求12+22+32+…+1002。 2、计算100之内所有的偶数之和。 3、求s=1+1/2+1/3+…+1/100。 4、求10个数中的最大值和最小值。 5、按字母表的顺序,从字母A到Z顺序打印输出。 6、求菲波拉契数列a0,a1,a2,……a20。 a0=0,a1=1,a2=a1+a0,a3=a2+a1,……, an=an-1+an-2。 如0,1,1,2,3,5,8,13,21,……
【上机练习4.2】
• 1、用while循环完成如下3题: • ①求s=1+2+3+4+…+10 • ②求s=1+1/2+1/3+…+1/100 • ③计算n!,其中n由键盘输入。 • 2、输入任意的自然数A, B, 求A , B的最小公倍数。 • 3、小球从100高处自由落下,着地后又弹回高度的一半再落 下。求第20次着地时, 小球共通过多少路程? • 4、Faibonacci数列前几项为: 0,1,1,2,3,5,8,…,其规律是从第 三项起, 每项均等于前两项之和。求前30项,并以每行5个数 的格式输出。
第三节 do-while语句
一、语句格式 格式1
说明:语句1是do-while的循环体。 格式2
说明:循环体部分由多个语句构成,应由一对花括号括起来,构成一个语句块的形式。 二、语句执行过程
(1)执行一遍循环体。 (2)求出作为循环条件的“条件表达式”的值,若为逻辑值真则自动转向第(1)步,否则结束do循环的执行 过程,继续执行其后面的语句。 在do语句的循环体中也可以使用break语句,用它来非正常结束循环的执行。
for(int i=1,j=2;i<=99&&j<=100;i+=2,j+=2) 需要说明的是:可以在for循环“ 控制变量初始化语句”中声明变量(如上面最后 3个例子),这些变量只在for循环结构中有效,离开了该for结构,变量就无效了。
第一节 for语句
利用for循环,计算输出1+2+…+100的和
(4)控制变量从20变到2,增量为-2
for(int i=20;i>=2;i-=2)
(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语句
三、语句格式举例
(1)将控制变量从1变到100,增量为1 for(i=1;i<=100;++i) (2)将控制变量从100变到1,增量为-1
for(i=100;i>=1;--i)
(3)控制变量从7变到77,增量为7
for(i=7;i<=77;i+=7)
即for(i=7;i<=77;i=i+7)
第三节 do-while语句
例4.11 校体操队到操场集合,排成每行2人,最后多出1人;排成每行3人,也多出1人;分别按每行排4,5,6人,都多出1人;当 排成每行7人时,正好不多。求校体操队至少多少人? 【分析】①设校体操队为x人,根据题意x应是7的倍数,因此x的初值为7,以后用x+=7)改变x值; ②为了控制循环, 用逻辑变量yes为真(true) 使循环结束; ③如果诸条件中有一个不满足, yes 的值就会为假(false),就继续循环。 #include<iostream> using namespace std; int main() { bool yes; int x=0; do { yes=true; x+=7; if (x%2!=1) yes=false; if (x%3!=1) yes=false; if (x%4!=1) yes=false; if (x%5!=1) yes=false; if (x%6!=1) yes=false; }while (yes==false); // 直到yes的值为真 cout<<"All="<<x; return 0; } 程序中对每个x值,都先给yes 赋真值,只有在循环体各句对x进行判断时,都得到“通过”(此处不赋假值)才能保持 真值。
第四章 循环结构
第一节 for语句 第二节 while语句 第三节 do-while语句 第四节 循环嵌套
第一节 for语句
一、语句格式 格式1
说明:语句1是for循环语句的循环体,它将在满足条件的情况下被重复执行。