C语言循环null循环结构循环结构 -----while语句
-----do…while语句
-----for语句复习复习循环结构的特点是什么?
循环:有规律的重复
循环体:被重复执行的部分
循环条件:循环的执行满足一定的条件
相同操作,反复执行 while语句的一般格式 while语句的一般格式 判断循环条件,为真时执行while语句中的循环体,然后继续判断循环条件,如此循环;为假时退出循环(即当循环条件成立时,反复执行循环体)。 【举例分析】 【举例分析】 1+...
null循环结构循环结构 -----while语句
-----do…while语句
-----for语句复习复习循环结构的特点是什么?
循环:有规律的重复
循环体:被重复执行的部分
循环条件:循环的执行满足一定的条件
相同操作,反复执行 while语句的一般格式 while语句的一般格式 判断循环条件,为真时执行while语句中的循环体,然后继续判断循环条件,如此循环;为假时退出循环(即当循环条件成立时,反复执行循环体)。 【举例
】 【举例分析】 1+2+3+4+5
#include
main()
{
int s = 0, i = 1;
while (i <= 5)
{
s = s + i;
i++;
}
printf("%d", s);
}
巩固练习 巩固练习 1*2*3*4*5
求x n
#include
main()
{
int m = 1, x, n, i = 1;
scanf("%d, %d", &x, &n);
if (x=0) printf(“error!”);
elsewhile (i <= n)
{
m = m * x;
i++;
}
printf("%d", m);
}
while语句的特点:
先判断,后执行
#include
main()
{
int n1, n2, m;
scanf("%d, %d", &n1, &n2);
if (n1 > n2)
m = n1;
else
m = n2; while (m%n1 != 0 || m%n2 != 0)
m++;
printf("最小公倍数为%d", m);
}【例1】求2个数的最小公倍数【例2】求两个正整数的最大公约数 【例2】求两个正整数的最大公约数 #include
main()
{
int n1, n2, r,x;
scanf("%d, %d", &n1, &n2);
if (n1
main()
{
char c;
int n1 = 0, n2 = 0, n3 = 0;
while ((c = getchar()) != '\n')
{
if ((c>='a' && c<='z') || (c>='A' && c<='Z'))
n1++;
else if (c>='0' && c<='9')
n2++;
else
n3++;
}
printf("含字母%d个,数字%d个,其它字符%d个", n1, n2, n3);
}作业作业编写程序,求1+3+5+…+99
读入一行字符,求其中元音字母个数
(a e i o u)小结 小结 本课主要讲述了通过while语句实现循环结构程序设计,需要了解循环的特点和规律,灵活运用。 do…while语句 do…while语句 复习
while语句的一般格式,执行过程,特点分别是什么?
格式为:
循环变量初始化 ①
while(循环条件)②
{
循环语句 ③ 循环体
循环变量的改变 ④
}
特点是:先判断,后执行 do…while语句的一般格式 do…while语句的一般格式 循环变量初始化 ①
do
{
循环语句 ③ 循环体
循环变量的改变 ④
} while(循环条件);②执行过程
先执行一次循环体,再判断循环条件,为真则返回继续执行循环;为假则退出循环
举例举例【举例分析】1+2+3+4+5
可以直接改写为do…while语句
do…while语句的特点:先执行,后判断练习练习【巩固练习】1+3+5+7+…+99
#include
main()
{
int i = 1, s = 0;
do {
s = s + i;
i = i + 2;
} while (i <= 99);
printf(“%d”, s);
}【举例分析】写出下列程序的运行结果,分析while和do…while语句的不同。【举例分析】写出下列程序的运行结果,分析while和do…while语句的不同。1)
#include
main()
{
int a = 1, b = 2;
while(a < 0)
{
a++;
b++;
}
printf("a = %d, b = %d", a, b);
}
运行结果:
a = 1, b = 2
分析得出:当循环条件为假时,while语句不执行循环体,do…while语句执行一次循环体。2)
#include
main()
{
int a = 1, b = 2;
do{
a++;
b++;
}while(a < 0);
printf("a = %d, b = %d", a, b);
}
运行结果:
a = 2, b = 3【例1】计算正整数n各位上数字之积【例1】计算正整数n各位上数字之积#include
main()
{
int n, m = 1;
scanf("%d", &n);
do {
m = m * (n % 10);
n = n / 10;
} while (n);
printf("%d", m);
}【巩固练习】求两个正整数的最大公约数 【巩固练习】求两个正整数的最大公约数 #include
main()
{
int n1, n2, r;
scanf("%d, %d", &n1, &n2);
do{
r = n1 % n2;
n1 = n2;
n2 = r;
}while (r != 0);
printf("最大公约数为%d", n1);
}小结 小结 本课主要讲述了通过do…while语句实现循环结构程序设计,进一步了解循环的特点和规律,灵活运用。作业布置作业布置求满足1+1/2+1/3+…+1/a >limit的最小a值, limit值由键盘输入。for语句for语句复习:
我们已经学习了两种循环结构程序设计的方法,采用while语句和do…while语句。首先我们回顾一下,while语句的一般格式,执行过程,特点分别是什么? for语句for语句for语句的一般格式
执行过程
循环变量初始化只执行一次。判断循环条件,为真则继续执行循环语句和循环变量的改变,之后继续判断循环条件;为假则退出循环。
for(循环变量初始化 ① ;循环条件 ② ;循环变量的改变 ④)
循环语句 ③【举例分析】1+2+3+4+5【举例分析】1+2+3+4+5用while语句写作
#include
main()
{
int s = 0, i = 1;
while (i <= 5)
{
s = s + i;
i++;
}
printf("%d", s);
}直接改写为for语句
#include
main()
{
int s = 0, i;
for(i = 1; i <= 5; i++)
s = s + i;
printf("%d", s);
}可以看出,使用for语句使程序看起来更加简单明了。说明 说明 以上题为例,关于for语句需要注意的是:
1.表达式1可省略,此时应在for语句之前给循环变量赋初值
int s = 0, i = 1;
for(; i <= 5; i++)
s = s + i; 说明说明2.如果表达式2省略,则不判断循环条件,循环无终止地进行,因为表达式2始终为真。此时,应有语句结束循环。
int s = 0, i ;
for(i = 1; ; i++)
{
if (i > 5) break;
s = s + i;
}说明说明3.表达式3也可省略,但应保证循环能正常结束
int s = 0, i;
for(i = 1; i <= 5; )
{
s = s + i;
i++;
}说明说明4.循环体可省略,所需操作写在表达式3之中
int s = 0, i;
for(i = 1; i <= 5; s = s + i, i++)
;
5.其它变量的初始化也可以写在表达式1中
int s , i;
for(s = 0, i = 1; i <= 5; i++)
s = s + i;练习练习【巩固练习】求1900~2000年间所有闰年
#include
main()
{
int year;
for (year = 1900; year <= 2000; year++)
if ((year%4 == 0 && year%100 != 0) || (year%400 == 0))
printf("%d\t", year);
}举例分析举例分析【举例分析】输出菲波那契数列的前20项(菲波那契数列是指数列的前两项为1,以后每一项为前两项之和)
#include
main()
{
int i1 = 1, i2 = 1, i3, i;
printf("%d\t%d\t", i1, i2);
for(i = 1; i <= 18; i++)
{
i3 = i1 + i2;
printf("%d\t", i3);
i1 = i2;
i2 = i3;
}
}举例分析举例分析【举例分析】1!+2!+3!+4!+5!
分析:本题是包含阶乘及累加和两方面的知识。典型的循环嵌套,外层作加法,内层作乘法。
5! = 1*2*3*4*5 写作
for ( int m = 1, j = 1; j <= 5; j++) m = m * j;
n! = 1*2*3*...*n 写作
for ( int m = 1, j = 1; j <= n; j++) m = m * j;举例分析举例分析#include
main()
{
int s = 0, m, i, j;
for (i = 1; i <= 5; i++)
{
m = 1;
for(j = 1; j <= i; j++)
m = m * j;
s = s + m;
}
printf("结果为%d", s);
}练习练习【巩固练习】1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+5)
【提高练习】输出如图所示九九乘法表练习练习#include
main()
{
int i, j;
printf(" 1 2 3 4 5 6 7 8 9\n");
for (i = 1; i <= 9; i++)
{
printf("%4d", i);
for (j = 1; j <= 9; j++)
printf("%4d", i * j);
printf("\n");
}
}小结 小结 本课主要讲述了通过for语句实现循环结构程序设计,注意for语句的语法格式和实现过程,掌握双重循环的运用。作业布置 作业布置 打印出所有的水仙花数。
求2~n之间所有的素数 break, continue语句 break, continue语句一.break语句的作用:
1)break语句可以使跳出switch语句,继续执行switch语句下面的语句
2)从循环体内跳出循环体
一般形式: break;
二.continue语句的作用:
终止本次循环,即忽略continue后面的语句,进行下一次循环判定。
一般形式: continue;写出程序的运行结果 写出程序的运行结果 1) #include
main()
{
int i = 1, sum = 0;
while (i < 10)
{
sum = sum + i;
i++;
if (sum > 20) break;
}
printf("sum=%d, i=%d", sum, i);
}
运行结果:
sum=21, i=72) #include
main()
{
int i = 1, sum = 0;
for (; i <= 10; i++)
{
if (sum > 20) continue;
sum = sum + i ;
}
printf("sum=%d, i=%d", sum, i);
}
运行结果:
Sum=21, i=11break语句和continue语句的区别:break语句和continue语句的区别:break语句和continue语句的区别:continue语句只中止本次循环,而不是结束整个循环的执行;break语句结束整个循环过程,跳出该循环。【巩固练习】写出程序的功能【巩固练习】写出程序的功能#include
main()
{
int n;
for (n=1; n<=100;n++)
{
if ( n%3 == 0) continue;
printf("%4d", n);
}
}
功能:输出1到100之间不能被3整除的数 #include
main()
{
int n;
for (n = 1; n <= 100; n++)
{
if (n%3 == 0) break;
printf("%d\t", n);
}
}
功能:输出1到100之间第一个能被3整除的数之前的数【巩固练习】写出程序运行结果【巩固练习】写出程序运行结果【巩固练习】写出程序运行结果
#include
#include
main()
{
int a, b;
运行结果:8
for (a = 1,b = 1; a <= 100; a++)
{
if (b >= 20) break;
if (b % 3 == 1)
{
b += 3;
continue;
}
b -= 5;
}
printf("%d", a);
}
【举例分析】判断某整数是否素数 【举例分析】判断某整数是否素数 #include
#include
main()
{
int n, i, flag = 1;
scanf("%d",&n);
for (i = 2; i <= n-1; i++)
if (n % i == 0) {flag = 0; break;}
if (flag == 1)
printf("%d是素数", n);
else
printf("%d不是素数", n);
}循环结构循环结构总结循环语句的选择
循环条件的设计
循环体的设计循环语句的选择循环语句的选择while、do-while语句用于条件循环,for语句用于计数循环;
while、 for语句先判断,后循环, do-while语句先循环,后判断;
循环算法的设计循环算法的设计穷举法:
迭代法:
本文档为【C语言循环】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。